From 604f11a9e2a1126a97a1024ec97b468a0d2ee9a0 Mon Sep 17 00:00:00 2001 From: grakiss Date: Tue, 8 Dec 2015 20:19:24 +0800 Subject: using /var directory for ceph storage when not deployed on compute node JIRA: COMPASS-174 - if no sdb exits, use /var for default storage Change-Id: Ia2daacb868279cb7a7287f246d2d25d3a758f31d Signed-off-by: grakiss --- .../ansible/openstack/HA-ansible-multinodes.yml | 6 ++++++ .../ansible/roles/ceph-deploy/files/create_osd.sh | 10 +++++----- .../ansible/roles/storage/files/create_img.sh | 4 ++++ .../ansible/roles/storage/files/get_var_size.sh | 6 ++++++ .../adapters/ansible/roles/storage/files/loop.yml | 1 + .../ansible/roles/storage/files/losetup.sh | 7 +++++++ .../adapters/ansible/roles/storage/tasks/loop.yml | 23 ++++++++++++++++++++++ .../adapters/ansible/roles/storage/tasks/main.yml | 18 +++++++++++++++++ .../adapters/ansible/roles/storage/tasks/real.yml | 8 ++++++++ 9 files changed, 78 insertions(+), 5 deletions(-) create mode 100755 deploy/adapters/ansible/roles/storage/files/create_img.sh create mode 100755 deploy/adapters/ansible/roles/storage/files/get_var_size.sh create mode 100755 deploy/adapters/ansible/roles/storage/files/loop.yml create mode 100755 deploy/adapters/ansible/roles/storage/files/losetup.sh create mode 100755 deploy/adapters/ansible/roles/storage/tasks/loop.yml create mode 100755 deploy/adapters/ansible/roles/storage/tasks/main.yml create mode 100755 deploy/adapters/ansible/roles/storage/tasks/real.yml diff --git a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml index e66354e1..8dadd584 100644 --- a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml +++ b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml @@ -30,6 +30,12 @@ - dashboard - heat +- hosts: all + remote_user: root + sudo: True + roles: + - storage + - hosts: compute remote_user: root sudo: True diff --git a/deploy/adapters/ansible/roles/ceph-deploy/files/create_osd.sh b/deploy/adapters/ansible/roles/ceph-deploy/files/create_osd.sh index d0c631fb..2c9e57f1 100644 --- a/deploy/adapters/ansible/roles/ceph-deploy/files/create_osd.sh +++ b/deploy/adapters/ansible/roles/ceph-deploy/files/create_osd.sh @@ -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 index 00000000..4b9ac534 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/create_img.sh @@ -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 index 00000000..55041c6e --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/get_var_size.sh @@ -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 index 00000000..e872652a --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/loop.yml @@ -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 index 00000000..8cb9bd7d --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/losetup.sh @@ -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 index 00000000..a16d2358 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/tasks/loop.yml @@ -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 index 00000000..ee4c97e5 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/tasks/main.yml @@ -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 index 00000000..fd3351c0 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/tasks/real.yml @@ -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 -- cgit 1.2.3-korg