首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >始终在其他角色之前运行ansible角色

始终在其他角色之前运行ansible角色
EN

Stack Overflow用户
提问于 2016-04-04 02:32:24
回答 1查看 1.2K关注 0票数 2

我正试图从依赖的灌木丛中找到出路。我用的是Ansible 1.9.2。

在一个游戏手册中,我希望能够安装一个Galaxy (在这种情况下,Datadog.datadog角色)并对其进行配置。但是Ansible总是barfs;由于Datadog.datadog角色在我编写的另一个角色安装Galaxy之前不存在,所以它不会执行。这就是我真正想要的,剔除了我的剧本中使用的其他角色:

代码语言:javascript
复制
- hosts: all
  roles: 
  - install_datadog
  - (some other roles...)
  - { role: Datadog.datadog, sudo: true }
  vars:
    datadog_api_key: "somekey"

我已经尝试了以下所有内容,但它们都没有首先用于安装Ansible Galaxy Datadog.datadog角色:

  • 在运行我的install_datadog角色的同一个剧本中有一个较早的块。
  • 在前面的剧本中使用包含install_datadog角色的main.yml的'include‘语句。
  • 在上面的剧本中创建一个pre_task语句。

定义角色依赖关系是没有意义的,因为Datadog.datadog还不存在,所以我不能在其中定义任何依赖项。总是有一个类似于此的错误:

代码语言:javascript
复制
ERROR: cannot find role in /etc/ansible/roles/Datadog.datadog

我唯一能做的就是在前面的运行中执行install_datadog角色。这不是一个很好的解决方案,因为以前有许多执行块和角色调用的剧本配置了我们的整个环境;这需要按照特定的顺序执行两个剧本,这是非常不优雅的。

因此,在一次运行中,我如何解析一个在早期的角色运行后才会存在的Galaxy角色?

EN

回答 1

Stack Overflow用户

发布于 2017-01-06 21:00:54

确保您的roles_path是正确的。roles_path变量在ansible.cfg中指定ansible将查找角色的位置,ansible-galaxy--roles-path选项将指定datadog角色的安装位置。

例如,我的安装任务如下所示:

ansible-galaxy install Datadog.datadog --roles-path=/usr/home/vagrant

在我的ansible.cfg文件中,我有以下一行:

roles_path = /vagrant/ansible/roles:/usr/home/vagrant

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36393749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档