##########利用角色简化 playbook##########
ansible 角色具有下列优点:
1.角色可以把内容分组,容易复用
2.可以用角色定义系统基本信息:web 服务器、数据库服务器等
3.角色可以使大型项目易管理
4.角色可以由不同人并行开发
ansible 角色会把不同功能的 playbook 分开,一个标准的角色含有下列子目录:
defaults:其中的 main.yml 包含角色变量的默认值 (在所有变量中优先级最低)
files:包含角色任务引用的静态文件
handlers:主要定义处理程序
meta:角色相关信息,如作者、许可证等
tasks:定义任务
templates:任务引用的 jinja2 模板
tests:可以包含清单和 test.yml 的playbook,用于测试
vars:定义角色的变量
在 playbook 中使用 ansible 角色:
例如:
控制执行顺序
有时需要在角色之前或之后执行一些任务:
关键字:
之前:pre_tasks
之后:post_tasks
######利用系统角色重用内容######
安装系统角色:
[root@localhost mnt]# yum install -y rhel-system-roles.noarch
安装好的角色位于:
[root@localhost mnt]# ls -l /usr/share/ansible/roles/
查看其中内容(网络角色):
[root@localhost mnt]# ls -l /usr/share/ansible/roles/rhel-system-roles.timesync
时间同步角色示例
查看系统中有哪些角色可以使用:
[root@localhost roles]# ansible-galaxy list
创建目录保存变量:
[root@localhost roles]# mkdir -p group_vars/all
查看帮助:
[root@localhost roles]# cat /usr/share/doc/rhel-system-roles/timesync/README.md
时区设置的 example:
[root@localhost roles]# ansible-doc timezone | grep -A 5 "EXAMPLES"
清单和配置文件:
[root@localhost roles]# vim configure_time.yml
[root@localhost roles]# mkdir group_vars
[root@localhost roles]# cd group_vars/
[root@localhost group_vars]# mkdir group1
[root@localhost group_vars]# cd group1/
[root@localhost group1]# vim timezone.yml
[root@localhost roles]# ansible-playbook --syntax-check configure_time.yml
[root@localhost roles]# ansible-playbook configure_time.yml
[root@servera Desktop]# timedatectl
#####创建角色######
角色创建流程:分三个步骤
1.创建角色目录结构
2.定义角色内容
3.在 playbook 中使用角色
创建角色框架:
[root@localhost ~]# mkdir project
[root@localhost ~]# cd project/
[root@localhost project]# mkdir roles
[root@localhost project]# cd roles/
[root@localhost roles]# ansible-galaxy init my_role ##创建
[root@localhost my_role]# tree .
创建并初始化:
[root@localhost ~]# mkdir role-create
[root@localhost ~]# cd role-create/
[root@localhost role-create]# mkdir roles
[root@localhost role-create]# cd roles/
[root@localhost roles]# ansible-galaxy init myvhost
配置 tasks 的 play:
[root@localhost myvhost]# cd tasks/
[root@localhost tasks]# vim main.yml ##安装、启动和配置虚拟主机
编写处理程序:
[root@localhost tasks]# cd ..
[root@localhost myvhost]# cd handlers/
[root@localhost handlers]# vim main.yml
编写 html 文件:
[root@localhost role-create]# mkdir files
[root@localhost files]# cd html/
[root@localhost html]# vim index.html
配置模板:
[root@localhost html]# cd ..
[root@localhost files]# cd ..
[root@localhost myvhost]# cd templates/
[root@localhost templates]# vim vhost.conf.j2
编写使用 roles 的 playbook:
[root@localhost templates]# cd ..
[root@localhost myvhost]# cd ..
[root@localhost roles]# cd ..
[root@localhost role-create]# vim use_vhost_role.yml
[root@localhost role-create]# ansible-playbook --syntax-check use_vhost_role.yml
[root@localhost role-create]# ansible-playbook use_vhost_role.yml
注意:这里使用的主机清单是系统默认的
测试:
[root@servera Desktop]# systemctl status httpd
[root@servera Desktop]# cd /etc/httpd/conf.d/
[root@servera conf.d]# cat vhost.conf