ansible中的角色使用

本文介绍Ansible中的Roles概念,包括其目录结构、如何在Playbook中使用Roles以及控制任务执行顺序的方法。此外还介绍了Ansible Galaxy网站及其命令工具的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ansible roles

#ansible 角色简介# * Ansible roles 是为了层次化,结构化的组织Playbook

  • roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们
  • roles一般用于基于主机构建服务的场景中,在企业复杂业务场景中应用的频率很高
  • 以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;相当于函数的调用把各个功能切割
    成片段来执行。

2.roles目录结构

files ##存放copy或script等模块调用的函数
tasks ##定义各种task,要有main.yml,其他文件include包含调用
handlers ##定义各种handlers,要有main.yml,其他文件include包含调用
vars ##定义variables,要有main.yml,其他文件include包含调用
templates ##存储由template模块调用的模板文本
meta ##定义当前角色的特殊设定及其依赖关系,要有main.yml的文件 defaults##要有main.yml的文
件,用于设定默认变量
tests ##用于测试角色
#role存放的路径在配置文件ansible.cfg中定义#
roles_path = path/roles (默认目录:/etc/ansible/roles) #创建目录结构#
$ ansible-galaxy init apache
$ ansible-galaxy list


3.playbook中使用roles

playbook中使用roles:

---
- hosts: server2
 roles:
 - role: role1
- role: role2
 var1: value1 ##此处变量会覆盖roles中的定义变量

4.控制任务执行顺序

---
- hosts: server2
 roles:
 - role: role1 ##角色任务
 pre_tasks: ##角色执行前执行的play
 - tasks1
 tasks: ##普通任务
 - tasks2
 post_tasks: ##在角色和普通任务执行完毕后执行的play
 - tasks3
 handlers:

5.ansible—galaxy命令工具

  • Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles。 * ansible-galaxy命令默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的 Ansible 角色
  • ansible-galaxy在 Ansible 1.4.2 就已经被包含了
  • 在galaxy.ansible.com网站查询roles

安装选择的角色

#install https://galaxy.ansible.com roles
$ansible-galaxy install geerlingguy.nginx
#install local roles
$ vim install_apache_role.yml
---
- src: file:///mnt/apache.tar.gz
 name: apache
$ ansible-galaxy install -r install_apache_role.yml


### 创建和使用 Ansible 角色 #### 定义角色路径 为了管理多个项目中的角色Ansible 使用 `roles_path` 变量定义角色存储的位置。此变量包含一系列由冒号分隔的目录路径,在这些路径下寻找所需的角色[^2]。 ```bash [root@localhost ~]# grep roles_path /etc/ansible/ansible.cfg roles_path = ~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles ``` 当执行带有角色的任务时,如果当前工作目录未发现指定角色,则依次检查上述路径下的子文件夹以定位目标角色。 #### 初始化新角色 通过命令行工具 `ansible-galaxy role init <role_name>` 能够快速搭建一个新的角色框架。这会在本地创建一个遵循官方推荐布局的标准结构化文件夹: ```shell $ ansible-galaxy role init my_role - Role my_role was created successfully. ``` 生成后的角色通常具有如下层次化的内部架构: - **defaults/**: 存储默认变量设定; - **files/**: 放置待传输至远程节点上的静态资源; - **handlers/**: 编写响应事件触发器逻辑; - **meta/**: 描述元数据信息以及依赖关系; - **tasks/**: 实现核心操作流程; - **templates/**: 提供 Jinja2 模板支持; - **tests/**: 配备测试案例集; - **vars/**: 设定固定不变的重要参数; #### 应用已有的角色 一旦准备好了可重用的角色模块之后,就可以在 playbook 文件里调用了。只需简单声明即可引入并应用整个角色的功能集合: ```yaml --- - hosts: all become: yes roles: - { role: 'my_role', tags: ['install'] } ``` 这段 YAML 片段表示针对所有主机运行具备特权提升权限(`become`)的情况下加载名为 `'my_role'` 的角色,并打上标签方便过滤执行特定部分的内容。 #### 查看现有角色列表 利用内置指令 `ansible-galaxy list` 即刻浏览当前环境内已经安装好的各类角色详情: ```shell $ ansible-galaxy list - my_role, v0.1.0 (/home/user/.ansible/roles/my_role) ... ``` 以上就是关于如何在 Ansible 中创建和运用角色的相关介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值