ansible如何将一个组变量传递给另外一组
时间: 2024-09-24 22:15:05 浏览: 33
Ansible-palybook之变量
在Ansible中,你可以通过几个不同的方式将一个组(Group)变量传递给另一个组。这通常发生在你希望共享数据或设置,而不想在每个单独的任务中硬编码的情况下。以下是几种常见的方法:
1. **使用包含(Inheritance)**:
如果你想在多个playbooks中复用变量,可以在较高级别的 playbook(被称为父playbook)中定义变量,并在一个或多个子playbook(被称为子playbooks)中引用它。在子playbook中,通过`extends`关键字导入父playbook,并自动继承了其中的变量。
```yaml
# parent_playbook.yml
vars:
shared_variable: "value"
# child_playbook.yml
extends: ../parent_playbook.yml
hosts: another_group
tasks:
- debug: msg="Shared variable from parent playbook: {{ shared_variable }}"
```
2. **利用共享文件(Variable Files)**:
可以创建一个独立的YAML或JSON文件作为变量库,然后在各个playbook中`include`引用。这样,只要修改了变量文件,所有依赖它的playbook都会更新变量。
```yaml
# common_vars.yml
shared_variable: "value"
# playbooks
tasks:
- include_vars: common_vars.yml
when: hostvars[inventory_hostname].in_groups('group1')
- debug: msg="Shared variable: {{ shared_variable }}"
```
3. **使用Inventory Group Variables**:
直接在inventory中为组分配变量。当某个主机属于那个组时,它们会继承这些组变量。只需在inventory文件中为相关组定义变量即可。
```ini
[group1]
hostA
hostB
[group1:vars]
shared_variable: value
```
在这个例子中,`hostA` 和 `hostB` 都能访问到`shared_variable`。
阅读全文