Назад | Перейти на главную страницу

Каков правильный синтаксис определения зависимостей ролей в файле meta / main.yml в Ansible?

мета / 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

Обновление 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 проблема больше.

В github есть открытый запрос на исправление ошибки, связанный с этой проблемой, но до сих пор неясно, является ли это ошибкой или вам следует использовать src: вместо этого проверьте обсуждение.

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

Думаю, пока разработчики не примут решение, вы можете игнорировать это предупреждение. Более того, вы на самом деле не используете синтаксис, разделенный запятыми, поэтому, на мой взгляд, это предупреждение не должно появляться.

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

должно быть хорошо.

если вы используете частное репо для галактики, тогда

мета \ 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