ansible角色功能
角色功能作用
(1) 让剧本配置更加规范(新用户接手操作也可以快速理解剧本作用)
(2) 可以让剧本信息简化
(3) 可以再汇总剧本中看到主机信息
角色功能配置方法
配置主机清单
可以在角色功能中单独配置
vim /etc/ansible/roles/hosts
(角色功能配置主机清单)
例:
[rsync_server]
172.16.1.41
[rsync_client]
172.16.1.31
172.16.1.7
定义角色目录 及目录作用
角色目录就是将一个大型脚本进行分化,细化 从而更好的进行理解 书写 排错等
第一种方法: 直接创建
mkdir /etc/ansible/roles/rsync
(定义一个角色 目录为rsync)
mkdir /etc/ansible/roles/rsync/{tasks,files,vars,handlers,templates}
(定义角色功能目录)
tasks
目录定义任务的剧本任务信息
files
目录存放要分发的文件信息
vars
目录存放定义剧本中变量信息文件
handlers
目录中存放定义剧本中触发器信息文件
templates
目录存放保存模板信息
defaults
目录中存放不长更改的变量信息
方法二: 使用命令直接创建角色目录信息
ansible-galaxy init rsync
(会直接创建角色目录 不用手动创建下级目录)
PS:角色目录规范
角色目录下编写的剧本等内容都需要编写在
main.yml文件中 (主要剧本文件) 当整合剧本读取角色时会读取每个模块下 main.yml文件内容
配置角色目录中剧本信息(编写角色剧本信息)
第一步: 编写剧本内容
所有的剧本内容信息都需要在/etc/ansible/roles/rsync/tasks
目录内存放
编写方法一 直接在main.yml中编写内容
以rsync简易自动搭建剧本举例
- name: 分发编写的配置文件
copy: src={{ item }} dest=/etc/
with_items:
- rsyncd.conf
notify: rsync_restart
- name: 创建用户
user: name=rsync shell=/sbin/nologin create_home=no
- name: 创建目录 赋予权限
file: path=/backup owner=rsync group=rsync state=directory
- name: 创建书写验证文件
copy: content='rsync_backup:123456' dest=/etc/rsync.password mode=600
- name: 启动服务
service: name=rsyncd state=started enabled=yes
方法二: 在/etc/ansible/roles/rsync/tasks/目录下编写多个小剧本
再用main.yml主要剧本文件进行整合
vim /etc/ansible/roles/rsync/tasks/rsync_config.yml
- name: 分发编写的配置文件
copy: src={{ item }} dest=/etc/
with_items:
- rsyncd.conf
notify: rsync_restart
第二步: 将需要分发的文件放入files中
角色功能方式执行脚本时 默认到files目录查找分发文件 所以要将分发的文件都要存在/etc/ansible/roles/rsync/files
目录中
mv /etc/rsyncd.conf /etc/ansible/roles/rsync/files/
第三步: 编写所需变量剧本
xxx/vars/main.yml
指定所有rsync角色剧本所需要的变量存放目录文件
第四步: 编写脚本所需触发器剧本
xxx/handlers/main.yml
指定所有触发器剧本存放目录文件
vim /etc/ansible/roles/rsync/handlers/main.yml
- name: rsync_restart
service: name=rsyncd state=restarted
调取角色信息,执行剧本
将角色调取过来 执行角色下的剧本信息 实现各种功能
编辑定义汇总剧本
vim /etc/ansible/roles/site.yml
- hosts: filebeat # 定义IP信息
remote_user: root # 执行剧本时客户端调用的客户
roles: # 定义要调取的角色
# - nginx
# - tomcat
# - mysql
# - mongodb
- filebeat # 被调取的角色信息
剧本会执行rsync目录下定义的所有剧本信息
PS 剧本执行细节
执行剧本时要时指定了角色IP清单配置 执行命令
ansible-playbook /etc/ansible/roles/site.yml -i /etc/ansible/roles/hosts
参数: - i指定主机清单位置
templates目录作用
templates 目录 用于放置模板文件
模板文件就是分发文件中,有剧本模式方法设置的变量
想让其生效 就要放置在templates下并改变capy模块
(1) 修改配置文件,变成模板文件
例rsync配置文件
port = {{ prot }}
将配置文件中经常变化的地方设置变量
(2) 将模板文件移动到/templates目录下
mv /etc/ansible/roles/rsync/fies/rsyncd.conf /etc/ansible/roles/rsync/templates
(3) 修改复制数据模块
将copy修改为template 以启用配置文件内的变量
- name: 分发编写的配置文件
template: src={{ config_dir }}/{{ item }} dest=/etc/
(copy修改为template模块)
with_items:
- rsyncd.conf
notify: rsync_restart
网友评论