Я пытаюсь установить дополнительные пакеты python в контейнер AWX awx_tasks, чтобы изменения могли позволить запускать доступные модули, такие как 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 мог нормально работать?

2
Ankit Vashistha 24 Сен 2018 в 09:48

2 ответа

Лучший ответ

Поскольку я нашел способ сделать это, я поделюсь с вами инструкциями по внесению необходимых изменений.

Версиями пакетов python можно управлять из каталога requirements, изменения, связанные с задачами AWX и веб-изображениями AWX, можно применять в Dockerfile.j2 в каталоге ролей. После применения необходимых изменений мы можем запустить настройку с помощью ansible-playbook install.yml -i inventory.

0
Ankit Vashistha 31 Мар 2020 в 14:06

Вы должны использовать install.yml для перезапуска контейнера awx_task, так как он гарантирует, что установлены правильные переменные среды, сопоставлены правильные тома и т. Д. Та же команда, что вы использовали для установки AWX: ansible-playbook install.yml -i inventory . См. здесь для получения полного списка используемых аргументов.

0
diavol 29 Ноя 2018 в 20:41