【Ansible】使用角色和Ansible内容集合简化Playbook知识点
1.什么是Ansible角色?
答:Ansible角色可让用户以通用的方式更加轻松地重复利用Ansible代码。可以采用标准化目录结构打包所有任务、变量、文件、模板,以及调配基础架构或部署应用所需的其他资源。通过复制相关的目录,将角色从一个项目复制到另一个项目,然后在play中调取该角色。
2.角色有哪些优点,如何获取?
答:角色可以将内容分组在一起,从而与他人轻松共享代码。
角色可以定义系统类型的基本要素,如 Web服务器、数据库服务器、Git存储库。
角色使得较大型项目更容易管理。
角色可以由不同的用户并行开发。
可以自行编写、使用、重用和共享角色,也可以使用分发包(如Ansible 内容集合)查找角色。或者从外部网站下载角色如 Ansible Galaxy网站。
3.Ansuble角色的结构及功能
答:defaults:此目录中的main.yml文件包含角色变量的默认值,优先级最低,可被外部覆盖。
files:此目录包含由角色任务引用的静态文件。
handlers:此目录中的main.ymL文件包含角色的处理程序定义。
meta:此目录中的main.yml文件包含与角色相关的信息,如作者、许可证、平台和可选的角色依赖项。
tasks:此目录中的main.yml文件包含角色的任务定义。
templates:此目录包含由角色任务引用的Jinja2模板。
tests:此目录可以包含清单和test.ymLplaybook,可用于测试角色。
vars:此目录中的main.yml文件定义角色的变量值。这些变量通常用于角色内部用途。这些变量的优先级较高,在plavbook中使用时不应更改。
以上目录结构并非每个角色都必须全部拥有。
4.如何在Play中使用Ansible角色?
答:在 Playbook 的plays中通过roles关键字直接引用角色(角色会在所有任务之前运行,可用pre_tasks使任务在角色之前运行,post_tasks在所有任务最后运行);或像任务一样,您也可以将它们包含或导入在tasks列表中(ansible.builtin.import_role可以静态导入角色,ansible.builtin.include_role模块可动态包含角色)。
5.如何创建和使用角色?
答:1).创建角色目录结构。使用ansible-galaxy init命令自动创建目录结构。
2).定义角色内容。在tasks/main.yml中定义具体任务(如安装软件、配置服务);在handlers/main.yml中定义处理程序(如服务重启);在defaults/main.yml或vars/main.yml中定义变量;如需模板文件,放入templates/目录并在任务中引用。
3).在playbook中使用角色。通过roles关键字引用新角色,执行并测试。
6.如何使用要求文件从外部安装角色
答:文件中包含部分含义:src属性可指定角色来源
scm属性表示此角色来自哪个存储库。
version属性为可选项,指定要安装的角色版本,如果不指定版本,命令将使用默认分支上的最新提交。
使用ansible-galaxy install命令安装角色,ansible-galaxy 命令行工具可用于搜索角色,显示角色相关的信息,以及安装、列举、删除或初始化角色。
7.什么是Ansible 内容集合?
答:Ansible内容集合(Collection)是更高层次的内容打包格式,用于整合角色、模块、插件、文档等相关资源,解决命名冲突问题,结构为namespace.collection。
8.如何获取内容集合?
答:官方公共仓库(Ansible Galaxy):适合:获取社区维护的通用集合(如 Web 服务器、数据库配置等)。
厂商官方仓库:获取特定产品的官方集合(如 RedHat、AWS、VMware 等)。如红帽客户可通过红帽订阅管理器获取redhat.*系列集合。
私有 Git 仓库:企业内部定制化集合、敏感业务逻辑的集合(需权限控制)。适合团队内部共享和版本管理。
本地文件系统:测试本地开发的集合,或离线环境部署。
9.什么是系统角色?
答:系统角色是一组Ansible角色,可用于配置和管理红帽企业Linux附带的各种组件、子系统和软件包。系统角色可为很多常见的系统配置任务提供自动化,包括时间同步、网络连接、防火墙、调优和日志记录。
10.系统角色有什么优点?
答:简化配置管理,使用标准化RHEL操作,减少配置错误,系统角色有助于简化多个红帽企业Linux版本之间的自动化。例如,不同版本的红帽企业Linux中建议的时间同步服务会有所不同。-在RHEL9中,首选chronyd服务。-在RHEL6中,首选ntpd服务。
11.如何安装使用系统角色?
答:使用ansible-galaxy collection install命令安装redhat.rhel_system_roles Ansible内容集合。然后可以使用运行redhat.rhel_system_roles.timesync角色的Ansible Playbook来为受管主机配置时间同步,用redhat.rhel_system_roles.selinux角色可以简化SELinux配置设置的管理。