在 Ansible 中的 meta/main.yml 中定义角色依赖关系的正确语法是什么?

在 Ansible 中的 meta/main.yml 中定义角色依赖关系的正确语法是什么?

meta/main.yml

dependencies:
  - { role: 030.sensu-install }

结果是:

[DEPRECATION WARNING]: The comma separated role spec format, use the
yaml/explicit format instead..
This feature will be removed in a future release. 
Deprecation warnings can be disabled by setting deprecation_warnings=False in 
ansible.cfg.

何时sudo ansible-galaxy install -r requirements/development.yml发行。

尝试解决问题

什么时候

dependencies:
  - role: 030.sensu-install
    version: 0.1.0

已定义,语法检查成功,但弃用警告仍然存在。


什么时候

dependencies:
  - src: 030.sensu-install
    version: 0.1.0

已定义,sudo ansible-galaxy install -r requirements/development.yml运行时弃用警告已解决,但ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook} --syntax-check结果是:

ERROR! role definitions must contain a role name

答案1

根据以下情况更新 meta/main.yml此片段如下:

dependencies:
  - src: 030.firewall
    version: 0.1.0
    name: 030.firewall
  - src: 030.sensu-client
    version: 0.4.1
    name: 030.sensu-client
  - src: geerlingguy.ntp
    version: 1.3.0
    name: geerlingguy.ntp    
  - src: geerlingguy.postfix
    version: 1.1.0
    name: geerlingguy.postfix
  - src: geerlingguy.redis
    version: 1.4.1
    name: geerlingguy.redis
  - src: Stouts.rabbitmq
    version: 1.2.1
    name: Stouts.rabbitmq

并且通过发行安装要求ansible-galaxy install -r requirements/development.yml不会[DEPRECATION WARNING]: The comma separated role spec format再返回该问题。

答案2

GitHub 上有一个关于此问题的开放错误修复拉取请求,但目前还不清楚这是否是一个错误,或者你应该使用来源:相反,请检查讨论。

https://github.com/ansible/ansible/pull/14612

我猜在开发人员下定决心之前,您可以忽略该警告。此外,您实际上并没有使用逗号分隔语法,所以我认为不应该出现此警告。

dependencies:
    - { role: 030.sensu-install }

应该可以。

答案3

如果你正在使用 Galaxy 的私人仓库,那么

meta\main.yml

---
# local copy
#dependencies:
#   - { role: '/roles/java', java_packages: java-1.8.0-openjdk }
#http
#dependencies:
#   - { role: 'git+http://gitlabserver/ansible-galaxy/java.git,master'}
#ssh
dependencies:
   - name: java
     src: ssh://git@gitlabserver/ansible-galaxy/java.git
     scm: git
     version: master

注意:你可能需要在主机中拥有私钥才能进行 git clone

相关内容