2017-06-18 1 views
0

Je tente de créer un rôle ansible pour créer une réplique de volume glusterfs dans les instances AWS Centos.J'ai réussi à créer du volume et à installer glusterfs. J'ai essayé d'utiliser cette suggestion topic exécutant "gluster peer probe" sur chaque machine du groupe hôte. Je PlayBook que l'exécution de rôle « glusterfs » sur hostgroup:Comment exécuter la commande Glusterfs-cli "peer probe" en utilisant le groupe d'hôtes Ansible avec la condition "when"

[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 

Ce que je suis en train est maintenant rôle à exécuter « sonde homologue Gluster ... », lorsque cette tâche exécutée dans l'hôte spesific de ce groupe d'hôtes . Comme ceci:

- 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 est l'inventaire prédéfini "dev" variable pour playbook.
Et il échoue avec l'erreur:

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"}

Tout ce qui suggère comment je peux le faire? Ou ce que je fais mal ici?

Répondre

1

Vous ne devez pas ajouter un modèle Jinja2 (avec des expressions) aux conditions when dans Ansible. Le paramètre entier est supposé être une seule expression Jinja2 elle-même:

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