我正在尝试使用ansible定义LV存储池,如下所示。我正在努力确定在定义期间如何检查 .xml.j2 文件中使用的文件。
在这个例子中,有人可以建议如何定义所需的存储池吗?
我是否在考虑使用剧本中对'name: "{{ production_storage_pool }}"'
的引用?两个池都在同一主机上,因此无法进行主机检查。
name: Define Production Storage Pool
virt_pool:
command: define
name: "{{ production_storage_pool }}"
xml: "{{ lookup('template', '../templates/pool.xml.j2') }}"
<pool type='logical'>
{% if HOW TO CHECK FOR "{{ staging_storage_pool }}" %}
<name>{{ staging_storage_pool }}</name>
<source>
<device path='{{ staging_disk }}'/>
<name>{{ staging_volgroup }}</name>
<format type='lvm2'/>
</source>
<target>
<path>/dev/{{ staging_volgroup }}</path>
</target>
{% elif HOW TO CHECK FOR "{{ production_storage_pool }}" %}
<name>{{ production_storage_pool }}</name>
<source>
<device path='{{ production_disk }}'/>
<name>{{ production_volgroup }}</name>
<format type='lvm2'/>
</source>
<target>
<path>/dev/{{ production_volgroup }}</path>
</target>
{% endif % }
</pool>
我目前正在使用两个单独的文件,但我只想使用其中的一张支票等。
答案 0 :(得分:0)
已解决:我在每个剧本中定义了production_pool和staging_pool变量,并在j2模板中使用了“已定义”检查。
vars:
production_pool:
- debug: var=staging_pool
- debug: var=production_pool
name: Define Production Storage Pool
virt_pool:
command: define
name: "{{ production_storage_pool }}"
xml: "{{ lookup('template', '../templates/pool.xml.j2') }}"
<pool type='logical'>
{% if staging_pool is defined %}
<name>{{ staging_storage_pool }}</name>
<source>
<device path='{{ staging_disk }}'/>
<name>{{ staging_volgroup }}</name>
<format type='lvm2'/>
</source>
<target>
<path>/dev/'{{ staging_volgroup }}'</path>
</target>
{% elif production_pool is defined %}
<name>{{ production_storage_pool }}</name>
<source>
<device path='{{ production_disk }}'/>
<name>{{ production_volgroup }}</name>
<format type='lvm2'/>
</source>
<target>
<path>/dev/'{{ production_volgroup }}'</path>
</target>
{% endif % }
</pool>
TASK [debug]
ok: [hostname] => {
"staging_pool": "VARIABLE IS NOT DEFINED!"
}
TASK [debug]
ok: [hostname] => {
"production_pool": null
}