diff options
Diffstat (limited to 'deploy')
12 files changed, 198 insertions, 3 deletions
diff --git a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml index 417c0546..ddf6f053 100644 --- a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml +++ b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml @@ -21,6 +21,7 @@ remote_user: root roles: - config-compute + - storage - hosts: localhost remote_user: root diff --git a/deploy/adapters/ansible/roles/config-osa/templates/create-network.yml.j2 b/deploy/adapters/ansible/roles/config-osa/templates/create-network.yml.j2 index 419b9b18..301bf9da 100644 --- a/deploy/adapters/ansible/roles/config-osa/templates/create-network.yml.j2 +++ b/deploy/adapters/ansible/roles/config-osa/templates/create-network.yml.j2 @@ -15,7 +15,7 @@ - name: create external net shell: | . /root/openrc; - openstack network create --share --external \ + openstack network create --external \ --provider-physical-network {{ public_net_info.provider_network }} \ --provider-network-type {{ public_net_info.type }} {{ public_net_info.network }}; when: {{ public_net_info.enable }} == True @@ -24,7 +24,7 @@ - name: create external net shell: | . /root/openrc; - openstack network create --share --external \ + openstack network create --external \ --network-segment {{ public_net_info.segment_id }} \ --provider-network-type {{ public_net_info.type }} {{ public_net_info.network }}; when: {{public_net_info.enable}} == True 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 diff --git a/deploy/client.py b/deploy/client.py index 6d5daa38..366ae418 100644 --- a/deploy/client.py +++ b/deploy/client.py @@ -952,6 +952,9 @@ class CompassClient(object): deployment_timeout = time.time() + 60 * float(CONF.deployment_timeout) # noqa current_time = time.time while current_time() < deployment_timeout: + if not ansible_print.is_alive(): + raise RuntimeError("can not get ansible log") + status, cluster_state = self.get_cluster_state(cluster_id) if not self.is_ok(status): raise RuntimeError("can not get cluster state") @@ -975,7 +978,7 @@ class CompassClient(object): % (current_time(), deployment_timeout)) LOG.info("cobbler status:") os.system("sudo docker exec compass-cobbler bash -c \ - 'cobbler status'" % (CONF.rsa_file)) + 'cobbler status'") raise RuntimeError("installation timeout") try: |