实施Ansible Playbook
目录
1.定义清单
2.使用静态清单指定受管主机
3.动态主机清单
4.配置Ansible
5.ansible.cfg文件的内容组成
6.配置连接
7.ansible playbook的作用与格式
8.模块的命名
9.运行playbook
10.play中的特权升级
1.定义清单
(1)主机清单(inventory)定义Ansible所管理的主机
(2)主机可以从属于组,后者通常用于标识主机的角色
(3)一个主机可以属于多个组
(4)可以通过两种方式定义主机清单:通过文本文件定义静态主机清单,或从(5)外部provider生成动态主机清单
2.使用静态清单指定受管主机
(1)Ansible静态主机清单在INI和YAML格式文本文件中定义
(2)格式:
每一部分的开头为方括号[]括起来的主机组名称
其后是主机条目,他们列出组中的每一台受管主机,各自占据一行
主机条目由受管主机的主机名称或IP地址组成
主机条目也可以定义Ansible与受管主机的通信方式,其中包含传输和用户账号信息
(3)可使用ansible-navigator inventory命令验证计算机是否存在于清单中
(4)覆盖Inventory的默认位置:
一般将inventory定义到工作目录中,也可以在配置文件中指定其他位置来获取清单文件
(5)运行playbook时使用的ansible-navigator命令可通过--inventory
3.动态主机清单
覆盖主机清单的默认位置:
(1)Ansible的主机清单可以动态生成,其中的信息包括Cobbler系统信息和LDAP数据库和配置管理数据库(CMDB)
(2)Ansible含有处理来自最常见提供商的动态主机、组和变量信息的脚本
(3)对云提供商,必须在脚本能够访问的文件中定义身份验证和访问权限信息
4.配置Ansible
可以使用ansible.cfg和ansible-navigator.yml文件来配置ansible
5.ansible.cfg文件的内容组成
该文件由几个部分组成,每个部分以键值对的形式定义。
基本配置包括两部分:
(1)[defaults]:设置Ansible的默认值
(2)[privilege_escalation]:配置Ansible如何在受管主机上执行特权升级
使用ansible-navigator config 命令可以显示当前Ansible配置(交互模式)
如果项目目录中不含ansible.cfg文件,Ansible会查询用户主目录中的~/.ansible.cfg文件,如果该文件不存在,则会尝试使用/etc/ansible/ansible.cfg文件。如果使用ansible-navigator,则该命令会在自动执行环境中查找以上这些文件。
6.配置连接
Ansible需要知道如何与受控节点通信,可在配置文件中设置:
- inventory的地址
- 与受控节点的连接方式,默认为SSH
- 受控节点上的远程用户名,可能是root,也可能是普通用户
- 如果是普通用户,需要知道如何提权成为root
- 提权时是否需要提示输入sudo密码
7.ansible playbook的作用与格式
(1)Ansible使用playbook可重复地对一组目标主机运行多项复杂任务
(2)任务指应用模块来执行特定工作单元
(3)一个playbook包含多个play,一个play包含多个task,都是按顺序执行
playbook的格式:采用YAML格式的文本文件,里面的内容是以键值对形式表示
YAML对缩进的基本规则:
- 层级结构中相同级别的数据元素必须具有相同的缩进
- 子项必须比其父项缩进得更多
playbook以三个破折号作为文档的开始标记,以三个点作为文档的结尾标记
8.模块的命名
模块将使用完全限定集合名称(FQCN)来命名。两个Ansible内容集合中的不同模块也可以用相同名称,不会导致冲突。
9.运行playbook
在控制节点上使用ansible-navigator run命令执行playbook
10.play中的特权升级
become布尔值参数可用于启用或禁止特权升级
如果启用了特权升级,可使用become_method属性来定义play要使用的特权升级方法。
become_user属性可以用于特权升级的用户账户