一、前言
该篇是对ansible实训第三天内容的归纳总结,主要包括playbook组件的原理、结构及其基本使用方式。
二、Playbook 原理
Playbook是Ansible的核心组件之一,它是用于定义任务和配置的自动化脚本。
Ansible Playbook使用YAML语法编写,可以描述在受管主机上执行的一系列任务和配置。Playbook定义了一个或多个剧本(play),每个剧本定义了一组任务,这些任务将在目标主机上执行。剧本中的任务按照定义的顺序依次执行。
每个任务包含一个或多个模块,模块是Ansible的可重用功能单元,用于执行各种操作,例如文件操作、软件安装、服务管理等。每个模块接收参数,根据这些参数执行操作,并返回结果。可以根据需要在剧本中使用不同的任务和模块。
三、Playbook结构
Playbook的结构一般包括以下内容:
- `name`: Playbook的名称或描述
- `hosts`: 定义要管理的主机或主机组
- `vars`: 定义变量,用于在任务中传递参数和配置选项
- `tasks`: 包含一个或多个任务的任务列表
- `handlers`: 定义处理程序,用于在任务执行过程中处理特定的事件
- `roles`: 定义可重用的角色,包含一组相关的任务和配置
使用Ansible Playbook可以实现自动化的配置管理、软件部署、系统管理等任务。它具有简单易用、可读性强、可扩展性好等特点,并且与多种操作系统和云平台兼容。
为了运行Playbook,可以使用`ansible-playbook`命令,并指定Playbook文件的路径。Ansible将解析Playbook文件,并在指定的主机上执行定义的任务和配置。
Ansible Playbook是实现基础架构即代码(Infrastructure as Code)的有力工具,可以提高自动化管理的效率和可靠性。
四、实施Playbook步骤
Step1: 编写Ansible Playbook
使用YAML格式编写,并按照剧本中指定的顺序列出任务列表和主机清单。
Step2:配置Ansible的主机清单
在清单中指定要管理的受管主机,以及剧本中定义的主机组。
Step3:验证Ansible配置
执行`ansible --version`确保Ansible版本已正确安装并显示预期的版本号。
Step4:在控制机上运行Playbook
执行`ansible-playbook playbook.yml`运行Ansible剧本。`playbook.yml`是要运行的剧本文件的名称。
然后,Ansible将读取剧本和主机清单,并在受管主机上运行指定的任务。在运行期间,Ansible将会输出有关操作的详细信息,包括成功和失败的任务、变量值和错误消息。
需要注意的是,Ansible的行为取决于它与受管主机之间的连接方式。如果连接不安全,则可能会泄露敏感信息,并对受管主机和网络造成潜在的安全风险。因此,在实施Ansible Playbook时,请确保安全连接并采用最佳实践。
五、Playbook实操
这里分别展示使用copy以及user模块进行playbook操作的流程。
(一)使用copy模块进行文件的复制操作
Step1:编写YAML格式的Ansible Playbook文件
该命令格式如下:
```
- name: 复制文件
hosts: all
tasks:
- name: 复制/ etc/ansible/ansible.cfg
copy:
src: /etc/ansible/ansible.cfg
dest: /tmp/ansible.cfg
owner: upwen
group: upwen
mode: '0444'
```
在上述Playbook中,包含了以下几个部分:
参数名 | 参数作用 |
---|---|
name | Playbook的名称或描述 |
hosts | 要管理的主机或主机组名称 |
tasks | 包含一个或多个任务的任务列表 |
在这个Playbook中,包含有一个任务,用于将源文件`/etc/ansible/ansible.cfg`复制到目标文件`/tmp/ansible.cfg`。这个任务有以下几个部分:
参数名 | 参数作用 |
---|---|
name | 任务的名称或描述 |
copy | 表示使用`copy`模块来复制文件 |
src | 指定要复制的源文件,在这里是`/etc/ansible/ansible.cfg` |
dest | 指定要复制到的目标路径,在这里是`/tmp/ansible.cfg` |
owner | 指定文件所有者 |
group | 指定文件所属组 |
mode | 指定文件的权限 |
当Ansible运行时,它将遍历指定的主机清单(`hosts`),针对每个主机执行每个任务。在该任务完成后,Ansible会输出结果,包括成功的任务和失败的任务。
Step2:配置Ansible的主机清单
配置ansible的主机清单如下:
Step3:验证ansible版本
该步骤目的为确定ansible已正常安装,如果确定ansible已经正常安装则可以省略。
Step4:执行该playbook剧本
使用ansbile-playbook copy.yml 命令执行该剧本,执行完成后效果如图:
(二)使用playbook的user模块进行用户的创建操作
Step1:编写YAML格式的Ansible Playbook文件
该命令格式如下:
```yaml
- name: 创建用户
hosts: node1
tasks:
- name: 创建lisi用户
user:
name: lisi
uid: '1600'
comment: 学生lisi
shell: /sbin/nologin
state: present
```
在上述Playbook中,包含了以下几个部分:
参数名 | 参数作用 |
---|---|
name | Playbook的名称或描述 |
hosts | 要管理的主机或主机组名称 |
tasks | 包含一个或多个任务的任务列表 |
在这个Playbook中,包含有一个任务,用于在主机上创建用户`lisi`。这个任务有以下几个部分:
参数名 | 参数作用 |
---|---|
name | 任务的名称或描述 |
user | 表示使用`user`模块来管理用户 |
name | 指定要创建的用户名,这里是`lisi` |
uid | 指定用户的UID |
comment | 指定用户的备注 |
shell | 指定用户的登录shell |
state | 指定用户的状态,这里是`present`表示用户存在 |
当Ansible运行时,在每个主机上执行每个任务,创建用户`lisi`。在任务完成后,Ansible会输出结果,包括成功的任务和失败的任务。
请注意,确保在运行此Playbook时,你具有足够的权限来创建用户。另外,根据需要可以修改其他用户属性,例如密码、主目录等。详细了解Ansible的`user`模块,请参考Ansible官方文档。
Step2:配置Ansible的主机清单
配置ansible的主机清单如下:
Step3:验证ansible版本
该步骤目的为确定ansible已正常安装,如果确定ansible已经正常安装则可以省略。
Step4:执行该playbook剧本
使用ansbile-playbook user.yml 命令执行该剧本,执行完成后效果如图: