我正在尝试使用现有的docker剧本通过ubuntu 18.04进行docker容器的本地开发。
我无法在容器上运行剧本,因为它没有安装python,所以据我所知ansible无法运行。
有没有办法在容器上安装python,以便我的剧本可以运行?
请注意,我知道ansible-container存在,但我想使用现有的剧本,这些剧本使用{_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
请注意,尽管这行得通,但它并不是一个非常好的模型:您通常不需要在运行时在容器中执行配置任务;您要在构建时配置图像。