描述角色结构
1.利用角色构造ansible playbook
角色(roles)是指某一段写好的通用的playbook代码。
-
通用简单角色:所有的角色,不管在哪里做都是一样的,不会发生改变。
-
不通用的用户数据、项目数据、业务数据,是针对不同用户,项目和业务的。
Ansible角色提供了一种方法,让用户能以通用的方式更加轻松地重复利用Ansible代码。我们可以在标准化目录结构中打包所有任务、变量、文件、模板,以及调配基础架构或部署应用所需的其他资源。只需通过复制相关的目录,将角色从一个项目复制到另一个项目。然后,只需从一个play调用该角色就能执行它。
Ansible角色具有下列优点:
- 角色可以分组内容,从而与他人轻松共享代码
- 可以编写角色来定义系统类型的基本要素:Web服务器、数据库服务器、Git存储库,或满足其他用途
- 角色使得较大型项目更容易管理
- 角色可以由不同的管理员并行开发
注意:除了自行编写、使用、重用和共享角色外,还可以从其他来源获取角色。
一些角色已包含在rhel-system-roles软件包中,用户也可以从Ansible Galaxy网站获取由社区提供支持的许多角色。
安装rhel-system-roles,就会出现写好的角色
[root@ansible ~]# ls /usr/share/ansible/roles/
[root@ansible ~]# dnf -y -q install rhel-system-roles
[root@ansible ~]# ls /usr/share/ansible/roles/
linux-system-roles.kdump rhel-system-roles.kdump //系统崩溃时用来转储内存运行参数的服务
linux-system-roles.network rhel-system-roles.network //网络
linux-system-roles.postfix rhel-system-roles.postfix //服务
linux-system-roles.selinux rhel-system-roles.selinux //Linux内核模块,一个安全子系统。
linux-system-roles.storage rhel-system-roles.storage //存储
linux-system-roles.timesync rhel-system-roles.timesync //时间
2.检查ansible角色结构
Ansible角色由子目录和文件的标准化结构定义。顶级目录定义角色本身的名称。
文件整理到子目录中,子目录按照各个文件在角色中的用途进行命名。
创建新的环境目录
[root@ansible roles]# pwd
/root/test/roles
[root@ansible roles]# ansible-galaxy init my_role
- Role my_role was created successfully //我的角色被成功地塑造了
[root@ansible roles]# ll my_role/
total 4
drwxr-xr-x 2 root root 22 Sep 15 23:39 defaults
drwxr-xr-x 2 root root 6 Sep 15 23:39 files
drwxr-xr-x 2 root root 22 Sep 15 23:39 handlers
drwxr-xr-x 2 root root 22 Sep 15 23:39 meta
-rw-r--r-- 1 root root 1328 Sep 15 23:39 README.md
drwxr-xr-x 2 root root 22 Sep 15 23:39 tasks
drwxr-xr-x 2 root root 6 Sep 15 23:39 templates
drwxr-xr-x 2 root root 39 Sep 15 23:39 tests