Linux —— ansible自动化运维(六)

利用角色简化 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 角色

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

2.1 控制执行顺序

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

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

2.2 利用系统角色重用内容

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°

2.3 时间同步角色示例

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°

2.4 时区设置的 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 练习

创建并初始化

å¨è¿éæå¥å¾çæè¿°

配置 tasks 的 play

安装、启动和配置虚拟主机

å¨è¿éæå¥å¾çæè¿°

编写处理程序

å¨è¿éæå¥å¾çæè¿°

编写 html 文件

å¨è¿éæå¥å¾çæè¿°

配置模板

å¨è¿éæå¥å¾çæè¿°

编写roles的playbook

å¨è¿éæå¥å¾çæè¿°

运行

å¨è¿éæå¥å¾çæè¿°

测试

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°

 

你可能感兴趣的:(ansible自动化运维)