Мне нужно развернуть кучу серверов Ubuntu таким же образом, поэтому я подумал об использовании ansible вместо того, чтобы делать это вручную каждый раз, когда мне нужен новый.
Одна из вещей, которые мне нужно сделать, это клонировать исходный репозиторий с помощью git и применить к нему собственный патч. Я надеялся сохранить патч в моем каталоге ansible в files/, но, похоже, в модуле git ansible нет функции «git apply». Как лучше всего делать что-то подобное?
Некоторые варианты:
- Запустите мой собственный репозиторий git с веткой, включающей мой патч. Это сработает, но мне придется где-то поддерживать свой собственный репозиторий git и убедиться, что мои серверы имеют к нему доступ/разрешения. Было бы неплохо, если бы все конфигурации хранились в моем каталоге ansible вместо того, чтобы полагаться на другой репозиторий git, который мне приходится поддерживать.
- Используйте оболочку или командный модуль. Легче всего начать работать, но я не смогу повторно запустить playbook.
- Другие предложения?
master
репозитория, который вы клонируете? - person Code-Apprentice   schedule 05.02.2016git
ansible наversion: {{ the_version }}
, гдеthe_version
— ваша ветка. - person ddavison   schedule 05.02.2016shell
илиscript
командных модулей в ansible и после успешногоgit clone
, запуститьcd <local-clone-dir>; git am <filename.patch>
? Всегда есть вероятность, что исправление может не применяться к последней версии клонированного исходного кода, что можно обнаружить по коду возврата команд git. Обычноgit
возвращает0
в случае успеха и1
в случае неудачи. - person TheCodeArtist   schedule 05.02.2016git log --oneline | grep <commit-title>
перед попыткойgit am
, чтобы определить, был ли уже применен патч. Для отслеживаемости не забудьте добавить эхо/отпечатки, такие какChecking for patch <xyz>...
,Patch <xyz> already applied. Skipping...
и т. д., чтобы регистрировать ход выполнения и отслеживание пути, чтобы помочь в отладке, когда что-то когда-либо терпит неудачу в автоматизированном производственном экземпляре. - person TheCodeArtist   schedule 05.02.2016