Creare e montare il volume di GlusterFS con Ansible

Sto utilizzando GlusterFS per creare e montare volumi su 4 macchine. Diciamo ad esempio che le macchine sono denominate machine1 , machine2 , machine3 e machine4 .

I miei coetanei sono già stati sperimentati con successo.

Ho utilizzato il seguente command per creare il mio volume:

 sudo gluster volume create ssl replica 2 transport tcp machine1:/srv/gluster/ssl machine2:/srv/gluster/ssl machine3:/srv/gluster/ssl machine4:/srv/gluster/ssl force 

Poi inizio il volume con:

 sudo gluster volume start ssl 

Ho montato la directory /myproject/ssl usando il seguente command:

 sudo mount -t glusterfs machine1:/ssl /myproject/ssl 

Quando montato su each macchina, tutto funziona come previsto e la /myproject/ssl ha i dati condivisi in tutte le macchine.

La domanda è, come sulla Terra faccio questo il modo giusto?

Ecco i miei tentativi di fare quei due comandi il modo giusto:

 - name: Configure Gluster volume. gluster_volume: state: present name: "{{ gluster.brick_name }}" brick: "{{ gluster.brick_dir }}" replicas: 2 cluster: "{{ groups.glusterssl | join(',') }}" host: "{{ inventory_hostname }}" force: yes become: true become_user: root become_method: sudo run_once: true ignore_errors: true - name: Ensure Gluster volume is mounted. mount: name: "{{ gluster.brick_name }}" src: "{{ inventory_hostname }}:/{{ gluster.brick_name }}" fstype: glusterfs opts: "defaults,_netdev" state: mounted become: true become_user: root become_method: sudo 

Malgrado una sonda di peer che già ritorna ad avere successo su un'attività precedente, il Configure Gluster volume fallisce con:

 fatal: [machine3]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_args": {"brick": "/srv/gluster/ssl", "bricks": "/srv/gluster/ssl", "cluster": ["machine1", "machine2", "machine3", "machine4"], "directory": null, "force": true, "host": "machine3", "name": "ssl", "options": {}, "quota": null, "rebalance": false, "replicas": 2, "start_on_create": true, "state": "present", "stripes": null, "transport": "tcp"}, "module_name": "gluster_volume"}, "msg": "failed to probe peer machine1 on machine3"} 

Se sostituisco questo task con il primo command di shell che ho suggerito, tutto funziona bene, ma il Ensure Gluster volume is mounted non funziona:

 fatal: [machine3]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_args": {"dump": null, "fstab": "/etc/fstab", "fstype": "glusterfs", "name": "ssl", "opts": "defaults,_netdev", "passno": null, "src": "machine3:/ssl", "state": "mounted"}, "module_name": "mount"}, "msg": "Error mounting ssl: Mount failed. Please check the log file for more details.\n"} 

L'output log logico è:

 [2016-10-17 09:10:25.602431] E [MSGID: 114058] [client-handshake.c:1524:client_query_portmap _cbk] 2-ssl-client-3: failed to get the port number for remote subvolume. Please run 'gluster volume status' on server to see if brick process is running. [2016-10-17 09:10:25.602480] I [MSGID: 114018] [client.c:2042:client_rpc_notify] 2-ssl-client-3: disconnected from ssl-client-3. Client process will keep trying to connect to glusterd until brick's port is available [2016-10-17 09:10:25.602500] E [MSGID: 108006] [afr-common.c:3880:afr_notify] 2-ssl-replicate-1: All subvolumes are down. Going offline until atleast one of them comes back up. [2016-10-17 09:10:25.616402] I [fuse-bridge.c:5137:fuse_graph_setup] 0-fuse: switched to graph 2 

Quindi, il volume non viene avviato dall'attività mista.

La mia domanda è, in sostanza, come faccio a creare, montare e avviare un volume allo stesso modo che ho fatto con i 3 comandi sopra menzionati, il modo giusto?

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.