2015-04-28 95 views
2

剧本我有3个的git回购协议:Ansible在Vagrantfile - 拉从混帐

  1. ansible配置(角色,任务...)
  2. 后端代码
  3. 前端代码

在我的Vagrantfile,我可以指定一个剧本的路径。

但是如果我想让Ansible playbook从git中自动拉出呢?流浪者可以这样做吗?我不想重复Ansible配置。

或者我应该添加我的ansible回购作为子模块?或者是其他东西?

+1

Vagrantfiles基本上只是Ruby代码,所以你可以做任何事情,只有你的想象力是你的极限。但是,需要一些Ruby知识。子模块会更简单。 –

+0

我会推荐一个子模块。 –

回答

2

我有几种类似的情况给你。这是我做的...

所有三个回购站位于同一个父目录。

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

我用vagrant-triggers插件当我执行vagrant upvagrant provision触发更新到ansible回购。所以我Vagrantfile的开始可能看起来像

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

其中../ansible/update.sh是检查,以确保ansible混帐回购协议是先进的日期和正确的状态(在右支,等等)的脚本。

接下来的部分就是如果你想要后端和前端回购能够引导自己,如果不存在可靠的回购。这只需要额外的shell脚本与vagrant-triggers插件。另外,如果您愿意,您可以使用安全的local_action(请参阅docs)而不是shell脚本。

+0

看起来像一个很好的解决方案。我也可以将它用于子模块,因为它们不会自动更新。 –