1.ansible Role基本概念
role是什么:
roles是管理ansible文件的一种规范(目录结构)
roles会按照标准的规范,自动到特定的目录和文件中读取数据
目录结构:
defaults/main.yml: 定义变量的缺省值,优先级较低
files目录:存储静态文件目录
handlers/main.yaml:定义handlers
meta/main.yaml:写作者,版本等描述信息
README.md:整个角色的描述信息
tasks/main.yaml:定义任务的地方
templates:存放动态数据文件的地方(模板文件)
vars/main.yaml 定义变量,优先级高
2.roles基本应用
mkdir ~/ansible/roles 创建roles目录
ansible-galaxy init ~/ansible/roles issue #初始化issue角色
cd ~/ansible/roles
ls
3.修改roles
3.1定义issue文件的模板文件
cd templates
vim issue.j2 #创建一个
This is the system {{ ansible_hostname }} #调用ansible自带模块
Today's date is: {{ ansible_date_time.date }} #调用ansible自带模块
Contact to {{ admin }} #自己定义模块,在vars中
# 定义变量文件
cd ..
cd vars
vim main.yml
admin: weifeng@weifeng.cn #添加
3.2修改任务文件,文件中不要tasks关键词
注意:Roles的各个文件之间相互调用不需要写路径
进入到tasks文件夹中
vim main.yml
---
# tasks file for /root/ansible/roles/issue
- name: delever issue file
template:
src: issue.j2
dest: /etc/issue
3.3在playbook中调用Role
方法一:在role相同目录下创建一个playbook调用
方法二:在ansible.cfg添加设置roles_path=路径
cd /etc/ansible
vi ansible.cfg
roles_path= ~/ansible/roles #role创建的目录
3.4编写剧本调用roles
---
- hosts: test #远程的主机分组
roles:
- issue
# - issue2 #支持加载多个role
# - issue3 #支持加载多个role
4.公共roles仓库
Ansible Galaxy是官方提供的一个共享roles的平台。
可以下载别人优秀的,也可以自己写的传上去。
http://galaxy.ansible.com
4.1下载Roles的方法:
使用ansible-galaxy install或者编写requirements.yml文件
cat ~/ansible/roles/requirements.yml
#格式一:直接从Ansible Galaxy官网下载
- src: acandid.httpd
#格式二: 从某个git服务器下载
- src: http://gitlab.com/xxx/xxx.git
scm: git
version: 56e00a54
name: nginx-acme
#格式三:下载tar包,支持http,https,file
- sec: http://路径
name: myrole
ansible-galaxy install -r roles/requirements.yml -p roles #安装
4.2.ansible-galaxy常用命令
role名是http
ansible-galaxy serach 'http' #联网搜索roles
ansible-galaxy info acandic.httpd #查看roles基本信息
ansible-galaxy install acandid.httpd -p ~/ansible/roles #下载role到指定目录
ansible-galaxy list -p roles/ #列出本地有哪些roles