一、基础知识
1. 角色介绍
1.角色(roles) 用于层次性,结构化地组织playbook。简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。 角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中。
2.角色的优点:
- 角色可以分组内容,从而与他人轻松共享代码
- 可以编写角色来定义系统类型的基本要素:Web服务器、数据库服务器、Git存储库,或满足其他用途
- 角色使得较大型项目更容易管理
- 角色可以由不同的管理员并行开发
3.ansible 角色会把不同功能的 playbook 分开,一个标准的角色含有下列子目录:
(1)defaults:其中的 main.yml 包含角色变量的默认值。在所有变量中优先级最低
(2)files:包含角色任务引用的静态文件
(3)handlers:主要定义处理程序
(4)meta:角色相关信息,如作者、许可证等
(5)tasks:定义任务
(6)templates:任务引用的 jinja2 模板
(7)tests:可以包含清单和 test.yml 的 playbook,用于测试
(8)vars:定义角色的变量
2. 使用角色
---
- hosts: www.example.com
roles:
- role1
- role2
var: val1
var: val2
#为role2定义了两个变量,任何 defaults 和 vars 中的变量都会被覆
盖
有时需要在角色之前或之后执行一些任务,这是就需要使用到关键字:
pre_tasks #角色之前
post_tasks #角色之后
二、利用系统角色重用内容
- 安装系统角色:dnf install -y rhel-system-roles
- 查看安装好的角色位置:ls -l /usr/share/ansible/roles
[root@localhost ~]# ls -l /usr/share/ansible/roles/
total 0
lrwxrwxrwx 1 root root 23 Dec 11 2019 linux-system-roles.kdump -> rhel-system-roles.kdump
lrwxrwxrwx 1 root root 25 Dec 11 2019 linux-system-roles.network -> rhel-system-roles.network
lrwxrwxrwx 1 root root 25 D