Merge "Initial changes for testing VM creation for CentOS"

This commit is contained in:
Jenkins 2015-06-18 02:51:18 +00:00 committed by Gerrit Code Review
commit 7e8d35a14a
5 changed files with 71 additions and 22 deletions

View File

@ -0,0 +1,20 @@
---
libvirt_service_name: libvirtd
required_packages:
- qemu-img
- qemu-kvm-tools
- qemu-kvm
- qemu-kvm-common
- sgabios
- libvirt
- libvirt-client
- libvirt-daemon
- libvirt-daemon-config-network
- libvirt-daemon-config-nwfilter
- libvirt-daemon-driver-network
- libvirt-daemon-driver-nodedev
- libvirt-daemon-driver-nwfilter
- libvirt-daemon-driver-qemu
- libvirt-daemon-driver-secret
- libvirt-daemon-driver-storage
- libvirt-daemon-kvm

View File

@ -0,0 +1,8 @@
---
libvirt_service_name: libvirt-bin
required_packages:
- libvirt-bin
- qemu-utils
- qemu-kvm
- qemu-system-x86
- sgabios

View File

@ -0,0 +1,12 @@
---
libvirt_service_name: libvirtd
required_packages:
- qemu-img
- qemu-kvm-tools
- qemu-kvm
- qemu-kvm-common
- qemu-system-x86
- sgabios
- libvirt
- libvirt-client
- libvirt-daemon

View File

@ -38,6 +38,15 @@ VM_EMULATOR=${VM_EMULATOR:-/usr/bin/qemu-system-x86_64}
VM_CPU=${VM_CPU:-1} VM_CPU=${VM_CPU:-1}
VM_RAM=${VM_RAM:-3072} VM_RAM=${VM_RAM:-3072}
VM_DISK=${VM_DISK:-10} VM_DISK=${VM_DISK:-10}
VM_MACHINE="pc-1.0"
# CentOS provides a single emulator package
# which differs from other distributions, and
# needs to be explicitly set.
if [ -e /etc/centos-release ]; then
VM_EMULATOR=/usr/libexec/qemu-kvm
VM_MACHINE="pc"
fi
# VM network # VM network
VM_NET_BRIDGE=${VM_NET_BRIDGE:-default} VM_NET_BRIDGE=${VM_NET_BRIDGE:-default}
@ -95,6 +104,12 @@ function create_node {
if [ -n "$LOGDIR" ] ; then if [ -n "$LOGDIR" ] ; then
mkdir -p "$LOGDIR" mkdir -p "$LOGDIR"
if [ -e /etc/centos-release ]; then
# NOTE(TheJulia): For some unknown reason, libvirt's log folder permissions
# on CentOS ship in an inoperable state. Users must be able to read a folder
# to open files in the folder structure.
chmod o+rx "$LOGDIR/.."
fi
fi fi
PREALLOC= PREALLOC=
@ -112,15 +127,20 @@ function create_node {
volume_path=$(virsh vol-path --pool $LIBVIRT_STORAGE_POOL $VOL_NAME) volume_path=$(virsh vol-path --pool $LIBVIRT_STORAGE_POOL $VOL_NAME)
# Pre-touch the VM to set +C, as it can only be set on empty files. # Pre-touch the VM to set +C, as it can only be set on empty files.
touch "$volume_path" touch "$volume_path"
chattr +C "$volume_path" || true
# NOTE(TheJulia): CentOS default installs with an XFS root, and chattr
# fails to set +C on XFS. This could be more elegent, however the use
# case is for CI testing.
if [ ! -e /etc/centos-release ]; then
chattr +C "$volume_path" || true
fi
vm_xml=" vm_xml="
<domain type='qemu'> <domain type='qemu'>
<name>${NAME}</name> <name>${NAME}</name>
<memory unit='KiB'>${MEM}</memory> <memory unit='KiB'>${MEM}</memory>
<vcpu>${CPU}</vcpu> <vcpu>${CPU}</vcpu>
<os> <os>
<type arch='${ARCH}' machine='pc-1.0'>hvm</type> <type arch='${ARCH}' machine='${VM_MACHINE}'>hvm</type>
<boot dev='network'/> <boot dev='network'/>
<bootmenu enable='no'/> <bootmenu enable='no'/>
<bios useserial='yes'/> <bios useserial='yes'/>

View File

@ -14,27 +14,16 @@
# #
# TODO: Consider converting to ansible virt module. # TODO: Consider converting to ansible virt module.
--- ---
- name: "Install testing apt packages for Ubuntu/Debian" - name: "Load Distribution defaults"
when: ansible_os_family == 'Debian' include_vars: "{{ item }}"
apt: name={{ item }} state=present with_first_found:
with_items: - "../defaults/required_defaults_{{ ansible_distribution }}.yml"
- libvirt-bin - "../defaults/required_defaults_{{ ansible_os_family }}.yml"
- qemu-utils - name: "Install required packages"
- qemu-kvm action: "{{ ansible_pkg_mgr }} name={{item}} state=present"
- qemu-system-x86 with_items: required_packages
- sgabios
- name: "Install testing yum packages for RedHat/CentOS/Fedora/OpenSuse"
when: ansible_os_family in ['CentOS', 'Fedora', 'OpenSuse', 'RedHat']
yum: name={{ item }} state=present
with_items:
- libvirt-client
- qemu-img
- qemu-kvm-tools
- qemu-kvm
- qemu-system-x86
- sgabios
- name: "Restart libvirt service" - name: "Restart libvirt service"
service: name=libvirt-bin state=restarted service: name={{libvirt_service_name}} state=restarted
- name: "Create virtual machines" - name: "Create virtual machines"
script: create_vm_nodes-for-role.sh script: create_vm_nodes-for-role.sh
environment: environment: