0
votes

I trying create ansible role for creating glusterfs volume replica in AWS Centos instances.I successes to create volume and install glusterfs. I tried to use this topic suggestion running "gluster peer probe " on each machine from host group. I have playbook that running "glusterfs" role on hostgroup:

[Server]
devserver1.net ansible_user=ec2-user ansible_ssh_private_key_file=/some.pem
devserver2.net ansible_user=ec2-user ansible_ssh_private_key_file=/some.pem

What I'm trying now is in role to run "gluster peer probe...", when this task run inside spesific host of this hostgroup. Like that:

- name: gluster peer probe in server1
  shell: gluster peer probe {{ stackName }}server2.net
  when: "'{{ stackName }}server1.net' == {{ inventory_hostname }}"

- name: gluster peer probe in server2
  shell: gluster peer probe {{ stackName }}server1.net
  when: "'{{ stackName }}server2.net' == {{ inventory_hostname }}"

StackName is predefined inventory "dev" variable for playbook.
And it fails with error:

FAILED! => {"failed": true, "msg": "The conditional check '{{ stackName }} server1.net in inventory_hostname' failed. The error was: error while evaluating conditional ({{ stackName }}server1.net in inventory_hostname): 'server1' is undefined\n\nThe error appears to have been in 'ansible/roles/glusterfs/tasks/main.yml': line 69, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: gluster peer probe from server1\n ^ here\n"}

Any suggesting how I can do that? Or what I'm doing wrong here?

2

2 Answers

1
votes

You shouldn't add a Jinja2 template (with expressions) to when conditions in Ansible. The whole parameter is supposed to be a single Jinja2 expression itself:

when: "stackName + 'server1.net' == inventory_hostname"
0
votes

Our way of doing that (and works for us)

- name: Form a cluster.
  command: "gluster peer probe {{ peernode }}"
  loop: "{{ ansible_play_hosts | flatten(levels=1) }}"
  loop_control:
    loop_var: peernode
    pause: 2
  register: glusterpeerprobe
  become: true
  run_once: true
  any_errors_fatal: true
  changed_when: "'peer probe: success.' in glusterpeerprobe.stdout_lines"