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 %}'
ただし、変数の数やホストの数が多いと読みにくくなります。