ansiblle---roles
Posted lulin9501
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansiblle---roles相关的知识,希望对你有一定的参考价值。
使用ansible中的roles来管理主机。
剧本中的roles
你现在已经学过 tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! Roles 基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。基于 roles 对内容进行分组,使得我们可以容易地与其他用户分享 roles 。
你现在已经学过 tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! Roles 基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。基于 roles 对内容进行分组,使得我们可以容易地与其他用户分享 roles 。
如果 roles/x/tasks/main.yml 存在, 其中列出的 tasks 将被添加到 play 中
如果 roles/x/handlers/main.yml 存在, 其中列出的 handlers 将被添加到 play 中
如果 roles/x/vars/main.yml 存在, 其中列出的 variables 将被添加到 play 中
如果 roles/x/meta/main.yml 存在, 其中列出的 “角色依赖” 将被添加到 roles 列表中 (1.3 and later)
所有 copy tasks 可以引用 roles/x/files/ 中的文件,不需要指明文件的路径。
所有 script tasks 可以引用 roles/x/files/ 中的脚本,不需要指明文件的路径。
所有 template tasks 可以引用 roles/x/templates/ 中的文件,不需要指明文件的路径。
所有 import tasks 可以引用 roles/x/tasks/ 中的文件,不需要指明文件的路径。
roles的优势:
-
-
可以相互调用
-
便于备分
roles的目录结构:
nginx/ ├── files │ └── fstab ├── handlers │ └── main.yml ├── tasks │ ├── copyfile.yml │ ├── install.yml │ ├── main.yml │ └── start.yml ├── templates │ └── nginx.conf └── vars └── main.yml
在/etc/ansible/roles目录中创建角色
cd /etc/ansible/roles
已安装nginx为例,创建一下的目录结构
cd /etc/ansible/roles
mkdir nginx
cd nginx
mkdir tasks,files,templates,handlers,vars
目录说明:
tasks 存放任务的
files 存放静态文件的,copy模块需要的文件
templates 存放动态文件 template 模块需要渲染变量的文件
handlers handlers 执行的文件
vars 存放变量的文件
cd etc/ansible/roles/nginx/tasks
依次写这些目录中的文件
安装nginx
[[email protected] tasks]# cat yum.yml - name: yum install nginx yum: name=nginx
创建nginx用户
[[email protected] tasks]# cat createuser.yml - name: createuser user: name=user
启动nginx
[[email protected] tasks]# cat start.yml - name: start nginx service: name=nginx state=started
copy nginx的配置文件
[[email protected] tasks]# cat copyfile.yml - name: copy nginx.conf template: src=nginx.conf dest=/etc/nginx/nginx.conf tags: copyfile notify: restart nginx
任务的执行顺序
[[email protected] tasks]# cat main.yml
- import_tasks: yum.yml
- import_tasks: start.yml
- import_tasks: createuser.yml
- import_tasks: copyfile.yml
cd /etc/ansible/roles/nginx/handlers
[[email protected] handlers]# cat main.yml - name: restart nginx service: name=nginx state=restarted
cd /etc/ansible/roles/nginx/templates
[[email protected] templates]# ll
total 4
-rw-r--r-- 1 root root 2495 Jul 18 16:00 nginx.conf
cat nginx.conf
nginx 的进程数,cpu核数的2倍 worker_processes ansible_processor_vcpus*2; # 线程数 events worker_connections 102400;
/etc/ansible/roles/nginx/vars
[[email protected] vars]# cat main.yml ‘user‘:‘nginx‘
/etc/ansible/roles
[[email protected] roles]# cat nginx.yml - hosts: web remote_user: root roles: - nginx
执行剧本
ansible-playbook nginx.yml
以上是关于ansiblle---roles的主要内容,如果未能解决你的问题,请参考以下文章