当前位置: 首页 > news >正文

云原生俱乐部-RH294知识点归纳(3)

其实ansible还剩下使用角色和ansible内容集合来简化playbook、对ansible进行故障排除和自动执行Linux管理任务三部分。

至于如何对ansible进行故障排除,只有在生产中碰到了故障才用得上,并且即使碰上的还是需要具体问题具体分析,但是可以该部分内容可以提供解决思路。


简化playbook

[1]描述ansible角色结构

ansible角色的功能由目录结构来定义,目录名为角色名。defaults目录的main.yml包含变量,优先级别低,vars目录下的main.yml定义变量,优先级高于defaults,但注意不要重复定义变量。

files的main.yml包含角色任务引用的静态文件,templates则包含引用的jinja2模板。task目录下的main.yml文件定义task任务,而handler目录下的main.yml文件则用于定义handler处理程序。meta目录用于角色说明,作者信息等,tests目录下的test.yml文件用于测试角色功能。

[2]导入或包含角色

使用ansible.builtin.import_role静态导入,变量公开会给play的所有的任务,即使task位于import之前。如果ansible.builtin.include_role动态包含,则不会开放任何变量,即使task位于之后。同样条件和循环能够用于import_role里面的每一个任务,而只用用于include_role的当前任务。

我们还可以使用roles列表加载角色,这种方式会在任何task之前运行,不建议roles和tasks同时使用。不过可以使用pre_task和post_tasks来将特定任务放在角色之前或者之后来执行。如果pre_tasks中的task通知了handler,那么handler处理程序也会优于role之前使用。与此相反的是,post_tasks的handler的执行则是最后执行。

[3]创建和使用角色

可以使用ansible-galaxy init rolename来初始化角色,具有完整的角色目录结构,可以删除某些目录,如果不需要使用的话。推荐持续更新readme.md文件和meta目录,并通过tests目录集成测试角色的功能。

虽然ansible的角色本意就是为了更好的复用,但要避免一个角色承担多个任务,而是编写多个角色,让角色侧重于特定的用途与功能。角色可以依赖其他角色依赖,但尽量避免该做法。ansible-galaxy install -r 用来下载角色,-p可选项以指定下载的路径,也可以在ansible.cfg中配置。

ansible-galaxy info rolename可以查看角色的信息,其实就是从meta信息中找。ansible-galaxy list可以列出角色(可以使用-p指定路径),还有使用ansible-galaxy remove rolename可以快速删除角色。

[4]模块和系统角色

collections可以作为项目目录,里面可以安装额外的内容集合。如果要下载requirements.yml集合可以用 ansible-galaxy collection install -r requirements.yml,默认源是官方galaxy。

在项目使用模块的时候,会先从`ANSIBLE_COLLECTIONS_PATH`  环境变量路径中查找集合,其次才是项目目录中的collections目录,然后是家目录中的collections,最后才是`/usr/share/ansible/collections/`目录。

Ansible系统角色(System Roles)是​​官方维护的标准化角色集合​,专门用于管理Linux系统级服务和配置。ansible通过定义task,实现对应的功能来提供针对RHET系统服务的角色,并且提供的系统角色尽量会屏蔽不同系统的差异。

Ansible故障排除

[1]对playbook进行故障排除

ansible-navigator run -v查看playbook运行时候的信息,有四个等级,等级越高越详细。还可以使用ansible.builtin.debug模块来查看对应的变量的值来排除故障,使用--syntax-check则可以检查playbook本身的语法。

ansible-navigator运行playbook的时候,默认会生成artifact工件,命名为playbook名称+artifact+时间,以json格式保存。可以通过ansible-navigator replay重放工件,使用-m stdout是输出到终端,否则以交互式查看。

[2]对受管主机进行故障排除

有可能是因为没有配置好ssh免密导致受管主机故障,也有可能是在受管主机上没有足够的权限来执行命令,还有可能是提权的时候没有输入密码等种种问题,或者在受管主机上没有python环境。当然,如果使用域名的话,注意本地DNS是否能够解析该域名。

可以使用--check来检测受管主机上的问题,用来显示会在受管主机上的进行的更改,但不执行它们。如果要在检查模式--check也运行,那么就将task的check_mode 设置为yes。当然,我们可以用一些模块来检测受管主机的状态,或者使用ansible临时命令。

自动执行Linux管理任务

[1]管理软件

