Как включить изменения в контейнерах AWX?
Я пытаюсь установить дополнительные пакеты Python в контейнере AWX awx_tasks
так, чтобы изменения могли включить такие ANSI-модули, как snow
, ec2_elb_facts
запустить (которые имеют предварительные условия в качестве модулей Python). Я сделал изменения в контейнере, используя:
# docker exec -it 80ab6bf562a9 bash
где 80ab6bf562a9
это идентификатор контейнера для awx_task
контейнер.
и затем установил необходимые пакеты в пользовательской виртуальной среде (как указано в документации AWX). После этого я сделал изменения постоянными, создав новое изображение с изменениями контейнера, используя:
# docker commit 80ab6bf562a9 ansible/awx_task:latest
После этого выполните следующую команду, чтобы сопоставить новый контейнер с вновь созданным изображением с изменениями контейнера.
# docker run --name awx_task -d 5290f9b3268c
Ниже приведены контейнеры, которые публикуют вышеуказанные изменения. Здесь вновь созданный контейнер, который был сопоставлен с новым изображением с изменениями в существующем контейнере, 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
Ниже приведены мои изображения пост выше изменений. Здесь вновь созданное изображение (с изменениями) 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 не работает. Я могу просто просмотреть пользовательский интерфейс, если я запускаю какие-либо задачи, такие как выполнение шаблонов, он просто зависает. Похоже, что новый контейнер / изображения не разговаривают с другими контейнерами, такими как awx_rabbitmq
, postgres
и т.д. Я читал несколько постов по этому поводу, однако я не смог найти ни одного поста, который бы освещал что-либо по этому поводу.
Я в основном хочу изменения в awx_task
Контейнер для работы, чтобы я мог достичь цели заставить работать пользовательские модули. Может ли кто-нибудь подсказать, что можно сделать, чтобы новый awx_task
Контейнер может взять на себя роль более старой awx_task и AWX может работать нормально?
1 ответ
Поскольку я нашел способ сделать это, я поделюсь с вами инструкциями по внесению необходимых изменений.
Версиями пакета python можно управлять из requirements
каталог, изменения, связанные с задачами AWX и веб-изображениями AWX, можно применить в Dockerfile.j2
в каталоге ролей. После применения необходимых изменений мы можем запустить настройку, используяansible-playbook install.yml -i inventory
.
Вы должны использовать install.yml для перезапуска контейнера awx_task, так как он гарантирует, что установлены правильные переменные среды, сопоставлены правильные тома и т. Д. Та же команда, что вы использовали для установки AWX: ansible-playbook install.yml -i inventory
, Смотрите здесь полный список используемых аргументов.