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 является антипаттерном. "Просто одна линия" обычно превращается в большее, и иметь дело с побегами и тому подобным всегда сложно.