Использование Ansible для загрузки одного файла из частного репита github на удаленный хост

Пример сценария: файлы конфигурации для определенной службы хранятся под контролем версий в частном репозитории github. Я хочу написать playbook, который извлекает один из этих файлов на удаленном узле и помещает его в нужное место.

Я могу придумать несколько решений для этого:

  1. выполнить проверку на машине, которая запускает local_action (local_action), а затем использовать модуль copy
  2. выполните проверку на удаленном узле (с помощью git модуля), скопируйте файлы в нужное место с помощью command: cp src dest creates=dest (возможно, сделайте это с помощью обработчика - только когда репо имеет изменения, которые нужно вытащить)
  3. используйте модуль url или command: wget https://raw.github.com/repo/.../file creates=file в учебнике для загрузки только интересующего файла. Действительно ли command модуль проверяет, отличается ли файл, который уже существует, или он просто проверяет наличие файла?
  4. используйте wget на машине, которая запускает local_action (local_action), а затем используйте модуль копирования, чтобы направить его на удаленный узел

Каковы преимущества/недостатки этих. Какие (если таковые имеются) из них можно считать хорошей практикой. Какое наилучшее общее решение?

Ответы

Ответ 1

Начну с того, что мы выбрали второе решение для нашей производственной среды, и я гарантирую одно: он просто работает. Теперь для более длинной версии:

Решение №. 1:

  • Простой и надежный - будет просто работать
  • Не "загрязняет" производственные серверы ненужными файлами (другими конфигурационными файлами)
  • Не загружает серверы с серверами ввода/вывода в GitHub (возможно, незначительно)

Решение №. 2:

  • Простой и надежный - будет просто работать
  • Чтобы уменьшить загрязнение, мы клонируем конфигурацию repo в /tmp и удаляем ее в конце учебника

Решение №. 3/4:

Я предполагаю, что это сработает, но немного странно иметь конфигурацию в исходном управлении, а затем не использовать функции управления версиями. Преимущество этих решений заключается в том, что вы можете "выбрать вишню", какие файлы конфигурации вы хотите скачать, а не клонировать весь репозиторий. Это также уменьшает ввод-вывод против github, поскольку клонирование становится более тяжелым с течением времени.