Использование Ansible для загрузки одного файла из частного репита github на удаленный хост
Пример сценария: файлы конфигурации для определенной службы хранятся под контролем версий в частном репозитории github. Я хочу написать playbook, который извлекает один из этих файлов на удаленном узле и помещает его в нужное место.
Я могу придумать несколько решений для этого:
- выполнить проверку на машине, которая запускает
local_action
(local_action
), а затем использовать модуль copy
- выполните проверку на удаленном узле (с помощью
git
модуля), скопируйте файлы в нужное место с помощью command: cp src dest creates=dest
(возможно, сделайте это с помощью обработчика - только когда репо имеет изменения, которые нужно вытащить) - используйте модуль url или
command: wget https://raw.github.com/repo/.../file creates=file
в учебнике для загрузки только интересующего файла. Действительно ли command
модуль проверяет, отличается ли файл, который уже существует, или он просто проверяет наличие файла? - используйте wget на машине, которая запускает
local_action
(local_action
), а затем используйте модуль копирования, чтобы направить его на удаленный узел
Каковы преимущества/недостатки этих. Какие (если таковые имеются) из них можно считать хорошей практикой. Какое наилучшее общее решение?
Ответы
Ответ 1
Начну с того, что мы выбрали второе решение для нашей производственной среды, и я гарантирую одно: он просто работает. Теперь для более длинной версии:
Решение №. 1:
- Простой и надежный - будет просто работать
- Не "загрязняет" производственные серверы ненужными файлами (другими конфигурационными файлами)
- Не загружает серверы с серверами ввода/вывода в GitHub (возможно, незначительно)
Решение №. 2:
- Простой и надежный - будет просто работать
- Чтобы уменьшить загрязнение, мы клонируем конфигурацию repo в /tmp и удаляем ее в конце учебника
Решение №. 3/4:
Я предполагаю, что это сработает, но немного странно иметь конфигурацию в исходном управлении, а затем не использовать функции управления версиями. Преимущество этих решений заключается в том, что вы можете "выбрать вишню", какие файлы конфигурации вы хотите скачать, а не клонировать весь репозиторий. Это также уменьшает ввод-вывод против github, поскольку клонирование становится более тяжелым с течением времени.