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

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/147323c3-d91e-4a89-83d9-9978866ac315%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to