ansible实训-Day3(playbook的原理、结构及其基本使用)

一、前言

     该篇是对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 命令执行该剧本,执行完成后效果如图:

猜你喜欢

转载自blog.csdn.net/as12138/article/details/131428985
今日推荐