我正在使用GlusterFS在4台机器上创build和装载卷。 比如说,这些机器被称为machine1 , machine2 , machine3和machine3 。
我的同事已经成功地被探查。
我已经使用下面的命令来创build我的卷:
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
然后我开始量:
sudo gluster volume start ssl
我使用以下命令挂载了目录/myproject/ssl :
sudo mount -t glusterfs machine1:/ssl /myproject/ssl
当安装在每台机器上时,一切都按预期工作,并且/myproject/ssl目录在所有机器上共享数据。
问题是,我怎样才能以Ansible的方式做到这一点?
我试图用Ansible的方式来做这两个命令:
- 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
尽pipe对等探针已经在上一个任务中成功返回,但“ Configure Gluster volume任务将失败:
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"}
如果我用我build议的第一个shell命令replace这个Ansible任务,一切正常,但Ensure Gluster volume is mounted失败:
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"}
相关的日志输出是:
[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
所以,Ansible任务不会启动音量。
我的问题基本上是,我如何创build,安装和启动一个卷,就像我上面提到的3个命令一样,Ansible的方式?