5

我将 env 变量传递给 ansible playbook 中的 Docker 容器,如何在 env 的键/值中的键中设置 Ansible 变量?

所以这:

- 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"
4

2 回答 2

12

使用 JSON 表示法定义带有环境变量的字典:

- name: webproxy container
  docker_container:
    name: "webproxy"
    image: "webproxy"
    env: '{ "SERVICE_{{ port_number }}_NAME": "webproxy" }' 
于 2017-11-08T13:09:14.433 回答
-1

这个答案是替代的,我希望这对你有帮助。

主要的.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"
于 2017-11-08T06:47:35.070 回答