Variables with quotes

28 views
Skip to first unread message

Shaun Lim

unread,
Apr 13, 2018, 9:48:15 AM4/13/18
to Ansible Project
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

Larry Smith

unread,
Apr 14, 2018, 1:05:09 AM4/14/18
to Ansible Project
Try to use the Ansible rabbitmq_user module as this will be much easier to accomplish your needs.

Shaun Lim

unread,
Apr 15, 2018, 12:10:04 AM4/15/18
to Ansible Project
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

Larry Smith

unread,
Apr 15, 2018, 9:21:15 AM4/15/18
to Ansible Project
Absolutely and completely understand.

Good luck with your learning.
Reply all
Reply to author
Forward
0 new messages