我正试图从依赖的灌木丛中找到出路。我用的是Ansible 1.9.2。
在一个游戏手册中,我希望能够安装一个Galaxy (在这种情况下,Datadog.datadog角色)并对其进行配置。但是Ansible总是barfs;由于Datadog.datadog角色在我编写的另一个角色安装Galaxy之前不存在,所以它不会执行。这就是我真正想要的,剔除了我的剧本中使用的其他角色:
- hosts: all
roles:
- install_datadog
- (some other roles...)
- { role: Datadog.datadog, sudo: true }
vars:
datadog_api_key: "somekey"我已经尝试了以下所有内容,但它们都没有首先用于安装Ansible Galaxy Datadog.datadog角色:
定义角色依赖关系是没有意义的,因为Datadog.datadog还不存在,所以我不能在其中定义任何依赖项。总是有一个类似于此的错误:
ERROR: cannot find role in /etc/ansible/roles/Datadog.datadog我唯一能做的就是在前面的运行中执行install_datadog角色。这不是一个很好的解决方案,因为以前有许多执行块和角色调用的剧本配置了我们的整个环境;这需要按照特定的顺序执行两个剧本,这是非常不优雅的。
因此,在一次运行中,我如何解析一个在早期的角色运行后才会存在的Galaxy角色?
发布于 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
https://stackoverflow.com/questions/36393749
复制相似问题