带有ansible的j2模板中对LV存储池的有效检查是什么?

时间:2018-10-17 11:04:08

标签: ansible jinja2

我正在尝试使用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>

我目前正在使用两个单独的文件,但我只想使用其中的一张支票等。

1 个答案:

答案 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
}