Tạo và gắn kết khối lượng GlusterFS với Ansible


16

Tôi đang sử dụng GlusterFS để tạo và gắn kết khối lượng trên 4 máy. Nói ví dụ, các máy này được gọi là machine1, machine2, machine3machine4.

Đồng nghiệp của tôi đã được thăm dò thành công.

Tôi đã sử dụng lệnh sau để tạo âm lượng của mình:

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

Sau đó tôi bắt đầu âm lượng với:

sudo gluster volume start ssl

Tôi đã gắn thư mục /myproject/sslbằng lệnh sau:

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

Khi được gắn trên mỗi máy, mọi thứ hoạt động như mong đợi và /myproject/sslthư mục có dữ liệu được chia sẻ trên tất cả các máy.

Câu hỏi là, làm thế nào trên trái đất tôi làm điều này theo cách Ansible?

Dưới đây là những nỗ lực của tôi trong việc thực hiện hai lệnh đó theo cách 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

Mặc dù một thăm dò ngang hàng đã trở lại thành công trong một nhiệm vụ trước đó, Configure Gluster volumenhiệm vụ thất bại với:

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

Nếu tôi thay thế tác vụ Ansible này bằng lệnh shell đầu tiên tôi đề xuất, mọi thứ sẽ hoạt động tốt, nhưng sau đó đã Ensure Gluster volume is mountedthất bại với:

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

Đầu ra nhật ký có liên quan là:

[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

Vì vậy, âm lượng không được bắt đầu bởi tác vụ Ansible.

Câu hỏi của tôi là, về cơ bản, làm thế nào để tôi tạo, gắn kết và bắt đầu một âm lượng giống như cách tôi đã làm với 3 lệnh được đề cập ở trên, cách Ansible?


6
Không chắc bạn có bao giờ tìm ra điều này hay không nhưng muốn chia sẻ vai trò Ansible của tôi cho GlusterFS có thể giúp bạn đi đúng hướng. github.com/mrlesmithjr/ansible-glusterfs
mrlesmithjr

Câu trả lời:


2

Bạn nên bắt đầu âm lượng với state: started:

- name: Configure Gluster volume.
  gluster_volume:
    state: started
    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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.