summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavidjchou <david.j.chou@intel.com>2017-07-18 05:31:50 -0700
committerchigang <chigang@huawei.com>2017-07-19 19:04:26 +0800
commit798f3a062a471a248b0f9131b5651660f431fbd5 (patch)
tree6d9e36dff22efa9d3151346905c5d4e1ee700318
parent37d0565a0277263d11023b62562d130bdd9ee997 (diff)
Add real time kvm feature from kvmfornfv project
JIRA: COMPASS-549 1. Add rt_kvm plugin and os-nosdn-kvm-ha scenario in vm_enviroment 2. Add rt_kvm in compass4nfv playbook 3. Disable kernel update in KVM scenarios Signed-off-by: davidjchou <david.j.chou@intel.com> Change-Id: Ie164fe7ea28ebcb1e41299e92dc51b8ec16310eb Signed-off-by: chigang <chigang@huawei.com>
-rw-r--r--deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml1
-rw-r--r--deploy/adapters/ansible/roles/config-osa/tasks/main.yml7
-rwxr-xr-xdeploy/compass_vm.sh2
-rw-r--r--deploy/conf/hardware_environment/huawei-pod1/os-nosdn-kvm-ha.yml74
-rw-r--r--deploy/conf/vm_environment/os-nosdn-kvm-ha.yml45
-rw-r--r--plugins/rt_kvm/plugins.desc50
-rw-r--r--plugins/rt_kvm/tasks/kvm.yml40
-rw-r--r--plugins/rt_kvm/tasks/main.yml11
-rw-r--r--plugins/rt_kvm/vars/main.yml16
9 files changed, 246 insertions, 0 deletions
diff --git a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
index ddf6f053..41139c5e 100644
--- a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
+++ b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
@@ -22,6 +22,7 @@
roles:
- config-compute
- storage
+ - rt_kvm
- hosts: localhost
remote_user: root
diff --git a/deploy/adapters/ansible/roles/config-osa/tasks/main.yml b/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
index b86a3205..c7663916 100644
--- a/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
+++ b/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
@@ -12,6 +12,13 @@
path: /var/log/osa/
state: directory
+- name: disable kernel update in rt_kvm scenario
+ lineinfile:
+ dest: /etc/ansible/roles/openstack_hosts/vars/ubuntu-16.04.yml
+ state: absent
+ regexp: 'linux-image-extra-*'
+ when: rt_kvm is defined and rt_kvm == "Enable"
+
- name: copy openstack_user_config
template:
src: openstack_user_config.yml.j2
diff --git a/deploy/compass_vm.sh b/deploy/compass_vm.sh
index 42fca803..971db056 100755
--- a/deploy/compass_vm.sh
+++ b/deploy/compass_vm.sh
@@ -93,6 +93,8 @@ function inject_compass_conf() {
function refresh_compass_core () {
sudo docker exec compass-deck bash -c "/opt/compass/bin/manage_db.py createdb"
sudo docker exec compass-deck bash -c "/root/compass-deck/bin/clean_installers.py"
+ sudo docker exec compass-tasks bash -c \
+ "ps aux | grep -E '[a]nsible-playbook|[o]penstack-ansible' | awk '{print \$2}' | xargs kill -9"
sudo rm -rf $WORK_DIR/docker/ansible/run/*
}
diff --git a/deploy/conf/hardware_environment/huawei-pod1/os-nosdn-kvm-ha.yml b/deploy/conf/hardware_environment/huawei-pod1/os-nosdn-kvm-ha.yml
new file mode 100644
index 00000000..678fad22
--- /dev/null
+++ b/deploy/conf/hardware_environment/huawei-pod1/os-nosdn-kvm-ha.yml
@@ -0,0 +1,74 @@
+##############################################################################
+# 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
+##############################################################################
+
+---
+TYPE: baremetal
+FLAVOR: cluster
+POWER_TOOL: ipmitool
+
+ipmiUser: root
+ipmiVer: '2.0'
+
+plugins:
+ - rt_kvm: "Enable"
+
+hosts:
+ - name: host1
+ mac: 'F8:4A:BF:55:A2:8D'
+ interfaces:
+ - eth1: 'F8:4A:BF:55:A2:8E'
+ ipmiIp: 172.16.130.26
+ ipmiPass: Huawei@123
+ roles:
+ - controller
+ - ha
+ - ceph-adm
+ - ceph-mon
+
+ - name: host2
+ mac: 'D8:49:0B:DA:5A:B7'
+ interfaces:
+ - eth1: 'D8:49:0B:DA:5A:B8'
+ ipmiIp: 172.16.130.27
+ ipmiPass: huawei@123
+ roles:
+ - controller
+ - ha
+ - ceph-mon
+
+ - name: host3
+ mac: '78:D7:52:A0:B1:99'
+ interfaces:
+ - eth1: '78:D7:52:A0:B1:9A'
+ ipmiIp: 172.16.130.29
+ ipmiPass: Huawei@123
+ roles:
+ - controller
+ - ha
+ - ceph-mon
+
+ - name: host4
+ mac: 'D8:49:0B:DA:5B:5D'
+ interfaces:
+ - eth1: 'D8:49:0B:DA:5B:5E'
+ ipmiIp: 172.16.130.30
+ ipmiPass: Huawei@123
+ roles:
+ - compute
+ - ceph-osd
+
+ - name: host5
+ mac: 'D8:49:0B:DA:56:85'
+ interfaces:
+ - eth1: 'D8:49:0B:DA:56:86'
+ ipmiIp: 172.16.130.31
+ ipmiPass: Huawei@123
+ roles:
+ - compute
+ - ceph-osd
diff --git a/deploy/conf/vm_environment/os-nosdn-kvm-ha.yml b/deploy/conf/vm_environment/os-nosdn-kvm-ha.yml
new file mode 100644
index 00000000..fd2ede2f
--- /dev/null
+++ b/deploy/conf/vm_environment/os-nosdn-kvm-ha.yml
@@ -0,0 +1,45 @@
+##############################################################################
+# 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
+##############################################################################
+
+---
+TYPE: virtual
+FLAVOR: cluster
+
+plugins:
+ - rt_kvm: "Enable"
+
+hosts:
+ - name: host1
+ roles:
+ - controller
+ - ha
+ - ceph-adm
+ - ceph-mon
+
+ - name: host2
+ roles:
+ - controller
+ - ha
+ - ceph-mon
+
+ - name: host3
+ roles:
+ - controller
+ - ha
+ - ceph-mon
+
+ - name: host4
+ roles:
+ - compute
+ - ceph-osd
+
+ - name: host5
+ roles:
+ - compute
+ - ceph-osd
diff --git a/plugins/rt_kvm/plugins.desc b/plugins/rt_kvm/plugins.desc
new file mode 100644
index 00000000..0dd2680b
--- /dev/null
+++ b/plugins/rt_kvm/plugins.desc
@@ -0,0 +1,50 @@
+# This rt_kvm plugin adds real time kvm feature from kvmfornfv project
+# into Compass4nfv together with scenarios.
+#
+#
+# More details can be found in the development document.
+# ##############################################################
+---
+plugin:
+ # plugin name,it is also as the switch to enable/disable plugin in scenario
+ # files
+ name: rt_kvm
+
+ description: real time kvm based on kvmfornfv
+
+ maintainers:
+ - david.j.chou@intel.com
+
+ # host os type: ubuntu/centos
+ os_version: ubuntu
+
+ # true: this plugin is deployed separately on a new node
+ # false: this plugin is deployed on controller or compute node
+ independent_hosts: false
+
+ # artifact: packege download url for this plugin
+ artifacts:
+ url: http://artifacts.opnfv.org/kvmfornfv/kvmfornfv-4bfeded9-kernel-4.4.50_rt62_ubuntu.x86_64.deb
+
+ # orchestration
+ # A plugin can have mutiple components, each component may need to be
+ # installed on different inventory or have its own configuration.
+ # due to Compass4nfv currently only supports ansible, so each component
+ # of the installation and configuration script need to be use ansible.
+ # cm : congfiguration management tool : only ansible support
+ # role: each component corresponds to ansible script that locates in the same
+ # directory as plugin.desc.
+ # phrase: pre_openstack -- the component is installed after the OS
+ # provisioning, before the OpenStack deployment.
+ # phrase: post_openstack -- the component is installed before the OpenStack
+ # deployment.
+ # inventory: if the phrase is pre_openstack, inventory can be controller and
+ # compute. if the phrase is post_openstack, inventory can be get from the file
+ # openstack-ansible.inventory
+ orchestration:
+ cm: ansible
+ roles:
+ - role: install real time kvm
+ phrase: pre_openstack
+ inventory:
+ - compute
diff --git a/plugins/rt_kvm/tasks/kvm.yml b/plugins/rt_kvm/tasks/kvm.yml
new file mode 100644
index 00000000..5d3ca7bc
--- /dev/null
+++ b/plugins/rt_kvm/tasks/kvm.yml
@@ -0,0 +1,40 @@
+##############################################################################
+# Copyright (c) 2016-2017 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: create workspace directory
+ file:
+ path: "{{ workspace }}"
+ state: directory
+ mode: 0755
+
+- name: download rt_kvm kernel package
+ get_url:
+ url: "{{ rt_kvm_url }}"
+ dest: "{{ workspace }}/{{ rt_kvm_pkg }}"
+
+- name: install rt_kvm kernel
+ command: dpkg -i "{{ workspace }}/{{ rt_kvm_pkg }}"
+
+- name: update the grub
+ command: grub-mkconfig -o /boot/grub/grub.cfg
+
+- name: wait a moment
+ command: sleep 5
+
+- name: reboot the node
+ shell: sleep 2 && shutdown -r now 'Reboot required'
+ become: true
+ async: 1
+ poll: 0
+ ignore_errors: true
+
+- name: wait for reboot
+ local_action:
+ module: wait_for
+ host={{ ansible_eth0.ipv4.address }} port=22 delay=1 timeout=600
diff --git a/plugins/rt_kvm/tasks/main.yml b/plugins/rt_kvm/tasks/main.yml
new file mode 100644
index 00000000..e79fe9ff
--- /dev/null
+++ b/plugins/rt_kvm/tasks/main.yml
@@ -0,0 +1,11 @@
+##############################################################################
+# Copyright (c) 2016-2017 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
+##############################################################################
+---
+- include: kvm.yml
+ when: rt_kvm is defined and rt_kvm == "Enable"
diff --git a/plugins/rt_kvm/vars/main.yml b/plugins/rt_kvm/vars/main.yml
new file mode 100644
index 00000000..9f32d13c
--- /dev/null
+++ b/plugins/rt_kvm/vars/main.yml
@@ -0,0 +1,16 @@
+##############################################################################
+# Copyright (c) 2016-2017 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
+##############################################################################
+---
+workspace: /tmp/plugin
+
+# yamllint disable rule:line-length
+rt_kvm_url: http://artifacts.opnfv.org/kvmfornfv/kvmfornfv-4bfeded9-kernel-4.4.50_rt62_ubuntu.x86_64.deb
+# yamllint enable rule:line-length
+
+rt_kvm_pkg: kvmfornfv-4bfeded9-kernel-4.4.50_rt62_ubuntu.x86_64.deb