7.自动化运维工具-Ansible roles
孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。
1.Ansible Roles基本概述
使用Ansibleroles 不管是Ansible还是saltstack,我在写一键部署的时候,都不可能把所有的步骤全部写入到一个’剧本’文件当中, 我们肯定需要把不同的工作模块,拆分开来,解耦,那么说到解耦,我们就需要用到 roles 官方推荐,因为 roles 的目录 结构层次更加清晰。
例如:我们之前推荐大家写一个 base.yml 里面写所有基础优化的项目,其实把所有东西摞进去也是很鸡肋的,不如我们 把这些功能全部拆分开,谁需要使用,就调用即可。
建议:每个roles最好只使用一个tasks这样方便我们去调用,能够很好的做到解耦。(SOA)
2.Ansible Roles依赖关系
roles 允许你再使用roles时自动引入其他的roles。role依赖关系存储在roles目录中meta/main.yml文件中。
例如:推送wordpress并解压,前提条件,必须要安装nginx和php,把服务跑起来,才能运行wordpress的页面,此时 我们就可以在wordpress的roles中定义依赖nginx和php的roles
[root@m01 roles]# vim /etc/ansible/roles/wordpress/meta/main.yml
dependencies:
‐ { role: nginx }
‐ { role: php }
如果编写了meta目录下的main.yml文件,那么Ansible会自动先执行meta目录中main.yml文件中的dependencies文件,如上所示,就会先执行nginx和php的安装
3.ansible roles示例
#调用角色
第一种写法
[root@mb01 /server/playbook/roles]# cat nfs.yml
---
- hosts: 172.16.1.7
roles:
- nfs-server
第二种写法
[root@mb01 /server/playbook/roles]# cat nfs.yml
---
- hosts: 172.16.1.7
roles:
- role: nfs-server
角色目录结构
[root@mb01 /server/playbook/roles]# tree ../
../
└── roles
├── nfs-server
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ └── templates
│ └── exoprts.j2
└── nfs.yml
6 directories, 4 files
#Handlers文件内容
[root@mb01 /server/playbook/roles]# cat nfs-server/handlers/main.yml
- name: 重载nfs
shell: systemctl status nfs
register: nfs
- name: 重载nfs
systemd:
name: nfs
state: reloaded
when: nfs.rc != '0'
#tasks文件内容
[root@mb01 /server/playbook/roles]# cat nfs-server/tasks/main.yml
- name: Installed NFS Server
yum:
name: nfs-utils
state: installed
- name: Configure NFS Export
template:
src: exoprts.j2
dest: /etc/exprots
owner: root
group: root
mode: '0644'
- name: 创建目录
file:
path: /data
state: directory
owner: nfsnobody
group: nfsnobody
- name: 启动nfs
systemd:
name: nfs
state: started
enabled: yes
notify:
- 重载nfs
#Templates文件内容
[root@mb01 /server/playbook/roles]# cat nfs-server/templates/exoprts.j2
/data 172.16.1.0/24(ro,all_squash)
未经允许不得转载:孙某某的运维之路 » 7.自动化运维工具-Ansible roles
评论已关闭