【问题标题】:Run ansible-playbook from code/command line connecting to docker container从连接到 docker 容器的代码/命令行运行 ansible-playbook
【发布时间】:2017-12-20 18:38:38
【问题描述】:

我正在使用这个:

Specify docker containers in /etc/ansible/hosts file

针对 docker 容器运行我的 ansible playbook。

但是有什么方法可以避免包含有关容器信息的物理/etc/ansible/hosts 文件?例如。从可以配置此信息的代码中运行它?

我看了:

Running ansible-playbook using Python API

但在查看答案时,我看到变量指向物理文件,例如:

inventory = Inventory(loader=loader, sources='/home/slotlocker/hosts2')
playbook_path = '/home/slotlocker/ls.yml'

所以不太清楚为什么这比不使用 Python ansible API 直接从命令行调用要好。

【问题讨论】:

  • 查看此链接:serversforhackers.com/c/running-ansible-2-programmatically。它使用“NamedTemporaryFile”来制作新的库存文件。
  • 为什么要针对正在运行的 docker 容器运行 ansible playbook?你想完成什么?
  • 为了能够更快地测试我的剧本,例如更快地恢复目标机器/容器

标签: python ansible


【解决方案1】:

可以在 Docker 容器中安装 Ansible,然后在容器中本地运行它。例如在 Dockerfile 中,包括:

# Install Ansible
RUN pip install ansible
COPY ansible /tmp/ansible
# Run Ansible to configure the machine
RUN cd /tmp/ansible && ansible-playbook -i inventory/docker example_playbook.yml

【讨论】:

    猜你喜欢
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多