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的主要内容,如果未能解决你的问题,请参考以下文章