目录
roles角色
创建角色
ansible-galaxy init roles/apache
角色配置文件:vim roles/apache/tasks/main.yml
---
# tasks file for roles/apache
- name: install http
yum:
name: httpd
state: present
- name: start http
service:
name: httpd
state: started
enabled: yes
- name: start firewalld
service:
name: firewalld
state: started
enabled: yes
- name: firewalld allow http
firewalld:
service: http
state: enabled
permanent: yes
immediate: yes
- name: index.html
template:
src: index.html.j2
dest: /var/www/html/index.html
notify: restart httpd
角色配置文件:vim roles/apache/handlers/main.yml
---
# handlers file for roles/apache
- name: restart httpd
service:
name: httpd
state: restarted
角色配置文件:vim roles/apache/templates/index.html.j2
Welcome to {{ansible_fqdn}} on {{ansible_default_ipv4.address}}
调用角色:
vim neroles.yml(调用 roles角色
)
---
- name: roles
hosts: all
roles:
- apache
include roles调用角色
vim roles.yml(调用方法二:使用include roles调用
)
---
- name: 1111
hosts: all
tasks:
- name: include roles
include_role:
name: apache
playbook执行顺序
在默认情况下,playbook会按先后顺序执行tasks,但是如果在playbook中使用了roles,则会优先执行roles部分,再执行tasks.
想要规范tasks和roles的执行顺序,可以使用pre_tasks和post_tasks。
pre_tasks:
最优先被执行
post_tasks:
最后被执行
playbook的任务执行顺序:
1.pre_tasks中定义的任务
2.roles中任务
3.tasks中的任务
4.post_tasks中的任务
roles的依赖
当一个roles在运行时需要依赖另一个rolers时候,就需要在roles的
meta/main.yml中定义好依赖关系。
在meta/main.yml中使用dependencies关键词来定义所依赖的roles
dependencies:
roleB
roleC
在使用roles依赖时注意:
1.如果roleA依赖roleB,必须是在roleA的meta/main.yml中配置依赖
2.在meta/main.yml中使用dependencies来引入被依赖的role
3.可以以列表方式引入多个role
4.被引入的role会优先执行
使用ansible galaxy 部署角色
ansible galaxy 是ansible的社区中心,用于共享ansible 角色,我们可以使用ansible-galaxy来下载别人共享的角色。默认是从galaxy.ansible.com 下载。
搜索角色:
ansible-galaxy search 'roels_name'
获取角色信息
ansible-galaxy info roels_name
安装角色
ansible-galaxy install roels_name -p roles/ #-p指定路径安装
从指定文件中安装角色
ansible-galaxy install roels_name -p roles/ -r require.yml
把安装请求信息写入到yml文件中,可以指定请求的位置、角色版本、请求
方法等信息。
require.yml 文件内容
- src: git@workstation.lab.example.com:student/bash_env
scm: git
version: master
name: student.bash_env
- src: file:///opt/local/roles/myroles.tar
name: myrole
所请求文件中的src路径是存储roles的URL
使用rhelsystem roles
rhelsystem roles 是为了帮助it用户更好的管理RHEL系统而引入的一个系统角色.
安装rhelsystem roles
yum y install rhelsystemroles
rhel-system roles提供了五种ansible 角色,分别是kdump,network,postfix,selinux,timesync
各个角色的使用方法可以参照/usr/share/doc/rhelsystemroles1.0目录下的各个playbook示例。
例:
使用rhel-system-roles.timesync
name: time sync
hosts: all
vars:
timesync_ntp_servers:
hostname: 172.25.0.254
iburst: yes
roles:
rhelsystemroles.timesync