首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为不同主机设置访问不同变量的条件

为不同主机设置访问不同变量的条件
EN

Stack Overflow用户
提问于 2019-03-31 07:12:35
回答 1查看 60关注 0票数 0

我的/ansible/hosts文件中当前配置了两个主机。但是,我希望这两个主机具有两个不同的变量,但使用相同的jinja2模板来访问它。如何应用条件语句?

My ./var/main.yaml如下所示:

代码语言:javascript
复制
---
- name: Variables for R1
  when: "{{ ansible_host }}" == '198.51.100.4'
  routers_all:
    - {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '1', hostname: R1}
  int_details_R1:
    - {int: Loopback1, ip: 10.0.0.1, mask: 255.255.255.255}
    - {int: FastEthernet0/0, ip: 198.51.100.3, mask: 255.255.255.0}
    - {int: FastEthernet1/0, ip: 198.51.101.3, mask: 255.255.255.0}
    - {int: FastEthernet2/0, ip: 198.51.102.3, mask: 255.255.255.0}

- name: Variables for R2
  when: "{{ ansible_host }}" == '198.51.100.5'
  routers_all:
    - {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '2', hostname: R2}
  int_details_R2:
    - {int: Loopback1, ip: 20.0.0.1, mask: 255.255.255.255}
    - {int: FastEthernet0/0, ip: 198.51.100.4, mask: 255.255.255.0}
    - {int: FastEthernet1/0, ip: 198.51.101.4, mask: 255.255.255.0}

文件结构-

代码语言:javascript
复制
automation@automation:~/lab8/ANSIBLE/RTR-TEMPLATE$ tree
.
├── ospf.yaml
└── roles
    └── router
        ├── tasks
        │   └── main.yaml
        ├── templates
        │   └── router.j2
        └── vars
            └── main.yaml
EN

回答 1

Stack Overflow用户

发布于 2019-03-31 17:39:57

使用host_vars。创建目录~/lab8/ANSIBLE/RTR-TEMPLATE/host_vars,并使用特定于主机的变量创建文件。

~/lab8/ANSIBLE/RTR-TEMPLATE/host_vars/198.51.100.4

代码语言:javascript
复制
routers_all:
  - {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '1', hostname: R1}
int_details_R1:
  - {int: Loopback1, ip: 10.0.0.1, mask: 255.255.255.255}
  - {int: FastEthernet0/0, ip: 198.51.100.3, mask: 255.255.255.0}
  - {int: FastEthernet1/0, ip: 198.51.101.3, mask: 255.255.255.0}
  - {int: FastEthernet2/0, ip: 198.51.102.3, mask: 255.255.255.0}

~/lab8/ANSIBLE/RTR-TEMPLATE/host_vars/198.51.100.5

代码语言:javascript
复制
routers_all:
  - {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '2', hostname: R2}
int_details_R2:
  - {int: Loopback1, ip: 20.0.0.1, mask: 255.255.255.255}
  - {int: FastEthernet0/0, ip: 198.51.100.4, mask: 255.255.255.0}
  - {int: FastEthernet1/0, ip: 198.51.101.4, mask: 255.255.255.0}

这些变量将由"default vars plugin“添加,如Variable precedence: Where should I put a variable?中所述

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55436471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档