使用ansible.builtin.package模块可以检测受管主机的包管理器并选择合适的来执行。推荐使用pakcage模块,因为这更符合ansible的理念。我们还可以通过收集的事实来查看受管主机已安装的软件包,通过ansible.builtin.package_facts模块来收集相关的事实。

[2]管理用户和身份验证

使用ansible.builtin.user模块可以给受管主机添加或者删除用户,通过shell指定默认shell,group指定主组,groups指定附加组,state描述状态等。ansible.builtin.group模块则是用于添加或者删除组,通过name指定名称,gid指定组ID。

还可以执行ssh远程登录相关的信息,如ansible.builtin.known_hosts模块,可用于将ssh_knonw_hosts文件复制给其他受管主机,这样在第一次ssh连接(连接该文件里面的主机)的时候就不会验证是否需要确定md5指纹了。

还有ansible.posix.authorized_key模块,可以用来在受管主机上添加ssh密钥(本地),这样ssh密钥对应的主机ssh连接该受管主机的时候就不需要使用密码了。还可以使用ansible.builtin.lineinfile模块来修改sudo文件,赋予用户sudo权限。

[3]管理调度和系统服务

使用ansible.posix.at模块可以在受管主机上调度一次性任务,ansible.builtin.cron模块则是调度周期性任务。在cron模块会在/etc/cron.d目录下创建任务文件,可以通过cron_file指定任务文件名,但如果只指定了用户,没有指定文件名则是在该用户的crontab文件中设置。

​`ansible.builtin.systemd`​是一个​专门的、具体的​​模块,只用于与  `systemd`初始化系统交互。它直接调用  `systemctl`命令。​`ansible.builtin.service`则是一个​通用的、抽象的​模块,它试图为各种初始化系统提供一个统一的接口。它会自动检测目标系统使用的初始化系统,然后调用相应的底层命令,可能是  `systemctl`,  `service`,  `rc-service`等。

[4]管理存储和网络配置

使用ansible.posix.mount模块可以操作受管主机挂载文件系统,当然,更多的是使用storage系统角色来完成任务。不过该系统角色只能管理未分区的设备,通过storage_volumes可以指定设备挂载的方式,使用storage_pools则可用于创建卷组。

同样ansible提供network系统角色来完成网络的管理,通过改变指定变量的值能够让系统角色完成不同的功能。我们还可以通过ansible.posix.firewalld模块来操作受管主机的防火墙,还有ansible.builtin.hostname来指定新的主机名。

http://www.dtcms.com/a/349071.html

相关文章:

  • Python内置函数全解析:30个核心函数语法、案例与最佳实践指南
  • Linux应急响应一般思路(二)
  • C++测试框架高级资源管理模块完整实现指南
  • 八、redis 入门 之 雪崩、穿透、击穿
  • 小米AX3600访问桥接的光猫
  • 如何一键统一文件名大小写?
  • Springboot框架的“上海迪士尼”旅游管理网站设计与开发
  • C++---双指针
  • 工作后的总结和反思3
  • cookie,session,token之间有什么关系
  • 大模型知识--Function Calls
  • Kubernetes — 学习 Sidecar 容器模式
  • 面经-自用
  • CVPR 2025 | 医学影像加速进化:深度学习×多模态,精准诊断再升级
  • Transformer 模型详解:从自注意力到编码器-解码器结构
  • 拓展:simulink中将仿真环境离散化
  • 关于熵减 - 飘升机
  • Vue3路由
  • C++11新特性全面解析(万字详解)
  • SQL Server从入门到项目实践(超值版)读书笔记 24
  • 详细的周任务清单(Week1-Week24,每周具体目标+任务)
  • Pod 生命周期:从创建到销毁的完整旅程
  • Linux shell编程初步认知与变量学习
  • 【基础算法】初识搜索:递归型枚举与回溯剪枝
  • 基于 Bright Data MCP + LangChain 构建实时网页问答 AI Agent:完整实战教程
  • 玩转深度学习数据填补!CNN-GRU组合模型数据填补(四个案例数据)
  • KVM虚拟化部署全攻略
  • 使用Python实现DLT645-2007智能电表协议
  • 【Docker基础】Docker-compose常用命令实践(三):镜像与配置管理
  • 纯净Win11游戏系统|24H2专业工作站版,预装运行库,无捆绑,开机快,游戏兼容性超强!