通过Docker运行Ansible时,最优雅的方式来处理ANSIBLE_VAULT_PASSWORD_FILE?

时间:2018-01-31 21:03:05

标签: docker ansible containers

我正在努力将我们运行Ansible playbooks作为我们持续集成管道的一部分。今天我们安装了安装了Ansible的专用构建服务器,但我想用Docker将其抽象出来。我想要解决的是如何在从容器运行时处理Ansible Vault的秘密。

在构建服务器上,我们有一个文件,其中包含described in the docs保险柜密码,其中ANSIBLE_VAULT_PASSWORD_FILE环境文件指向它。在Dockerfile中处理此文件以使其通用的最优雅方法是什么?

我目前的草稿如下:

FROM ansible/ansible:ubuntu1604

ENV ANSIBLE_HOST_KEY_CHECKING false
ENV ANSIBLE_VAULT_PASSWORD_FILE ~/vault.txt

WORKDIR /var/AnsiblePlaybooks

RUN pip install \
    ansible \
    pywinrm  \
    pysphere \
    pyvmomi \
    kazoo

ENTRYPOINT ["ansible-playbook"]
CMD ["--version"]

我计划通过诸如卷容器之类的内容传递playbooks,并在运行时覆盖CMD来运行它。 所以我这里唯一的例子是如何使用ANSIBLE_VAULT_PASSWORD_FILE文件?我可以从一个"秘密"写它的运行时间。像Docker或Kubernetes Secrets这样的变量,但我不确定如何最优雅地完成这项任务。

1 个答案:

答案 0 :(得分:1)

version: '3.4'
services:
  ansible:
    image: myansibleimage
    environment:
      ANSIBLE_VAULT_PASSWORD_FILE: /vault/YOUR_VAULT_FILENAME
    volumes:
      - /path/on/host/of/vault/dir:/vault