Browse Source

first commit

danger3466 10 months ago
commit
97a327fc3a
2 changed files with 116 additions and 0 deletions
  1. 103 0
      drbd.yml
  2. 13 0
      resource.res.j2

+ 103 - 0
drbd.yml

@@ -0,0 +1,103 @@
+---
+- name: Cluster NFC DRBD
+  hosts: nodes
+  any_errors_fatal: true
+  tasks:
+    - name: Install DRBD
+      apt:
+        name: drbd-utils
+        state: present
+        update_cache: yes
+
+    - name: Check patrition
+      shell: ls {{ drbd_disk}}1
+      register: result
+      failed_when: False
+      changed_when: False
+
+    - name: Create patrition
+      shell: echo -en "o\nn\np\n1\n\n\nw\n" | fdisk {{ drbd_disk }}
+      register: result
+      when: result.rc == 2
+      failed_when:
+        - "'Syncing disks' not in result.stdout"
+        - "'Created a new partition' not in result.stdout"
+
+    - name: Check DRBD status
+      command: drbdadm status {{ drbd_resource_name }}
+      register: result
+      changed_when: False
+      failed_when: False
+
+    - name: Create mount point
+      file:
+        path: /mnt/nfs
+        state: directory
+
+    - name: Unmount
+      mount:
+        path: /mnt/nfs
+        state: unmounted
+
+    - name: Create config
+      template:
+        src: resource.res.j2
+        dest: /etc/drbd.d/{{ drbd_resource_name }}.res
+
+    - name: Down resource
+      shell: drbdadm down {{ drbd_resource_name }}
+      when: result.rc == 0
+
+    #- name: Check config
+    #  command: drbdadm dump all
+
+    - name: Find metadata on disk
+      shell: drbdmeta 0 v08 {{ drbd_disk }}1 internal check-resize
+      register: find_metadata
+      changed_when: False
+      failed_when: False
+
+    - name: Create metadata
+      #command: drbdmeta 0 v08 {{ drbd_disk }}1 internal create-md 2 --force
+      command: drbdadm create-md --force {{ drbd_resource_name }}
+      when: find_metadata.rc != 0
+
+    - name: Up resource
+      command: drbdadm up {{ drbd_resource_name }}
+
+    - name: Find Primary
+      shell: drbdadm status {{ drbd_resource_name }} | grep Primary
+      register: result_primary
+      changed_when: False
+      failed_when: False
+
+#    - name: Check DRBD role
+#      shell: drbdadm status {{ drbd_resource_name }} | grep "{{ drbd_resource_name }} role:" | awk -F ":" '{print $2}'
+#      register: result
+#      changed_when: False
+#      failed_when: False
+#    - debug: var=result
+#      failed_when: True
+
+    - name: Resync resource
+      command: drbdadm primary --force {{ drbd_resource_name }}
+      # drbdadm new-current-uuid --clear-bitmap shared/0
+      when: result_primary.rc != 0
+      run_once: true
+
+    - name: Check status
+      shell: drbdadm status | grep {{ drbd_resource_name }}
+      register: drbd_status
+
+    - name: Create FS
+      shell: mkfs.ext4 /dev/drbd1
+      when: "'Primary' in drbd_status.stdout"
+
+    - name: Mount
+      mount:
+        path: /mnt/nfs
+        src: /dev/drbd1
+        fstype: ext4
+        state: mounted
+      when: "'Primary' in drbd_status.stdout"
+...

+ 13 - 0
resource.res.j2

@@ -0,0 +1,13 @@
+resource {{ drbd_resource_name }} {
+  device /dev/drbd1;
+  meta-disk internal;
+  net {
+    protocol C;
+  }
+  {% for node in groups['nodes'] %}
+  on {{ node }} {
+    disk {{hostvars[node].drbd_disk}}1;
+    address {{hostvars[node].ansible_host}}:7789;
+  }
+  {% endfor %}
+}