Ansible переменная в ключе/значении

Я передаю переменные env в контейнер Docker в ansible playbook, как мне установить переменную Ansible в ключе в ключе/значении env?

Итак, это:

- name: webproxy container
  docker_container:
    name: "webproxy"
    image: "webproxy"
    env:
      SERVICE_443_NAME: "webproxy"

становится таким:

- name: webproxy container
  docker_container:
    name: "webproxy"
    image: "webproxy"
    env:
      SERVICE_{{ port_number }}_NAME: "webproxy"

person Alex Laverty    schedule 08.11.2017    source источник


Ответы (2)


Используйте нотацию JSON для определения словаря с переменными среды:

- name: webproxy container
  docker_container:
    name: "webproxy"
    image: "webproxy"
    env: '{ "SERVICE_{{ port_number }}_NAME": "webproxy" }' 
person techraf    schedule 08.11.2017

Этот ответ является альтернативным, я надеюсь, что это поможет вам.

main.yml

---
- name: test
  hosts: localhost
  vars:
    port_number: 443

  pre_tasks:
    - name: make the playbook from template
      template:
        src: /path/to/webproxy.j2
        dest: /path/to/webproxy_vars.yml

  tasks:
    - include_vars: /path/to/webproxy_vars.yml
    - name: webproxy container dummy
      shell: echo $SERVICE_{{ port_number }}_NAME
      environment: "{{ env }}"

webproxy.j2, он размещен в том же каталоге, что и main.yml

---
env:
  SERVICE_{{ port_number }}_NAME: "webproxy"
person Daein Park    schedule 08.11.2017