Ansible команд на docker контейнерах? - PullRequest
0 голосов
/ 14 июля 2020

До сих пор у меня были настроены команды ansible -playbook, работающие на AWS экземплярах EC2.

могу ли я запускать обычные ansible команды, такие как (linefile, apt, pip, et c) на контейнере?

могу ли я добавить свой контейнер-ip в файл hosts в группе контейнеров, а затем будет работать тот же код, если я изменю свой файл main.yml, в котором есть

hosts: ec2-group

to

hosts:contaniers-group

все ли команды работают?

Я немного новичок в этом ... пожалуйста, подтвердите мне, что я действительно думаю о создании docker -compose файлов с нуля, и запустите команды docker -compose, используя ansible.

1 Ответ

4 голосов
/ 14 июля 2020

Вы можете , но на самом деле Docker не предназначен для использования.

A Docker контейнер обычно является оберткой вокруг одного обработать. При стандартной настройке вы создаете образ , в котором это приложение собрано и упаковано, и вы можете просто запустить его без какой-либо дополнительной настройки. Обычно неинтересно запускать пустой дистрибутивный контейнер Linux (в котором не установлено приложение) или запускать интерактивную оболочку в качестве основного процесса контейнера. Учебники вроде Docker s Создайте и запустите образ. выполните эту последовательность действий.

Следствием этого является то, что контейнеры обычно не имеют локального состояния. В лучшем случае любое состояние, в котором нуждается контейнер, находится во внешней базе данных; если вы не можете этого сделать, вы сохраняете локальное состояние в томе , который переживает контейнер.

И, наконец, крайне обычным делом является удаление и воссоздание контейнеров. Вам нужно сделать это, чтобы изменить некоторые общие параметры; в кластерной среде, такой как Kubernetes, это может произойти вне вашего контроля. Когда это произойдет, новый контейнер перезапустится, запустив настройку по умолчанию, и он не будет знать о каких-либо ручных изменениях, которые могли быть внесены в предыдущий контейнер.

Таким образом, вы обычно не хотите пытаться устанавливать программное обеспечение непосредственно в работающий контейнер, так как он потеряется, как только контейнер выйдет. В принципе, вы можете получить оболочку в контейнере (через docker exec), но это скорее инструмент отладки, чем инструмент администрирования. Вы можете сделать единственный процесс, который запускается контейнером, как демон s sh, но все, что вы запускаете таким образом, будет потеряно, как только контейнер выйдет (и я никогда не встречал рецепта, который правильно и безопасно настраивал бы учетные данные для доступа it).

Я бы порекомендовал изучить стандартную систему Dockerfile и запускать автономные Docker образы, пытаясь приспособить Ansible к этой довольно другой среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...