diff options
Diffstat (limited to 'deploy/adapters/ansible/roles/storage')
9 files changed, 191 insertions, 0 deletions
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..00392929 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/create_img.sh @@ -0,0 +1,12 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +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..9d679f97 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/get_var_size.sh @@ -0,0 +1,14 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +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..32088de7 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/loop.yml @@ -0,0 +1,10 @@ +--- +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +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..8a22a62a --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/losetup.sh @@ -0,0 +1,15 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +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/files/storage b/deploy/adapters/ansible/roles/storage/files/storage new file mode 100755 index 00000000..3acc6115 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/storage @@ -0,0 +1,10 @@ +#! /bin/bash +### BEGIN INIT INFO +# Provides: Storage +# Required-Start: $remote_fs $network +# Required-Stop: $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: Storage +### END INIT INFO +loop_dev=`sh /opt/setup_storage/losetup.sh` diff --git a/deploy/adapters/ansible/roles/storage/files/storage.service b/deploy/adapters/ansible/roles/storage/files/storage.service new file mode 100644 index 00000000..924db25a --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/files/storage.service @@ -0,0 +1,15 @@ +[Unit] +Description=Storage Service +Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target +After=remote-fs.target nss-lookup.target network-online.target time-sync.target network-online.target net_init.service +Before=ceph.service +Wants=network-online.target +Conflicts=shutdown.target + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "/etc/init.d/storage" + +[Install] +WantedBy=multi-user.target + 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..599e2ced --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/tasks/loop.yml @@ -0,0 +1,31 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- + +- 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=cinder-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..b054be9e --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/tasks/main.yml @@ -0,0 +1,68 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +- 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 + +- name: make setup_storage directory + file: path=/opt/setup_storage state=directory mode=0755 + tags: + - storage + +- name: copy setup storage scripts + copy: src={{ item }} dest=/opt/setup_storage mode=0755 + with_items: + - losetup.sh + tags: + - storage + +- name: set autostart file + copy: src=storage dest=/etc/init.d/storage mode=0755 + tags: + - storage + +- name: set autostart file for centos + copy: + src: storage.service + dest: /usr/lib/systemd/system/storage.service + mode: 0755 + when: ansible_os_family == "RedHat" + tags: + - storage + +- name: add to boot scripts + shell: update-rc.d storage defaults + when: ansible_os_family == "Debian" + tags: + - storage + +- name: add to boot scripts + shell: | + chkconfig --add storage; + chkconfig --level 2345 storage on; + when: ansible_os_family == 'RedHat' + tags: + - storage + +- meta: flush_handlers 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..6c2ac4a6 --- /dev/null +++ b/deploy/adapters/ansible/roles/storage/tasks/real.yml @@ -0,0 +1,16 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +- 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=cinder-volumes pvs={{ physical_device }} + vg_options=--force |