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

030*_*030 7 ansible ansible-playbook

元/主.yml

dependencies:
  - { role: 030.sensu-install }
Run Code Online (Sandbox Code Playgroud)

结果是:

[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.
Run Code Online (Sandbox Code Playgroud)

什么时候 sudo ansible-galaxy install -r requirements/development.yml发出。

解决问题的尝试

什么时候

dependencies:
  - role: 030.sensu-install
    version: 0.1.0
Run Code Online (Sandbox Code Playgroud)

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


什么时候

dependencies:
  - src: 030.sensu-install
    version: 0.1.0
Run Code Online (Sandbox Code Playgroud)

已定义,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
Run Code Online (Sandbox Code Playgroud)

030*_*030 8

根据此代码段更新 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
Run Code Online (Sandbox Code Playgroud)

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