Ansible шаблона или lineinfile для Docker по умолчанию?

Мы размещаем наш собственный внутренний реестр Docker и используем Ansible для настройки подчиненного устройства Jenkins, которое будет создавать / загружать контейнеры. Поскольку наш регистр не-SSL, мы должны добавить:

"$DOCKER_OPTS --insecure-registry our.registry.com:5000"

в файл /etc/default/docker, так что демон docker запускается с этим флагом при запуске. Является ли правильный способ использовать ANSIBLE шаблон и просто заменить весь файл? Или мы должны использовать модуль lineinfile и просто добавить эту строку?

2 ответа

Решение

Я бы сказал, что это зависит от вашей настройки. Если вы уверены, что по умолчанию /etc/default/docker файл на всех ваших док-хостах одинаков, и все, что вам нужно добавить, это $DOCKER_OPTS вариант, который вы указали выше, то нет необходимости lineinfile модуль. Будут работать либо шаблоны, либо даже модули копирования, вы просто помещаете шаблон в каталог шаблонов или каталог файлов для своих ролей соответственно. Одним из преимуществ использования шаблона является то, что вы можете использовать --diff возможность посмотреть, какие изменения он собирается внести. Добавьте к этому --check для режима пробного запуска с включенным ведением журнала намного проще отслеживать все сделанные изменения.

Но если файлы конфигурации докера различаются в вашей среде, скажем, некоторые из них имеют разные DNS-серверы, я бы использовал lineinfile с regex вариант. Таким образом, вы можете сохранить существующий DOCKER_OPTS на удаленных хостах, добавив дополнительный небезопасный параметр. Просто убедитесь, что используете, backup=yes опция для lineinfile, если вам нужно восстановить файл из резервной копии.

Как правило, использование lineinfile является антипаттерном. "Просто одна линия" обычно превращается в большее, и иметь дело с побегами и тому подобным всегда сложно.

Другие вопросы по тегам