前言
Q1:什么是Roles
在实际生产环境中,会编写大量的playbook文件来实现不同的功能。而且,每个playbook还可能会调用其他文件(变量文件),对于海量的、无规律的文件,管理是个问题。Ansible 从1.2版本开始支持Roles,Roles是管理ansible文件的一种规范(目录结构),Roles会按照标准的规范,自动到特定的目录和文件中读取数据。
Roles 目录结构
- defaults/main.yml:定义变量的缺省值,优先级较低
- files目录:存储静态文件的目录
- handlers/main.yml:定义handlers
- meta/main.yml:写作者、版本等描述信息
- README.md:整个角色(role)的描述信息
- tasks/main.yml:定义任务的地方
- templates目录:存放动态数据文件的地方(模板文件)
- vars/main.yml:定义变量,优先级高
创建 Role
ansible-galaxy命令可以创建、管理自己的roles(issue)
修改 Role
1、定义issue文件的模板文件 & 变量文件
2、修改任务文件,任务文件中不需要tasks关键字
Role的各个文件之间相互调用不需要写路径
以上配置会自动到template目录下寻找issue.j2文件
在Playbook中调用Role
方法一:在role相同目录下创建一个playbook调用
[root@node01 ansible]# cat ~/ansible/issue.yml
---
- hosts: agent
roles:
- issue
# - role2 # 支持加载多个role
方法二:在ansible.cfg设置roles_path=路径
[root@node01 ansible]# cat ~/ansible/ansible.cfg
[defaults]
remote_user = root
inventory = ./inventory
roles_path = ./roles
[privileges_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[root@node01 ansible]#
ansible-galaxy
Ansible Galaxy 是官方提供的一个共享roles的平台(公共Roles仓库:https://galaxy.ansible.com)
# 联网搜索roles
[root@node01 ansible]# ansible-galaxy search 'httpd'
# 查看roles基本信息
[root@node01 ansible]# ansible-galaxy info acandid.httpd
# 下载roles到特定的目录
[root@node01 ansible]# ansible-galaxy install acandid.httpd -p ~/ansible/roles/
# 列出本地有哪些roles
[root@node01 ansible]# ansible-galaxy list -p roles/
下载Roles的方法
使用 ansible-galaxy install
或者编写 requirments.yml
文件(示例以下)
[root@node01 ansible]# cat ~/ansible/roles/requirments.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
- src: http://example.com/myrole.tar
name: myrole
[root@node01 ansible]# ansible-galaxy install -r roles/requirements.yml -p ~/ansible/roles/
读取配置文件
roles/requirements.yml
下载三个role到~/ansible/roles
目录下
(END)
标签:node01,Roles,roles,ansible,Ansible,root,yml,galaxy From: https://www.cnblogs.com/houhuilinblogs/p/17983503