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

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

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

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

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

1 ответов


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

решение нет. 1:

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

решение нет. 2:

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

решения нет. 3/4:

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