如何启用 AWX 容器中的更改?
How to enable changes in AWX Containers?
我正在尝试在 AWX 容器 awx_tasks
中安装额外的 python 包,以便这些更改可以启用像 snow
、ec2_elb_facts
[=54= 这样的 ansible 模块](具有 Python 模块的先决条件)。我使用以下方法对容器进行了更改:
# docker exec -it 80ab6bf562a9 bash
其中 80ab6bf562a9
是 awx_task
容器的容器 ID。
然后在自定义虚拟环境中安装所需的包(如 AWX documentation 中所述)。 Post 这个,我已经通过使用容器更改创建一个新图像来使更改永久化:
# docker commit 80ab6bf562a9 ansible/awx_task:latest
Post这个,运行下面的命令将新容器映射到新创建的容器变化的镜像中。
# docker run --name awx_task -d 5290f9b3268c
以下是容器 post 以上变化。在这里,新创建的容器与新图像映射并改变了现有容器是968fb2a7da2f
。
# docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
968fb2a7da2f 5290f9b3268c "/tini -- /bin/sh -c…" 2 days ago Exited (143) 2 days ago awx_task
80ab6bf562a9 535bb2b8e1f3 "/tini -- /bin/sh -c…" 3 weeks ago Up 2 days 8052/tcp awx_task_OLD
aea2551951d5 b7c261b76010 "/tini -- /bin/sh -c…" 3 weeks ago Up 2 days 0.0.0.0:80->8052/tcp awx_web
e789a4a82a9e memcached:alpine "docker-entrypoint.s…" 3 weeks ago Up 2 days 11211/tcp memcached
a8c74584255c ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s…" 3 weeks ago Up 2 days 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp rabbitmq
25f6f6ca7766 postgres:9.6 "docker-entrypoint.s…" 3 weeks ago Up 2 days 5432/tcp postgres
以下是我的图片 post 以上改动。在这里,新创建的图像(有变化)是 5290f9b3268c
.
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ansible/awx_task latest 5290f9b3268c 2 days ago 1.48GB
postgres 9.6 106bdfb062df 8 weeks ago 235MB
ansible/awx_task <none> 535bb2b8e1f3 8 weeks ago 1.07GB
ansible/awx_web <none> b7c261b76010 8 weeks ago 1.04GB
hello-world latest 2cb0d9787c4d 2 months ago 1.85kB
memcached alpine b40e8fa7e3e5 2 months ago 8.69MB
ansible/awx_rabbitmq 3.7.4 e08fe791079e 6 months ago 85.6MB
新容器已正确映射到新图像(已得到我想要的更改)。现在的问题是,当我停止旧容器并启动新容器时,AWX 不起作用。我只能查看 UI,如果我 运行 执行模板等任何任务,它就会冻结。看起来新的 container/images 并没有与 awx_rabbitmq
、postgres
等其他容器通信。我已经阅读了多个关于此的 posts 但是,我不能找到任何突出显示与此相关的任何内容的 post。
我基本上希望 awx_task
容器中的更改起作用,以便我可以实现使自定义模块起作用的目标。任何人都可以建议可以做什么,以便新的 awx_task
容器可以取代旧的 awx_task 的角色并且 AWX 可以正常工作吗?
您应该使用 install.yml 重新启动 awx_task 容器,因为它确保设置了正确的环境变量,映射了正确的卷等。与您使用的命令相同安装 AWX:
ansible-playbook install.yml -i inventory
。
有关使用的参数的完整列表,请参阅 here。
既然我找到了这样做的方法,我将分享进行所需更改的步骤。
python 包版本可以从 requirements
目录控制,AWX 任务和 AWX Web 图像相关的更改可以在角色目录的 Dockerfile.j2
中应用。应用所需的更改后,我们可以使用 ansible-playbook install.yml -i inventory
.
运行 设置
我正在尝试在 AWX 容器 awx_tasks
中安装额外的 python 包,以便这些更改可以启用像 snow
、ec2_elb_facts
[=54= 这样的 ansible 模块](具有 Python 模块的先决条件)。我使用以下方法对容器进行了更改:
# docker exec -it 80ab6bf562a9 bash
其中 80ab6bf562a9
是 awx_task
容器的容器 ID。
然后在自定义虚拟环境中安装所需的包(如 AWX documentation 中所述)。 Post 这个,我已经通过使用容器更改创建一个新图像来使更改永久化:
# docker commit 80ab6bf562a9 ansible/awx_task:latest
Post这个,运行下面的命令将新容器映射到新创建的容器变化的镜像中。
# docker run --name awx_task -d 5290f9b3268c
以下是容器 post 以上变化。在这里,新创建的容器与新图像映射并改变了现有容器是968fb2a7da2f
。
# docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
968fb2a7da2f 5290f9b3268c "/tini -- /bin/sh -c…" 2 days ago Exited (143) 2 days ago awx_task
80ab6bf562a9 535bb2b8e1f3 "/tini -- /bin/sh -c…" 3 weeks ago Up 2 days 8052/tcp awx_task_OLD
aea2551951d5 b7c261b76010 "/tini -- /bin/sh -c…" 3 weeks ago Up 2 days 0.0.0.0:80->8052/tcp awx_web
e789a4a82a9e memcached:alpine "docker-entrypoint.s…" 3 weeks ago Up 2 days 11211/tcp memcached
a8c74584255c ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s…" 3 weeks ago Up 2 days 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp rabbitmq
25f6f6ca7766 postgres:9.6 "docker-entrypoint.s…" 3 weeks ago Up 2 days 5432/tcp postgres
以下是我的图片 post 以上改动。在这里,新创建的图像(有变化)是 5290f9b3268c
.
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ansible/awx_task latest 5290f9b3268c 2 days ago 1.48GB
postgres 9.6 106bdfb062df 8 weeks ago 235MB
ansible/awx_task <none> 535bb2b8e1f3 8 weeks ago 1.07GB
ansible/awx_web <none> b7c261b76010 8 weeks ago 1.04GB
hello-world latest 2cb0d9787c4d 2 months ago 1.85kB
memcached alpine b40e8fa7e3e5 2 months ago 8.69MB
ansible/awx_rabbitmq 3.7.4 e08fe791079e 6 months ago 85.6MB
新容器已正确映射到新图像(已得到我想要的更改)。现在的问题是,当我停止旧容器并启动新容器时,AWX 不起作用。我只能查看 UI,如果我 运行 执行模板等任何任务,它就会冻结。看起来新的 container/images 并没有与 awx_rabbitmq
、postgres
等其他容器通信。我已经阅读了多个关于此的 posts 但是,我不能找到任何突出显示与此相关的任何内容的 post。
我基本上希望 awx_task
容器中的更改起作用,以便我可以实现使自定义模块起作用的目标。任何人都可以建议可以做什么,以便新的 awx_task
容器可以取代旧的 awx_task 的角色并且 AWX 可以正常工作吗?
您应该使用 install.yml 重新启动 awx_task 容器,因为它确保设置了正确的环境变量,映射了正确的卷等。与您使用的命令相同安装 AWX:
ansible-playbook install.yml -i inventory
。
有关使用的参数的完整列表,请参阅 here。
既然我找到了这样做的方法,我将分享进行所需更改的步骤。
python 包版本可以从 requirements
目录控制,AWX 任务和 AWX Web 图像相关的更改可以在角色目录的 Dockerfile.j2
中应用。应用所需的更改后,我们可以使用 ansible-playbook install.yml -i inventory
.