Add real time kvm feature from kvmfornfv project 91/37291/11
authordavidjchou <david.j.chou@intel.com>
Tue, 18 Jul 2017 12:31:50 +0000 (05:31 -0700)
committerchigang <chigang@huawei.com>
Wed, 19 Jul 2017 11:04:26 +0000 (19:04 +0800)
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>
deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
deploy/adapters/ansible/roles/config-osa/tasks/main.yml
deploy/compass_vm.sh
deploy/conf/hardware_environment/huawei-pod1/os-nosdn-kvm-ha.yml [new file with mode: 0644]
deploy/conf/vm_environment/os-nosdn-kvm-ha.yml [new file with mode: 0644]
plugins/rt_kvm/plugins.desc [new file with mode: 0644]
plugins/rt_kvm/tasks/kvm.yml [new file with mode: 0644]
plugins/rt_kvm/tasks/main.yml [new file with mode: 0644]
plugins/rt_kvm/vars/main.yml [new file with mode: 0644]

index ddf6f05..41139c5 100644 (file)
@@ -22,6 +22,7 @@
   roles:
     - config-compute
     - storage
+    - rt_kvm
 
 - hosts: localhost
   remote_user: root
index b86a320..c766391 100644 (file)
     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
index 42fca80..971db05 100755 (executable)
@@ -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 (file)
index 0000000..678fad2
--- /dev/null
@@ -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 (file)
index 0000000..fd2ede2
--- /dev/null
@@ -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 (file)
index 0000000..0dd2680
--- /dev/null
@@ -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 (file)
index 0000000..5d3ca7b
--- /dev/null
@@ -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 (file)
index 0000000..e79fe9f
--- /dev/null
@@ -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 (file)
index 0000000..9f32d13
--- /dev/null
@@ -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