aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml1
-rw-r--r--deploy/adapters/ansible/roles/config-osa/templates/create-network.yml.j24
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/files/create_img.sh12
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/files/get_var_size.sh14
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/files/loop.yml10
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/files/losetup.sh15
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/files/storage10
-rw-r--r--deploy/adapters/ansible/roles/storage/files/storage.service15
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/tasks/loop.yml31
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/tasks/main.yml68
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/tasks/real.yml16
-rw-r--r--deploy/client.py5
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: