I keep getting error with the following ansible command.
`
…
- name: create policy
rabbitmq_policy:
name={{ item.name }}
vhost={{ item.vhost | default(‘/’, false) }}
pattern={{ item.pattern }}
priority={{ item.priority }}
tags={{ item.tags }}
with_items: rabbitmq_policy_configuration
…
`
where ‘rabbitmq_policy_configuration’ is
`
rabbitmq_policy_configuration -name: GLOBAL vhost: / pattern: .* priority: 0 tags: ha-mode=all,ha-sync-mode=automatic,max-length=1000000,expires=1296000000
`
When the module processes this configuration, the value of ‘tags’ is converted strictly to a string.
But in fact, the values of ‘max-length’ and ‘expires’ must be ints for rabbitmqctl(assuming people understand what rabbitmqctl does) to work properly.
This is the error message
`
failed: [10...] => (item={‘priority’: 0, ‘vhost’: ‘/’, ‘tags’: ‘ha-mode=all,ha-sync-mode=automatic,max-length=1000000,expires=1296000000’, ‘name’: ‘GLOBAL’, ‘pattern’: '.'}) => {“cmd”: “/usr/sbin/rabbitmqctl -q -n rabbit set_policy -p / GLOBAL '.’ ‘{"ha-sync-mode": "automatic", "expires": "1296000000", "ha-mode": "all", "max-length": "1000000"}’ --priority 0", “failed”: true, “item”: {“name”: “GLOBAL”, “pattern”: ".”, “priority”: 0, “tags”: “ha-mode=all,ha-sync-mode=automatic,max-length=1000000,expires=1296000000”, “vhost”: “/”}, “rc”: 2}
stderr: Error: Validation failed
<<“1296000000”>> is not a valid queue expiry
msg: Error: Validation failed
`
According to ansible docs, ‘tags’ can be a dictionary so I tried with this
`
rabbitmq_policy_configuration:
- name: GLOBAL
vhost: /
pattern: .*
priority: 0
tags:
ha-mode: all
ha-sync-mode: automatic
max-length: 1000000
expires: 1296000000
`
But it did not prevail.
`
failed: [10...] => (item={‘priority’: 0, ‘vhost’: ‘/’, ‘tags’: {‘ha-sync-mode’: ‘automatic’, ‘expires’: 1296000000, ‘ha-mode’: ‘all’, ‘max-length’: 1000000}, ‘name’: ‘GLOBAL’, ‘pattern’: '.‘}) => {“failed”: true, “item”: {“name”: “GLOBAL”, “pattern”: ".", “priority”: 0, “tags”: {“expires”: 1296000000, “ha-mode”: “all”, “ha-sync-mode”: “automatic”, “max-length”: 1000000}, “vhost”: “/”}}
msg: this module requires key=value arguments ([‘name=GLOBAL’, ‘vhost=/’, 'pattern=.’, ‘priority=0’, ‘tags={ha-sync-mode:’, ‘automatic,’, ‘expires:’, ‘1296000000,’, ‘ha-mode:’, ‘all,’, ‘max-length:’, ‘1000000}’])
FATAL: all hosts have already failed – aborting
`
Could anyone please help pointing out what I have done wrong? I read the source of rabbitmq_policy on github and did not spot any type conversions of individual parameter values belong to the argument of ‘tags’. I am starting to doubt there is a bug.
FYI these are the environment information
Ansible version: 1.7.2-1ppa~precise
PC environment: Ubuntu 12.04