Ansible 플레이북이 있습니다. 사실 없이 역할을 바꿔야 합니다. role/default/main.yml에 사용되는 변수에 대해 이 코드를 어떻게 다시 작성할 수 있습니까?
감사해요
---
- name: test my group
hosts: my-group
tasks:
- name: test1 fact set
set_fact:
var1: 2
var2: 3
when: hostname is test1
- name: test2 fact set
set_fact:
var1: 3
var2: 3
when: hostname is test2
- debug: var="var1 + var2"
답변1
호스트별 변수를 설정하려면 host_vars
플레이북이나 매니페스트에 인접한 디렉터리에 있는 호스트 이름을 딴 파일에서 설정할 수 있습니다. 예를 들어 다음 레이아웃이 제공됩니다.
.
├── host_vars
│ ├── test1.yaml
│ └── test2.yaml
└── roles
└── myrole
├── defaults
│ └── main.yaml
└── tasks
└── main.yaml
그러면 정의된 변수가 호스트 등 host_vars/test1.yaml
으로 설정됩니다 .test1
그렇지 않은 경우 호스트별 변수를 설정하는 유일한 방법은 질문에 표시된 조건 set_fact
과 같은 include_vars
작업을 사용하는 것입니다.when
defaults/main.yaml
역할 파일에서 이 작업을 꼭 수행해야 하는 경우 다음을 수행할 수 있습니다.
var1: '{% if inventory_hostname == "test1" %}2{% else %}3{% endif %}'
그러나 변수의 개수나 호스트의 개수가 많으면 읽기가 어렵습니다.