我正在努力将我们运行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这样的变量,但我不确定如何最优雅地完成这项任务。
答案 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