2015-04-28 3 views
2

У меня есть 3 GIT РЕПО:анзибль в Vagrantfile - тянуть пьес из мерзавца

  1. анзибль конфигурации (роли, задачи ...)
  2. бэкенд код
  3. интерфейс код

В мой Vagrantfile, я могу указать путь к playbook.

Но что, если я хочу, чтобы Ansible playbook вытащил автоматически из git? Может это бродяга? Я не хочу дублировать Ansible конфигураций.

Или я должен добавить мое реальное репо в качестве подмодуля? Или что-то другое?

+1

Vagrantfiles - это в основном просто код Ruby, поэтому вы можете делать практически все, и только ваше воображение - ваш предел. Однако требуется некоторое знание Ruby. Субмодулы были бы проще. –

+0

Я бы порекомендовал также подмодуль. –

ответ

2

У меня есть несколько подобных ситуаций для вас. Вот что я делаю ...

Все три репозитория находятся в одном и том же родительском каталоге.

./parent 
    |-- ansible 
    |-- backend 
    +-- frontend 

Я использую vagrant-triggers плагин для запуска обновления к анзибль репо, когда я исполняю vagrant up или vagrant provision. Так было положено начало моей Vagrantfile может выглядеть

Vagrant.configure("2") do |config| 
    config.trigger.before :up do 
    system("../ansible/update.sh") 
    end 

где ../ansible/update.sh скрипт, который проверяет, чтобы убедиться, что анзибль мерзавец репо уточненный и в правильном состоянии (на правой ветви, и т.д.).

Следующая часть тогда была бы, если бы вы хотели, чтобы бэкэнд и внешние репозитории могли загрузиться сами, если нерезонансное репо не существует. И это просто требует дополнительных сценариев оболочки с плагином бродяг-триггеров. Кроме того, если вы предпочитаете, вы можете использовать ansible local_action (см. docs) вместо сценариев оболочки.

+0

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

Смежные вопросы