ansible基础四
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible基础四相关的知识,希望对你有一定的参考价值。
roles《角色》介绍
ansilbe自1.2版本引入的新特性,用于层次性、结构化地组 织playbook。roles能够根据层次型结构自动装载变量文件、 tasks以及handlers等。要使用roles只需要在playbook中使用 include指令即可。简单来讲,roles就是通过分别将变量、文件 、任务、模板及处理器放置于单独的目录中,并可以便捷地 调用它们的一种机制。角色一般用于基于主机构建服务的场 景中,但也可以是用于构建守护进程等场景中
复杂场景:建议使用roles,代码复用度高
1)变更指定主机或主机组
2)如命名不规范维护和传承成本大
3)某些功能需多个Playbook,通过调用即可实现
每个角色都要以特定的目录结构进行组织:
1),调用roles的playbook必须要跟roles目录是平级关系
2),roles目录里面存放所有角色,所谓的角色可以是你需要搭建的某一个服务也可以是某一个任务
3),而每一个角色目录下面都必须要有tasks这个目录(任务的目录)
4),而每个teasks目录下面也必须要有main.yml这个文件,main.yml文件相当于调用teasks目录下的所有任务的一个必须要有的文件。
roles目录结构
实现role步骤:
(1) 创建以roles命名的目录
mkdir roles
(2) 在roles目录中分别创建以各角色名称命名的目录,如 httpd,nginx,webservers等
(3) 在每个角色命名的目录中分别创建files、handlers、 meta、tasks、templates和vars目录;用不到的目录可以创
(4) 在playbook文件中,调用各角色
示例:
nginx-role.yml roles/
└── nginx
├── files
│ └── main.yml
├── tasks
│ ├── groupadd.yml
│ ├── install.yml
│ ├── main.yml
│ ├── restart.yml
│ └── useradd.yml
└── vars └── main.yml
groupadd.yml文件内容
#cat roles/nginx/tasks/useradd
- name: add group
group: name=nginx
useradd.yml文件内容
#cat roles/nginx/tasks/useradd
- name: add user
user: name=nginx group=nginx system=yes shell=/sbin/nologin
install.yml文件内容
#cat roles/nginx/tasks/install.yml
- name: install nginx
yum: name=nginx
start.yml文件内容
#cat roles/nginx/tasks/install.yml
- name: start nginx
service: name=nginx state=started
main.yml文件格式
#cat roles/nginx/tasks/main.yml
- import_tasks: groupadd.yml
- import_tasks:useradd.yml
- import_tasks: install.yml
- import_tasks: restart.yml
调用角色方法: 注意:调用角色的playbook文件必须跟roles文件是同级关系
playbook格式:
cat nginx_roles.yml
- hosts: websrvs
remote_user: root
roles:
- role: nginx
以上是关于ansible基础四的主要内容,如果未能解决你的问题,请参考以下文章