Dependencies 在playbook级别指定Ansible角色依赖项
我正在使用并部署一个Rails应用程序,我想确保Dependencies 在playbook级别指定Ansible角色依赖项,dependencies,ansible,roles,git-submodules,Dependencies,Ansible,Roles,Git Submodules,我正在使用并部署一个Rails应用程序,我想确保rvm1 ruby在ansistrano deploy之前运行,而不需要分叉ansistrano deploy来添加rvm1 ruby --- dependencies: - rvm1-ruby - ansistrano-deploy 这些角色在几个项目之间共享,并且位于我的角色目录中的Git子模块中(我对使用ansible galaxy不感兴趣,但我认为它对解决这个问题没有任何帮助): 在我的main.yml中,我包含了以下角色: - host
rvm1 ruby
在ansistrano deploy
之前运行,而不需要分叉ansistrano deploy
来添加rvm1 ruby
---
dependencies:
- rvm1-ruby
- ansistrano-deploy
这些角色在几个项目之间共享,并且位于我的角色
目录中的Git子模块中(我对使用ansible galaxy
不感兴趣,但我认为它对解决这个问题没有任何帮助):
在我的main.yml
中,我包含了以下角色:
- hosts: all
roles:
- role: rvm1-ruby
- role: ansistrano-deploy
tasks:
- # ...
如果我们正在部署Rails应用程序,那么显然,ansistrano部署
可以依赖于rvm1 ruby
。我可以分叉ansistrano-deploy
并将以下内容添加到ansistrano-deploy/meta/main.yml
:
---
dependencies:
- { role: 'rvm1-ruby' }
但在我的例子中,我在多个Ansible剧本中共享ansistrano deploy
角色,并非所有剧本都用于部署Rails应用程序
我有没有办法在playbook级别指定
rvm1 ruby
应该在ansistrano deploy
之前运行?我没有真正理解这个问题。在示例剧本中,您将向剧本中添加这两个角色。但你的问题是,你是如何在剧中添加角色作为依赖项的。。。你的意思是从剧本中删除rvm1 ruby
,让它作为ansistrano deploy
的魔法依赖运行吗
除非您修改ansistrano deploy
的meta/main.yml
,否则这是不可能的,因为它是一个子模块
您可以创建第三个角色,它只包含一个meta/main.yml
作为依赖项添加这两个角色
---
dependencies:
- rvm1-ruby
- ansistrano-deploy
那么你需要在剧本中增加的就是这个新角色。我在一些项目中使用这种技术,在这些项目中,许多依赖项在剧本中共享。因此,我有一个常见的角色dependencies
,它的meta/main.yml
中只有大量的依赖项定义
要明确回答这个问题:
我有没有办法在playbook级别指定rvm1 ruby
应该在ansistrano部署之前运行
只有你已经这样做了,在剧本《角色》一节中以正确的顺序引用了两个角色。我并没有真正理解这个问题。在示例剧本中,您将向剧本中添加这两个角色。但你的问题是,你是如何在剧中添加角色作为依赖项的。。。你的意思是从剧本中删除rvm1 ruby
,让它作为ansistrano deploy
的魔法依赖运行吗
除非您修改ansistrano deploy
的meta/main.yml
,否则这是不可能的,因为它是一个子模块
您可以创建第三个角色,它只包含一个meta/main.yml
作为依赖项添加这两个角色
---
dependencies:
- rvm1-ruby
- ansistrano-deploy
那么你需要在剧本中增加的就是这个新角色。我在一些项目中使用这种技术,在这些项目中,许多依赖项在剧本中共享。因此,我有一个常见的角色dependencies
,它的meta/main.yml
中只有大量的依赖项定义
要明确回答这个问题:
我有没有办法在playbook级别指定rvm1 ruby
应该在ansistrano部署之前运行
只有你已经这样做了,在剧本《角色》一节中以正确的顺序引用两个角色。的确如此。事实证明,我的存储库设置有一个错误,这意味着rvm_io.rvm1-ruby没有运行。我未能正确克隆rvm1子模块,并且没有检测到我试图运行一个空角色,Ansible只是继续,好像没有什么问题。我会把这个问题标记为结束。真的。事实证明,我的存储库设置有一个错误,这意味着rvm_io.rvm1-ruby没有运行。我未能正确克隆rvm1子模块,并且没有检测到我试图运行一个空角色,Ansible只是继续,好像没有什么问题。我将标记此问题以关闭。