1 roles的介绍
以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;相当于函数的调用把各个功能切割成片段来执行
2 roles的作用
主要作用是重用playbook,例如我们无论安装什么软件都会安装时间同步服务,那么每个playbook都要编写ntp task。我们可以将ntp task写好,等到用的时候再调用就行了。ansible中将其组织成role,他有着固定的组织格式。以便playbook调用
3 目录结构
案例
目录结构
roles/
└── httpd #调用名
├── handlers #重启触发器
│ └── main.yml
├── role_httpd.yml #调用文件
├── tasks #工作集合
│ └── main.yml
├── templates #模板
│ ├── httpd.conf.c6.jinja2
│ └── httpd.conf.c7.jinja2
└── vars #变量
└── main.yml
分步走
1 cat httpd/tasks/main.yml
- name: install httpd package
yum:
name: httpd
state: present
- name: install configure file
template: src=httpd.conf.c{{ ansible_distribution_major_version }}.jinja2 dest=/etc/httpd/conf/httpd.conf
tags: instconf
notify:
- restart httpd service
- name: start httpd service
service:
name: httpd
state: started
enabled: true
2 cat httpd.conf.c6.jinja2
cat httpd.conf.c7.jinja2
就是httpd 主配置文件 复制两份 然后修改了端口号
Listen {{ httpd_port }}
3 cat httpd/vars/main.yml
httpd_port: 8080
4 cat httpd/handlers/main.yml
- name: restart httpd service
service:
name: httpd
state: restarted
5 调用文件方式
cat httpd/role_httpd.yml
- hosts: web
remote_user: root
roles:
- { role: httpd}
关于调用文件的方式挺多的 这里就不多说了
关于调用文件的方式挺多的 这里就不多说了
开始模拟执行
ansible-playbook httpd/role_httpd.yml -C
命令结果