Ansible: условная переменная docker env - PullRequest
0 голосов
/ 14 февраля 2019

Возможно, я подхожу к этому неправильно.Я только начал с Ansible, и не смог решить эту проблему в последнее время:

Итак, это фрагмент того, что я пытаюсь сделать:

vars:
    var1: "true"
    var2: "false"
    var3: "true"


  tasks:
  - name: my-name
    docker_container:
      name: my-name
      image: image/image
      state: started
      cap_drop: all
      pull: yes
      recreate: yes
      restart_policy: always
      env:
        env1: "value"
        env2: "value"
        env3: "value"

Таким образом, идея состоит в том, чтобы установить для var1 значение var3 равным «true» или «false», а затем установить значение env1 в env3 в зависимости от переменных.

Так, например:

Если var1 имеет значение true, env1 должен содержать «некоторое значение».Но если var1 имеет значение false, env1 должен содержать «другое значение».

Я бы также использовал AWX и изменил значение переменных на «SURVEYS».

Я открыт для другихпредложения, конечно.Как вы, ребята, решите это?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Не загромождайте свой код с помощью set_facts, вы можете использовать фильтр Jinja2 if expression или ternary:

  - name: my-name
    docker_container:
      name: my-name
      image: image/image
      state: started
      cap_drop: all
      pull: yes
      recreate: yes
      restart_policy: always
      env:
        env1: "{{ 'some value' if not var1 else 'another value' }}"
        env2: "{{ var2 | ternary('some value', 'another value') }}"
0 голосов
/ 14 февраля 2019

Установите значение по умолчанию для всех переменных среды и используйте set_facts, чтобы установить / изменить значение в соответствии с условием.

Ниже приведен пример кода:

vars:
    var1: "true"
    var2: "false"
    var3: "true"
    envValue1: "some value"
    envValue2: "some value"
    envValue3: "some value"

  tasks:
  - set_fact:
      envValue1: "another value"
    when: "{{var1}}" != "true"

  - set_fact:
      envValue2: "another value"
    when: "{{var2}}" != "true"

  - set_fact:
      envValue3: "another value"
    when: "{{var3}}" != "true"

  - name: my-name
    docker_container:
      name: my-name
      image: image/image
      state: started
      cap_drop: all
      pull: yes
      recreate: yes
      restart_policy: always
      env:
        env1: "{{envValue1}}"
        env2: "{{envValue2}}"
        env3: "{{envValue3}}"
...