From 798f3a062a471a248b0f9131b5651660f431fbd5 Mon Sep 17 00:00:00 2001 From: davidjchou Date: Tue, 18 Jul 2017 05:31:50 -0700 Subject: 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 Change-Id: Ie164fe7ea28ebcb1e41299e92dc51b8ec16310eb Signed-off-by: chigang --- .../ansible/openstack/HA-ansible-multinodes.yml | 1 + .../ansible/roles/config-osa/tasks/main.yml | 7 ++ deploy/compass_vm.sh | 2 + .../huawei-pod1/os-nosdn-kvm-ha.yml | 74 ++++++++++++++++++++++ deploy/conf/vm_environment/os-nosdn-kvm-ha.yml | 45 +++++++++++++ plugins/rt_kvm/plugins.desc | 50 +++++++++++++++ plugins/rt_kvm/tasks/kvm.yml | 40 ++++++++++++ plugins/rt_kvm/tasks/main.yml | 11 ++++ plugins/rt_kvm/vars/main.yml | 16 +++++ 9 files changed, 246 insertions(+) create mode 100644 deploy/conf/hardware_environment/huawei-pod1/os-nosdn-kvm-ha.yml create mode 100644 deploy/conf/vm_environment/os-nosdn-kvm-ha.yml create mode 100644 plugins/rt_kvm/plugins.desc create mode 100644 plugins/rt_kvm/tasks/kvm.yml create mode 100644 plugins/rt_kvm/tasks/main.yml create mode 100644 plugins/rt_kvm/vars/main.yml 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 -- cgit 1.2.3-korg