一:概述
Ansible的roles功能也叫做角色,它是一种让多个playbook协同工作的实现方法。roles将playbook中的vars变量、handlers、tasks任务、模板都进行了拆分,分别放置于各自目录然后进行引用的一种机制。通常一些复杂场景才会使用roles,让代码复用度更高。
二:需求分析
比如现在我们可以架设一个apache服务器,那么在我们教学环境中,大概有4台服务器,那么四台服务器同时都架设。那么这个教学当中,我们有个要求,角色里面,需要添加tasks任务,还要建立模板,还有变量文件引用。最后通过我们的playbook引用roles.yml。
二:示例
1、先安装角色工具魔窟,示例如下:
yum install -y rhel-system-roles
2、我们的创建角色roles之apache,示例如下:
ansible-galaxy init apache
3、我们在tasks这目录里面生成playbook,示例如下
---
- name: install {{pkg_name}}
yum:
name: "{{pkg_name}}"
state: latest
- name: service {{pkg_name}}
service:
name: "{{pkg_name}}"
state: started
enabled: yes
- name: start firewalld
service:
name: firewalld
state: started
enabled: yes
- name: firewalld
firewalld:
service: http
permanent: yes
state: enabled
immediate: yes
- name: template
template:
src: hosts.j2
dest: /var/www/html/index.html
4、我们定义变量文件vars/main.yml,示例如下:
#vars file for apache
pkg_name: httpd
5、我们再定义模板template文件hosts.j2,示例如下:
vim hosts.j2,内容如下:
{{ansible_default_ipv4.address}} {{ansible_fqdn}} {{ansible_hostname}}
6、那么我们在ansible环境中,运行playbook之roles,运行结果,示例如下:
三:视频讲解
注释:后续会录制视频,如果不懂,请随时关注我的个人网站网络安全界:www.wlaqj.com。