ansible角色功能

2019-08-27  本文已影响0人  张新雨有点胖噢

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
上一篇 下一篇

猜你喜欢

热点阅读