`with_dict ожидает dict` — Ansible глобальный композитор и kosssi.composer

Я пытаюсь использовать kosssi.composer Ansible роль установить глобальный экземпляр composer, а также пару пакетов composer.

---
-
hosts: myhosts
remote_user: vagrant
sudo: true
roles:
- { role: kosssi.composer,
composer_path_env: true,
composer_home_path: /opt/composer,
composer_home_owner: vagrant,
composer_home_group: vagrant,
composer_global_packages:
phpunit/phpunit: '@stable'
phing/phing: '@stable'
}

Я пробовал много разных способов, как написать это, но я либо получаю синтаксические ошибки, либо ошибку with_dict expects a dict, Глядя на источник, я вижу, что composer_global_packages ожидает dict по крайней мере с длиной один, он определяется так:

with_dict: composer_global_packages
when: composer_global_packages|length > 0

Глядя на документацию yaml, я также понимаю, что не определено даже такое понятие, как «dict» или «словарь».

Что мне не хватает? Как правильно перечислить глобальные зависимости?

0

Решение

Словарь также известен как ассоциативный массив. Есть два способа определить их в YAML, и вы смешиваете их, что приводит в замешательство синтаксический анализатор.

Либо напишите все это в стиле JSON:

-
hosts: myhosts
remote_user: vagrant
sudo: true
roles:
- { role: kosssi.composer,
composer_path_env: true,
composer_home_path: /opt/composer,
composer_home_owner: vagrant,
composer_home_group: vagrant,
composer_global_packages:
{
phpunit/phpunit: '@stable',
phing/phing: '@stable'
}
}

, или в стиле только для пробелов:

-
hosts: myhosts
remote_user: vagrant
sudo: true
roles:
role: kosssi.composer
composer_path_env: true
composer_home_path: /opt/composer
composer_home_owner: vagrant
composer_home_group: vagrant
composer_global_packages:
phpunit/phpunit: '@stable'
phing/phing: '@stable'

Вы можете проверить свою структуру YAML с https://yaml-online-parser.appspot.com/

2

Другие решения

Других решений пока нет …