第一章 介绍Ansible
1. ansible的特点是什么?
a. ansible使用yaml语法,语言格式简洁明了。
b. ansible不需要代理,仅仅通过SSH远程连接就可以控制受管主机,是一种非常便捷、安全的方法。
c. Ansible的功能强大,可以利用ansible部署应用进行配置管理、工作流自动化和网络化,ansible可以编排应用的整个生命周期。
d. Ansible具有幂等性,同一模块的多次执行结果相同,避免了重复操作带来的意外问题。
2. 说出你对于ansible的认识
ansible是一个基于Linux的自动化管理平台,通过使用playbook描述IT应用基础架构,实施配置管理,应用部署,任务编排和IT基础设施的自动化,大大降低了手动编写代码的出错率,提升了运维人员的工作效率。
第二章 实施Ansible PlayBook
1. 描述ansible清单概念并管理静态清单文件
Ansible清单是被控制节点管理的受控主机的一个集合,可以是单独的主机,也可以是根据主机的不同特征而分类的主机组,一个主机可以存在于多个主机组。
定义静态清单文件是将被管理的主机名称或者ip地址编辑到一个清单文件中,可以是单独的主机,也可以是主机组,主机组中还可以嵌套主机组,all和ungrouped是始终存在的两个主机组。
2. 描述ansible配置文件的位置、ansible如何选择这些文件
在每个ansible项目目录中创建和编辑两个文件用于配置ansible的行为和ansible-navigator命令。
(1).创建ansible.cfg文件以适应于多个ansible工具的设置,其中,有[defaults]和[privilege_escalation]两个基本操作。Defaults用于设置ansible基本操作的默认值,privilege_escalation用于配置ansible如何在受管主机上面进行特权升级
l(2).创建一个yaml格式的文件为ansible-navigator配置文件,具体的文件内容如下图所示:
3. 如何编写playbook的基本格式
a. hosts:指定目标主机或主机组(来自 inventory 文件)
b. remote_user:在远程主机上执行任务的用户
c. vars:定义变量(可在任务中通过 {{ 变量名 }} 引用)
d. tasks:任务列表,每个任务包含:
e. name:任务描述(可选但推荐,有利于可读性)
f. 模块名称
g. 模块参数
h. notify:任务执行成功后通知的处理程序
i. handlers:处理程序列表,通常用于响应状态变化(如配置文件更新后重启服务)
Playbook 遵循 YAML 语法规范,使用缩进表示层级关系(通常为 2 个空格),# 用于注释。 Playbook 通常以---表示开头,以...(可省略)表示结尾,一个Playbook可以包含多个 play(以 - 开头的区块)以实现对不同主机组执行不同任务。
4. 如何实施多个play?
在 YAML 文件中按顺序定义多个 play 区块(每个 play 以 - 开头)即可。多个 play 可以针对不同的主机组执行不同的任务,实现复杂的自动化流程。
5. 实施多个play有什么特点?
- 独立执行:每个 play 独立运行,按顺序执行(前一个 play 完成后才会执行下一个)
- 目标隔离:通过 hosts 字段指定不同的目标主机组,实现分组管理
- 变量隔离:每个 play 中定义的 vars 仅在当前 play 中有效,不会相互干扰
- 共享资源:可以通过 roles、import_