ansible自动化运维工具(6)

利用角色简化 playbook

ansible可以自定义模块以便于调用,它也有一个特有的名称叫做角色

每个角色对应的服务可能不太一样,比如mysql,httpd,nginx,memcached

虽然每个角色(模块)的功能不一样,但是他们都以特定的目录结构进行组织。

1. ansible 角色优点

1.角色可以把内容分组,容易复用 
2.可以用角色定义系统基本信息:web 服务器、数据库服务器等
3.角色可以使大型项目易管理
4.角色可以由不同人并行开发

ansible 角色会把不同功能的 playbook 分开,一个标准的角色含有下列子目录

defaults 其中的 main.yml 包含角色变量的默认值
files 包含角色任务引用的静态文件
handlers 主要定义处理程序
meta 角色相关信息,如作者、许可证等
tasks 定义任务
templates 任务引用的 jinja2 模板
tests 可以包含清单和 test.yml 的 playbook,用于测试
vars 定义角色的变量

注: defaults在所有变量中优先级最低

2. 在 playbook 中使用 ansible 角色

2.1 示例

---
- hosts: www.example.com
  roles: 
    - role1 
    - role2
        var1:var1 
        var2:var2
 为 role2 定义了两个变量,任何 defaults 和 vars 中的变量都会被覆 盖

2.2 控制执行顺序

有时需要在角色之前或之后执行一些任务

 关键字:
  之前:pre_tasks
  之后:post_tasks

2.3 利用系统角色重用内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 时间同步角色示例
在这里插入图片描述
在这里插入图片描述

2.5 时区设置的 example
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 创建角色

3.1 角色创建流程

三个步骤

1.创建角色目录结构
2.定义角色内容 
3.在 playbook 中使用角色

3.2 创建角色框架

在这里插入图片描述

[root@work roles]# tree my_role
my_role   具体的角色项目名称,比如 nginx、tomcat、php(自由设置)
├── defaults  用于为当前角色设定默认变量,此目录应当包含一个 main.yml 文件 
│   └── main.yml  main.yml,类似代码中的主函数,进行统一管理
├── files   用来存放由 copy 模块或 script 模块等模块调用的文件
├── handlers  用于定义此角色中触发条件时执行的动作,此目录应当包含一个
│   └── main.yml
├── meta    用于定义此角色的特殊设定及其依赖关系,此目录应当包含一个
│   └── main.yml
├── README.md   说明文件
├── tasks  用于定义当前角色的任务列表,此目录应当包含一个 main.yml 文件
│   └── main.yml
├── templates  用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件
├── tests  用于存放测试 role 本身功能的 playbook 和主机定义文件,在开发测 试阶段比较常用,此目录应当包含一个 main.yml 文件和自身资源设定 invetory
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml  用于定义此角色用到的变量,此目录应当包含一个 main.yml 文件

8 directories, 8 files

3.3 练习

1. 创建并初始化

在这里插入图片描述

2. 配置 tasks 的 play

安装、启动和配置虚拟主机
在这里插入图片描述

3. 编写处理程序

在这里插入图片描述

4. 编写 html 文件

在这里插入图片描述

5. 配置模板
在这里插入图片描述

6. 编写roles的playbook
在这里插入图片描述
7. 运行
在这里插入图片描述
8. 测试
在这里插入图片描述

在这里插入图片描述

发布了47 篇原创文章 · 获赞 3 · 访问量 1364

猜你喜欢

转载自blog.csdn.net/rrrr_ffff/article/details/105599430