使用Ansible设置Docker容器

时间:2019-04-23 11:50:07

标签: python docker ansible

我正在尝试使用现有的docker剧本通过ubuntu 18.04进行docker容器的本地开发。

我无法在容器上运行剧本,因为它没有安装python,所以据我所知ansible无法运行。

有没有办法在容器上安装python,以便我的剧本可以运行?

请注意,我知道ansible-container存在,但我想使用现有的剧本,这些剧本使用{_3}}

上的规定,但变得变得不可用。

3 个答案:

答案 0 :(得分:0)

我不知道你能做到这一点。

- name: Create container
  docker_container:
    name: docker-test
    image: ubuntu:18.04
    command: sleep 1d
- name: Install python on docker
  delegate_to: docker-test
  raw: apt -y update && apt install -y python-minimal

答案 1 :(得分:0)

我认为您可能最有意义的是在创建映像时在Dockerfile中安装Python和其他工具。或者,您可以选择已安装python的Docker映像,例如将其用作Dockerfile中的FROM行:

FROM python

这样,您每次启动容器时都不必运行Ansible任务来安装Python,它将在构建映像后即开始构建。

答案 2 :(得分:0)

您需要将Docker容器添加到ansible库存中,然后才能将其定位在剧本中。这样的事情会起作用:

---
- hosts: localhost
  gather_facts: false

  tasks:
    - name: create container
      docker_container:
        name: ansible-test
        image: ubuntu:bionic
        command: bash
        detach: true
        interactive: true
        tty: true

    - name: add docker container to inventory
      add_host:
        name: ansible-test
        ansible_connection: docker

- hosts: ansible-test
  gather_facts: false
  tasks:

    - name: update apt cache
      delegate_to: ansible-test
      raw: apt -y update

    - name: install python
      delegate_to: ansible-test
      raw: apt -y install python-minimal

    - name: demonstrate that normal ansible modules work
      file:
        path: /etc/testdir
        state: directory

请注意,尽管这行得通,但它并不是一个非常好的模型:您通常不需要在运行时在容器中执行配置任务;您要在构建时配置图像