set_factをansibleロールのvarsに置き換える

set_factをansibleロールのvarsに置き換える

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 %}'

ただし、変数の数やホストの数が多いと読みにくくなります。

おすすめ記事