3.4. 使用 Ansible 角色捆绑内容
角色就像自定义的自动化内容一样,该角色将相关位从 playbook 中捆绑到一起,以满足您系统的特定需求。角色是自包含且可移植的,可以包含任务、变量、配置模板、处理程序和其他支持文件分组,以编排复杂的自动化流程。
您可以使用角色将任务划分为更小、更分散的工作单元,而不是创建具有数百个任务的大型 playbook。
要了解更多有关角色的信息,请参阅什么是 Ansible 角色,以及如何使用它?
3.4.1. 创建角色
您可以使用 Ansible Galaxy CLI 工具创建角色,该工具包含在 Ansible Automation Platform 捆绑包中。从 role
子命令访问角色特定命令:
ansible-galaxy role init <role_name>
支持集合之外的独立角色。在集合内创建新角色,以利用 Ansible Automation Platform 必须提供的功能。
流程
-
在终端中,前往集合中的
roles
目录。 在集合中创建一个名为
my_role
的角色:$ ansible-galaxy role init my_role
这个集合现在在
roles
目录中包括一个名为my_role
的角色,如下例所示:~/.ansible/collections/ansible_collections/<my_namespace>/<my_collection_name> ... └── roles/ └── my_role/ ├── .travis.yml ├── README.md ├── defaults/ │ └── main.yml ├── files/ ├── handlers/ │ └── main.yml ├── meta/ │ └── main.yml ├── tasks/ │ └── main.yml ├── templates/ ├── tests/ │ ├── inventory │ └── test.yml └── vars/ └── main.yml
可以使用--
role-skeleton 参数提供自定义角色
框架目录。这使得组织能够为新角色创建标准化模板,以满足其需求。$ ansible-galaxy role init my_role --role-skeleton ~/role_skeleton
这会通过将
~/role_skeleton
的内容复制到my_role
来创建名为my_role
的角色。role_skeleton
的内容可以是在角色目录中有效的任何文件或文件夹。