Назад | Перейти на главную страницу

Шаблон Ansible или строковый файл для настроек Docker по умолчанию?

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

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

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

Как правило, использование lineinfile является антипаттерном. «Всего одна строка» обычно превращается в несколько, и справляться с побегами всегда сложно.

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

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