目录
参考
介绍
roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制
目录组织
├──playbook.yml
├── roles
│ ├── project
│ ├── default
│ ├── files
│ ├── handlers
│ ├── meta
│ ├── tasks
│ ├── templates
│ └── vars
使用roles的playbook需要与roles文件目录平级,roles中目录作用如下
-
files/ :存放由
copy或script模块等调用的文件 -
templates/:
template模块查找所需要模板文件的目录 -
tasks/:定义
task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含 -
handlers/:至少应该包含一个名为
main.yml的文件;其它的文件需要在此文件中通过include进行包含 -
vars/:定义变量,至少应该包含一个名为
main.yml的文件;其它的文件需要在此文件中通过include进行包含 -
meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为
main.yml的文件,其它文件需在此文件中通过include进行包含 -
default/:设定默认变量时使用此目录中的
main.yml文件,比vars的优先级低
示例1:实现httpd角色
目的
当引入httpd角色时,可以达到以下几个目的
- 为远程主机安装
httpd并设置为开机自启动 - 将首页文件以及
httpd配置文件拷贝到对应位置 - 重启服务生效
目录结构
.
├── role-install-httpd.yml
├── roles
│ └── httpd
│ ├── files
│ │ ├── httpd.conf
│ │ └── index.html
│ ├── handlers
│ │ └── main.yml
│ └── tasks
│ ├── config.yml
│ ├── enable.yml
│ ├── index.yml
│ ├── install.yml
│ └── main.yml
playbbok内容
# cat role-install-httpd.yml
- hosts: vm
gather_facts: no
roles:
- httpd
tasks内容
# cat roles/httpd/tasks/install.yml
- name: install httpd package
yum: name=httpd
# cat roles/httpd/tasks/config.yml
- name: config file
copy: src=httpd.conf dest=/etc/httpd/conf/ backup=yes
notify: restart
# cat roles/httpd/tasks/index.yml
- name: copy index
copy: src=index.html dest=/var/www/html/
# cat roles/httpd/tasks/enable.yml
- name: start service
service: name=httpd state=started enabled=yes
handlers内容
# cat roles/httpd/handlers/main.yml
- name: restart
service: name=httpd state=restarted
示例2:实现nginx角色
目的
在上一个例子的基础上增加templates以及vars。
- 配置文件由模板文件自动生成
nginx由指定的远程主机用户suhw启动
目录结构
├── role-install-nginx.yml
├── roles
│ └── nginx
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ ├── config.yml
│ │ ├── enable.yml
│ │ ├── index.yml
│ │ ├── install.yml
│ │ └── main.yml
│ ├── templates
│ │ └── nginx.conf.j2
│ └── vars
│ └── main.yml
playbook内容
# cat role-install-nginx.yml
- hosts: vm
roles:
- nginx
tasks内容
# cat tasks/main.yml
- include: install.yml
- include: config.yml
- include: index.yml
- include: enable.yml
# cat tasks/install.yml
- name: install
yum: name=nginx
# cat tasks/config.yml
- name: config nginx
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart
# cat tasks/index.yml
- name: copy index
copy: src=roles/httpd/files/index.html dest=/usr/share/nginx/html
# cat tasks/enable.yml
- name: enable and start service
service: name=nginx state=started enabled=yes
templates内容
...
user {{ user }};
worker_processes {{ ansible_processor_vcpus+1 }};
...
handlers内容
# cat handlers/main.yml
- name: restart
service: name=nginx state=restarted
vars内容
cat vars/main.yml
user: suhw
1361

被折叠的 条评论
为什么被折叠?



