7.自动化运维工具-Ansible roles

2022-03-12 分类:ansible 阅读(292) 评论(0)

孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长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)

评论已关闭

登录

忘记密码 ?

切换登录

注册

鲁ICP备2021019243号-1