using /var directory for ceph storage when not deployed on compute node 67/4067/2
authorgrakiss <grakiss.wanglei@huawei.com>
Tue, 8 Dec 2015 12:19:24 +0000 (20:19 +0800)
committergrakiss <grakiss.wanglei@huawei.com>
Sat, 12 Dec 2015 09:57:32 +0000 (17:57 +0800)
JIRA: COMPASS-174
  - if no sdb exits, use /var for default storage

Change-Id: Ia2daacb868279cb7a7287f246d2d25d3a758f31d
Signed-off-by: grakiss <grakiss.wanglei@huawei.com>
deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
deploy/adapters/ansible/roles/ceph-deploy/files/create_osd.sh
deploy/adapters/ansible/roles/storage/files/create_img.sh [new file with mode: 0755]
deploy/adapters/ansible/roles/storage/files/get_var_size.sh [new file with mode: 0755]
deploy/adapters/ansible/roles/storage/files/loop.yml [new file with mode: 0755]
deploy/adapters/ansible/roles/storage/files/losetup.sh [new file with mode: 0755]
deploy/adapters/ansible/roles/storage/tasks/loop.yml [new file with mode: 0755]
deploy/adapters/ansible/roles/storage/tasks/main.yml [new file with mode: 0755]
deploy/adapters/ansible/roles/storage/tasks/real.yml [new file with mode: 0755]

index e66354e..8dadd58 100644 (file)
     - dashboard
     - heat
 
+- hosts: all
+  remote_user: root
+  sudo: True
+  roles:
+    - storage
+
 - hosts: compute
   remote_user: root
   sudo: True
index d0c631f..2c9e57f 100644 (file)
@@ -12,20 +12,20 @@ ps -ef |grep vgremove |awk '{print $2}' |xargs kill -9
 ps -ef |grep vgcreate |awk '{print $2}' |xargs kill -9
 ps -ef |grep lvcreate |awk '{print $2}' |xargs kill -9
 
-if [ -L "/dev/cinder-volumes/ceph0" ]; then
+if [ -L "/dev/storage-volumes/ceph0" ]; then
 echo "remove lv vg"
-lvremove -f /dev/cinder-volumes/ceph0
+lvremove -f /dev/storage-volumes/ceph0
 fi
 
 
 echo "lvcreate"
-lvcreate -l 100%FREE -nceph0 cinder-volumes
+lvcreate -l 100%FREE -nceph0 storage-volumes
 echo "mkfs"
-mkfs.xfs -f /dev/cinder-volumes/ceph0
+mkfs.xfs -f /dev/storage-volumes/ceph0
 
 if [ ! -d "/var/local/osd" ]; then
 echo "mount osd"
 mkdir -p /var/local/osd
-mount /dev/cinder-volumes/ceph0 /var/local/osd
+mount /dev/storage-volumes/ceph0 /var/local/osd
 fi
 
diff --git a/deploy/adapters/ansible/roles/storage/files/create_img.sh b/deploy/adapters/ansible/roles/storage/files/create_img.sh
new file mode 100755 (executable)
index 0000000..4b9ac53
--- /dev/null
@@ -0,0 +1,4 @@
+seek_num=`echo $1 | sed -e 's/.* //g'`
+if [[ ! -f /var/storage.img ]]; then
+  dd if=/dev/zero of=/var/storage.img bs=1 count=0 seek=$seek_num
+fi
diff --git a/deploy/adapters/ansible/roles/storage/files/get_var_size.sh b/deploy/adapters/ansible/roles/storage/files/get_var_size.sh
new file mode 100755 (executable)
index 0000000..55041c6
--- /dev/null
@@ -0,0 +1,6 @@
+size=`df /var | awk '$3 ~ /[0-9]+/ { print $4 }'`;
+if [[ $size -gt 2000000000 ]]; then
+  echo -n 2000000000000;
+else
+  echo -n $((size * 1000 / 512 * 512));
+fi
diff --git a/deploy/adapters/ansible/roles/storage/files/loop.yml b/deploy/adapters/ansible/roles/storage/files/loop.yml
new file mode 100755 (executable)
index 0000000..e872652
--- /dev/null
@@ -0,0 +1 @@
+physical_device: /dev/loop0
diff --git a/deploy/adapters/ansible/roles/storage/files/losetup.sh b/deploy/adapters/ansible/roles/storage/files/losetup.sh
new file mode 100755 (executable)
index 0000000..8cb9bd7
--- /dev/null
@@ -0,0 +1,7 @@
+loop_dev=`losetup -a |grep "/var/storage.img"|awk -F':' '{print $1}'`
+if [[ -z $loop_dev ]]; then
+  losetup -f --show /var/storage.img
+else
+  echo $loop_dev
+fi
+
diff --git a/deploy/adapters/ansible/roles/storage/tasks/loop.yml b/deploy/adapters/ansible/roles/storage/tasks/loop.yml
new file mode 100755 (executable)
index 0000000..a16d235
--- /dev/null
@@ -0,0 +1,23 @@
+---
+
+- name: get available /var partition size
+  script: get_var_size.sh
+  register: part_size
+
+- name: create image file if not exitst
+  script: create_img.sh \"{{ part_size.stdout }}\"
+
+- name: do a losetup on storage volumes
+  script: losetup.sh
+  register: loop_device
+
+- name: debug loop device
+  debug: msg={{ loop_device.stdout }}
+
+- name: get device
+  shell: echo '{{ loop_device.stdout }}' | sed ':a;N;$!ba;s/.*\n\(\/dev\)/\1/g'
+  register: loop_device_filterd
+
+- name: create physical and group volumes
+  lvg: vg=storage-volumes pvs={{ loop_device_filterd.stdout }}
+       vg_options=--force
diff --git a/deploy/adapters/ansible/roles/storage/tasks/main.yml b/deploy/adapters/ansible/roles/storage/tasks/main.yml
new file mode 100755 (executable)
index 0000000..ee4c97e
--- /dev/null
@@ -0,0 +1,18 @@
+---
+- name: check if physical device exists
+  stat: path={{ physical_device }}
+  register: status
+  tags:
+    - storage
+
+- name: load loop.yml
+  include: loop.yml
+  when: status.stat.exists == False or status.stat.isblk == False 
+  tags:
+    - storage
+
+- name: load real.yml
+  include: real.yml
+  when: status.stat.exists == True and status.stat.isblk == True
+  tags:
+    - storage
diff --git a/deploy/adapters/ansible/roles/storage/tasks/real.yml b/deploy/adapters/ansible/roles/storage/tasks/real.yml
new file mode 100755 (executable)
index 0000000..fd3351c
--- /dev/null
@@ -0,0 +1,8 @@
+---
+- name: destroy GPT lable
+  shell: dd if=/dev/urandom of={{ physical_device }} bs=4M count=1
+  ignore_errors: True
+
+- name: create physical and group volumes
+  lvg: vg=storage-volumes pvs={{ physical_device }}
+       vg_options=--force