如何在定义链接var时在Ansible中使用Docker链接

时间:2017-07-08 02:50:37

标签: docker ansible

我想要启动容器(在任务中)的playbook,如果在变量中提供链接,则只将其链接到另一个容器。例如:

- name: Start container
  docker_container:
    image: somerepo/app-server:{{ var_tag }}
    name: odoo-server
    state: started
    log_opt: "tag=app-server-{{ var_tag }}"
    expose:
      - 8080
    links:
      - "{{ var_db_link }}"
        when: var_db_link is defined

但当然这不起作用。 (我知道没有值的-无效〜这只是伪代码)

整个任务实际上要大得多,因为它包含其他指令,所以我真的没有定义2个版本的任务,一个用于从一个链接开始而另一个没有。

1 个答案:

答案 0 :(得分:1)

当使用' - '时,表示有一定的价值,所以我有办法避免它。

---
- hosts: localhost
  tasks:
    - name: Start container
      docker_container:
        image: centos 
        name: odoo-server
        state: started
        expose:
          - 8080
        links: "{{ var_db_link | default([]) }}"

然后测试它使用

ansible-playbook  ha.yml -e var_db_link="redis-master:centos"
ansible-playbook  ha.yml

它正常运行!