Variables with quotes

Hi all,

I’m new to Ansible and am trying to use some variables with quotes. The command I’m trying to run is as follows:

rabbitmqctl set_permissions -p /vhost username ".*" ".*" ".*"

To do this, I’m trying to use the command module. If I include the command exactly as above, the command runs successfully but I’m trying to make this reusable so I’ve changed a few of those into variables instead. My task currently looks like this:

`

  • name: Set user permissions on RabbitMQ
    become: yes
    command: rabbitmqctl set_permissions -p /“{{ rabbitVhost }}” “{{ rabbitUser }}” “{{ rabbitAcl }}”
    `

I can’t seem to get this to work. I’ve tried sending the parameters like this:

ansible-playbook rabbit.yml --extra-vars='{"rabbitUser":"shaun","rabbitSecret":"P@ssw0rd","rabbitVhost":"sensu","rabbitAcl":"\\\".*\\\" \\\".*\\\" \\\".*\\\""}'

The error I get is as below and it looks like the parameters are being set correctly:

fatal: [localhost]: FAILED! => { "changed": true, "cmd": [ "rabbitmqctl", "set_permissions", "-p", "/sensu", "shaun", "\".*\" \".*\" \".*\"" ], "delta": "0:00:00.691783", "end": "2018-04-13 23:37:49.505521", "invocation": { "module_args": { "_raw_params": "rabbitmqctl set_permissions -p /\"sensu\" \"shaun\" \"\\\".*\\\" \\\".*\\\" \\\".*\\\"\"", "_uses_shell": false, "chdir": null, "creates": null, "executable": null, "removes": null, "stdin": null, "warn": true } }, "msg": "non-zero return code", "rc": 64, "start": "2018-04-13 23:37:48.813738", "stderr": "Error: operation set_permissions used with invalid parameter: [\"shaun\",\n \"\\\".*\\\" \\\".*\\\" \\\".*\\\"\"]", "stderr_lines": [ "Error: operation set_permissions used with invalid parameter: [\"shaun\",", " \"\\\".*\\\" \\\".*\\\" \\\".*\\\"\"]" ],

Any help would be appreciated.

Thanks.

Regards,
Shaun

Try to use the Ansible rabbitmq_user module as this will be much easier to accomplish your needs.

http://docs.ansible.com/ansible/latest/modules/rabbitmq_user_module.html

Thanks for the tip Larry.

I wanted to create my own module as I am learning Ansible.

In any case, I managed to get it done by splitting each type of permission into its own variable. I think a combined string with too many quotes caused some parsing issues.

Regards,
Shaun

Absolutely and completely understand.

Good luck with your learning.