Выполнить Ansible над Docker против виртуальной машины - PullRequest
0 голосов
/ 04 апреля 2020

Я хочу создать тестовую среду для ansible -playbook с моего кластера серверов P C на Linux, который устанавливает на него ELK, учитывая, запускать ли его в контейнере или на виртуальной машине.

Очевидно, что использование docker должно упростить и ускорить процесс, но я думаю, что в этой топике есть большая глубина c, помимо общего обсуждения выбора Docker против VM , сосредоточив внимание на Ansible развертываниях, связанных с хранением, сетью и управлением привилегиями

Каковы соображения для запуска Ansible развертываний в Docker контейнере против виртуальной машины?

1 Ответ

4 голосов
/ 04 апреля 2020

Я бы почти никогда не нацелился на Ansible против контейнера Docker. Модель

Ansible гораздо больше подходит для нацеливания на ВМ. Если у вас есть игровая книга Ansible, предназначенная для физической системы или экземпляра облака, виртуальная машина будет хорошим зеркалом ожидаемой среды операционной системы, но настройка Docker будет совсем другой.

Ansible обычно планирует установить соединение s sh с целевым хостом, запустить установленный там Python, и его изменения должны быть достаточно постоянными. Напротив, контейнер Docker почти никогда не запускает демон s sh, часто не имеет Python, и любые внесенные изменения будут потеряны, как только контейнер выйдет. Типичная ориентированная на сервер Ansible playbook будет делать такие вещи, как настройка конфигурации службы и сценариев инициализации, но в системе Docker отсутствует инициализация, и обычно конфигурация службы вводится.

Вероятно, лучше здесь думать о контейнере Docker как об упаковке вокруг одного процесса. Вы можете использовать bind mounts для внедрения конфигурации с хоста, и вы можете использовать Ansible на хосте, чтобы запустить контейнер, но вы не будете использовать Ansible, чтобы «настроить» контейнер. Если вам требуется программное обеспечение, установленное в контейнере, то при использовании собственной системы Docker docker build это можно сделать воспроизводимым способом, не требуя дополнительных действий после запуска контейнера.

Единственное заметное исключение для "почти никогда" не запускает тесты молекул внутри контейнера , но учтите, что эта настройка имеет характер временных и кратковременных изменений (как только тест закончится, вы хотите разрушить контейнер).

...