From a9ba7729cdba1b743510d73864ed5b75bf5d7d23 Mon Sep 17 00:00:00 2001 From: Igor Yozhikov Date: Thu, 21 Nov 2013 12:43:40 +0400 Subject: [PATCH] Cherry-pick from release-0.3 and modified * Add Linux image build chapter Change-Id: I2d37186ec009751c8f9e763a7179fb1142613501 --- .../src/docbkx/administrators-guide.xml | 3 +- .../src/docbkx/content/linux-image-bulder.xml | 426 ++++++++++ .../docbkx/content/windows-image-bulder.xml | 775 ++++++++++++++++++ 3 files changed, 1203 insertions(+), 1 deletion(-) create mode 100644 src/administrators-guide/src/docbkx/content/linux-image-bulder.xml create mode 100644 src/administrators-guide/src/docbkx/content/windows-image-bulder.xml diff --git a/src/administrators-guide/src/docbkx/administrators-guide.xml b/src/administrators-guide/src/docbkx/administrators-guide.xml index e4c1fb7..1ac49a0 100644 --- a/src/administrators-guide/src/docbkx/administrators-guide.xml +++ b/src/administrators-guide/src/docbkx/administrators-guide.xml @@ -33,7 +33,8 @@ - + + diff --git a/src/administrators-guide/src/docbkx/content/linux-image-bulder.xml b/src/administrators-guide/src/docbkx/content/linux-image-bulder.xml new file mode 100644 index 0000000..3d97bea --- /dev/null +++ b/src/administrators-guide/src/docbkx/content/linux-image-bulder.xml @@ -0,0 +1,426 @@ + + + + + Building Linux Image +
+ Install Required Packages + + + Please check that hardware virtualization is supported and enabled in BIOS. + + + + The following packages should be installed on any host which will be used to build Linux Image: + + + + ipxe-qemu + + + + + kvm-ipxe + + + + + qemu-kvm + + + + + munin-libvirt-plugins + + + + + python-libvirt + + + + + libvirt-bin + + + + + libvirt0 + + + + + munin-libvirt-plugins + + + + + python-libvirt + + + + + virt-goodies + + + + + virt-manager + + + + + virt-top + + + + + virt-what + + + + + virtinst + + + + + python + + + + + + On Ubuntu you could install them using the command below: + + +># apt-get install ipxe-qemu kvm-ipxe qemu-kvm virt-goodies \ + virtinst virt-manager libvirt0 libvirt-bin \ + munin-libvirt-plugins python python-libvirt \ + python-libxml2 python-minimal python-pycurl \ + python-pyorbit python-requests python-six \ + samba samba-common openssh-server virt-top virt-what + +
+
+ Build Linux Image + + Create a VM + + This section describes steps required to build an image of Linux Virtual Machine + which could be used with Murano. There are two possible ways to create it - from + CLI or using GUI tools. We describe both in this section. + + + + Run all commands as root. + + + + Way 1: Using CLI Tools + + + This section describes the required step to launch a VM using CLI tools only. + + + + + + Preallocate disk image + + +># qemu-img create -f qcow2 /var/lib/libvirt/images/cloud-linux.img 10G + + + + + Start the VM + + +># virt-install --connect qemu:///system --hvm --name cloud-linux \ + --ram 2048 --vcpus 2 --cdrom /PATH_TO_YOUR_LINUX.ISO \ + --disk path=/var/lib/libvirt/images/cloud-linux.img, \ + format=qcow2,bus=virtio,cache=none \ + --network network=default,model=virtio \ + --memballoon model=virtio --vnc --os-type=linux \ + --accelerate --noapic --keymap=en-us --video=cirrus --force + + + + + + Way 2: Using virt-manager UI + + + A VM also could be lauched via GUI tools like virt-manager. + + + + + Launch virt-manager from shell + as root + + + + Set a name for VM and select Local install media + + + + + Add one cdrom and attach your linux ISO image to it + + + + + Select OS type Linux and it's + version choose yours + + + + + Set CPU and RAM amount + + + + + Deselect option Enable storage for this + virtual machine + + + + + Select option Customize configuration before + install + + + + + Add (or create new) HDD image with Disk bus VirtIO and storage format QCOW2 + + + + Set network device model VirtIO + + + + Start installation process and open guest vm screen through + Console button + + + + +
+
+ Guest VM Linux OS preparation + + Ubuntu 12.04 LTS x86_64 + + +># for action in update upgrade dist-upgrade;do apt-get -y $action;done +># apt-get install -y git unzip make cmake gcc python-dev python-pip openssh-server sudo + + + CentOS 6.4 x86_64 + + +># rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm +># for action in update upgrade;do yum -y $action; done +># yum install -y git unzip make cmake gcc python-devel python-pip openssh-server openssh-clients sudo + + + murano-agent installation steps + + +># mkdir -p /opt/git +># cd /opt/git +># git clone https://github.com/stackforge/murano-agent.git +># cd murano-agent/python-agent +># git checkout release-0.3 +># chmod a+x setup*.sh +># ./setup.sh install +or +># ./setup-centos.sh install + + + cloud-init installation steps + + + + Ubuntu + + +># apt-get install -y cloud-init cloud-initramfs-growroot + + + + + CentOS + + +># yum install -y cloud-init + + + + Ubuntu only + + +># dpkg-reconfigure cloud-init + + + Mark EC2 data source support, save and exit or add manualy Ec2 to the datasource_list variable in the /etc/cloud/cloud.cfg.d/90_dfkg.cfg + + + + + + Minimal cloud-init configuration options + + +># vi /etc/cloud/cloud.cfg: + user: ec2-user + disable_root: 1 + preserve_hostname: False + + + + + + Security setup + + + Create user and make it able to run commands through sudo without password prompt. + + + + Ubuntu + + +># useradd -m -G sudo -s /bin/bash ec2-user +># passwd ec2-user + + + + + CentOS + + +># useradd -m -G wheel -s /bin/bash ec2-user +># passwd ec2-user + + + + + Sudo + + +># echo "ec2-user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ec2-user +># chmod 440 /etc/sudoers.d/ec2-user + + + + + Disable SSH password-based logins in the /etc/ssh/sshd_config. + + +... +GSSAPIAuthentication no +PasswordAuthentication no +PermitRootLogin no +... + + + + + + Network handling + + + + Ubuntu + + +># rm -rf /etc/udev/rules.d/70-persistent-net.rules + + + + + CentOS + Remove or comment out HWADDR and UUID in /etc/sysconfig/network-scripts/ifcfg-eth* + + +># rm -rf /etc/udev/rules.d/70-persistent-net.rules + + + + + + Shutdown VM + + + Convert the image from RAW to QCOW2 format if you made it as RAW + + The image must be converted from RAW format to QCOW2 before being imorted into Glance. + + + + +># qemu-img convert -O qcow2 /var/lib/libvirt/images/cloud-linux.img \ +/var/lib/libvirt/images/cloud-linux.img.qcow2 + + +
+
+ Upload Image Into Glance + + Services deployed by Murano require specially prepared images. + After images are created they should be registered in Openstack Glance - image operation service. + + +># glance image-create --disk-format=qcow2 --container-format=bare --is-public=true --file=cloud-linux.img --name=cloud-linux + + + Image should be marked with an appropriate type. That could be done through the Horizon UI. + Navigate to Project -> Environments -> Marked Images -> Mark Image and fill up form: + + + + Image - cloud-linux + + + + + Title - My Cloud-ready Linux + + + + + Type - Generic Linux + + + + + + + After these steps desired image can be chosen in Murano dashboard and used for services platform. + +
+
diff --git a/src/administrators-guide/src/docbkx/content/windows-image-bulder.xml b/src/administrators-guide/src/docbkx/content/windows-image-bulder.xml new file mode 100644 index 0000000..cfebae5 --- /dev/null +++ b/src/administrators-guide/src/docbkx/content/windows-image-bulder.xml @@ -0,0 +1,775 @@ + + + + + Building Windows Image + + Murano requires a Windows Image in QCOW2 format to be built and uploaded into Glance. + + + The easiest way to build Windows image for Murano is to build it on the host where your OpenStack is installed. + +
+ Install Required Packages + + + Please check that hardware virtualization supported and enabled in BIOS. + + + + The following packages should be installed on any host which will be used to build Windows Image: + + + + ipxe-qemu + + + + + kvm-ipxe + + + + + qemu-kvm + + + + + munin-libvirt-plugins + + + + + python-libvirt + + + + + libvirt-bin + + + + + libvirt0 + + + + + munin-libvirt-plugins + + + + + python-libvirt + + + + + virt-goodies + + + + + virt-manager + + + + + virt-top + + + + + virt-what + + + + + virtinst + + + + + python + + + + + + On Ubuntu you could install them using the command below: + + +># apt-get install ipxe-qemu kvm-ipxe qemu-kvm virt-goodies \ + virtinst virt-manager libvirt0 libvirt-bin \ + munin-libvirt-plugins python python-libvirt \ + python-libxml2 python-minimal python-pycurl \ + python-pyorbit python-requests python-six \ + samba samba-common openssh-server virt-top virt-what + +
+
+ Configure Shared Resource + + Configure samba based share + + +># mkdir -p /opt/samba/share +># chown -R nobody:nogroup /opt/samba/share + + + + + Configure samba server (/etc/samba/smb.conf) + + +... +[global] + ... + security = user +... +[share] + comment = Deployment Share + path = /opt/samba/share + browsable = yes + read only = no + create mask = 0755 + guest ok = yes + guest account = nobody +... + + + + + Restart services + + +># service smbd restart +># service nmbd restart + + + +
+
+ Prerequisites + Download the files below and copy them into their places in your ${SHARE_PATH} folder (we usually use /opt/samba/share as ${SHARE_PATH}): + + Windows 2012 Server ISO evaluation version + + ${SHARE_PATH}/libvirt/images/ws-2012-eval.iso + + + + + http://technet.microsoft.com/en-us/evalcenter/hh670538.aspx + + + + + + + VirtIO drivers for Windows + + ${SHARE_PATH}/libvirt/images/virtio-win-0.1-52.iso + + + + + http://alt.fedoraproject.org/pub/alt/virtio-win/stable/virtio-win-0.1-52.iso + + + + + + + CloudBase-Init for Windows + + ${SHARE_PATH}/share/files/CloudbaseInitSetup_Beta.msi + + + + + http://www.cloudbase.it/downloads/CloudbaseInitSetup_Beta.msi + + + + + + + Far Manager + + ${SHARE_PATH}/share/files/Far30b3367.x64.20130426.msi + + + + + http://www.farmanager.com/files/Far30b3525.x64.20130717.msi + + + + + + + Git client + + ${SHARE_PATH}/share/files/Git-1.8.1.2-preview20130201.exe + + + + + https://msysgit.googlecode.com/files/Git-1.8.3-preview20130601.exe + + + + + + + Sysinternals Suite + + ${SHARE_PATH}/share/files/SysinternalsSuite.zip + + + + + http://download.sysinternals.com/files/SysinternalsSuite.zip + + + + + + + unzip.exe tool + + ${SHARE_PATH}/share/files/unzip.exe + + + + + https://www.dropbox.com/sh/zthldcxnp6r4flm/-k1Om_V6XR + + + + + + + PowerShell v3 + + ${SHARE_PATH}/share/files/Windows6.1-KB2506143-x64.msu + + + + + http://www.microsoft.com/en-us/download/details.aspx?id=34595 + + + + + + + .NET 4.0 + + ${SHARE_PATH}/share/files/dotNetFx40_Full_x86_x64.exe + + + + + http://www.microsoft.com/en-us/download/details.aspx?id=17718 + + + + + + + .NET 4.5 + + ${SHARE_PATH}/share/files/dotNetFx45_Full_setup.exe + + + + + http://www.microsoft.com/en-us/download/details.aspx?id=30653 + + + + + + + Murano Agent + + ${SHARE_PATH}/share/files/MuranoAgent.zip + + + + + https://www.dropbox.com/sh/zthldcxnp6r4flm/-k1Om_V6XR + + + + + + +
+
+ Additional Software + This section describes additional software which is required to build an Windows + Image. + + Windows ADK + + + Windows Assessment and Deployment Kit (ADK) for Windows® + 8 is required to build your own answer files for auto unattended + Windows installation. + + + You can dowload it from + http://www.microsoft.com/en-us/download/details.aspx?id=30652. + + + PuTTY + + PuTTY is a useful tool to manage your Linux boxes via SSH. + + + You can download it from + http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. + + + Windows Server 2012 ISO image + + We use the following Windows installation images: + + Windows Server 2008 R2 + + Image Name: + 7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso + + + URL: + http://www.microsoft.com/en-us/download/details.aspx?id=11093 + + + + + + Windows Server 2012 + + Image Name: + 9200.16384.WIN8_RTM.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.iso + + + URL: + http://technet.microsoft.com/en-US/evalcenter/hh670538.aspx?ocid=&wt.mc_id=TEC_108_1_33 + + + + + + + VirtIO Red Hat drivers ISO image + + + + Please, choose stable version instead of latest, We’ve got errors with unstable drivers during guest unattended install. + + + + Download drivers from + http://alt.fedoraproject.org/pub/alt/virtio-win/stable/ + + + Floppy Image With Unattended File + + + Run following commands as root: + + + + + + Create emtpy floppy image in your home folder + + +># dd bs=512 count=2880 \ + if=/dev/zero of=~/floppy.img \ + mkfs.msdos ~/floppy.img + + + + + Mount the image to /media/floppy + + +># mkdir /media/floppy mount -o loop \ + ~/floppy.img /media/floppy + + + + + Download autounattend.xml file from + https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/files/ws-2012-std/autounattend.xml + + + +># cd ~ +># wget https://raw.github.com/stackforge/murano-deployment\ +/master/image-builder/share/files/ws-2012-std/autounattend.xml + + + + + Copy our autounattend.xml to /media/floppy + + +># cp ~/autounattend.xml /media/floppy + + + + + Unmount the image + + +># umount /media/floppy + + + +
+
+ Build Windows Image (Automatic Way) + + + Clone murano-deployment repository + +># git clone git://github.com/stackforge/murano-deployment.git + + + + Change directory to murano-deployment/image-builder folder. + + + Create folder structure for image builder + +># make build-root + + + + Create shared resource + + Add to /etc/samba/smb.conf + + +[image-builder-share] + comment = Image Builder Share + browsable = yes + path = /opt/image-builder/share + guest ok = yes + guest user = nobody + read only = no + create mask = 0755 + + + + + Restart samba services + + +># restart smbd && restart nmbd + + + + + + Test that all required files are in place + +># make test-build-files + + + + Get list of available images + +># make + + + + Run image build process + +># make ws-2012-std + + + + Wait until process finishes + + + The image file ws-2012-std.qcow2 should be + stored under /opt/image-builder/share/images + folder. + + +
+
+ Build Windows Image (Manual Way) + + Please note that the preferred way to build images is to use Automated Build described in the previous chapter. + + Get Post-Install Scripts + + There are a few scripts which perform all the required post-installation tasks. + + Package installation tasks are performed by script named wpi.ps1. + Download it from + https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/scripts/ws-2012-std/wpi.ps1 + + + There are a few scripts named wpi.ps1, each + supports only one version of Windows image. The script above is intended to be + used to create Windows Server 2012 Standard. To build other version of Windows + please use appropriate script from scripts + folder. + + Clean-up actions to finish image preparation are performed by Start-Sysprep.ps1 + script. + Download it from + https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/scripts/ws-2012-std/Start-Sysprep.ps1 + + These scripts should be copied to the shared resource folder, subfolder Scripts. + + Create a VM + + This section describes steps required to build an image of Windows Virtual Machine + which could be used with Murano. There are two possible ways to create it - from + CLI or using GUI tools. We describe both in this section. + + + + Run all commands as root. + + + + + Way 1: Using CLI Tools + + This section describes the required step to launch a VM using CLI tools only. + + + + + + Preallocate disk image + + +># qemu-img create -f raw /var/lib/libvirt/images/ws-2012.img 40G + + + + + Start the VM + + +># virt-install --connect qemu:///system --hvm --name WinServ \ + --ram 2048 --vcpus 2 --cdrom /opt/samba/share/9200.16384.WIN8_RTM\ +.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.ISO \ + --disk path=/opt/samba/share/virtio-win-0.1-52.iso,device=cdrom \ + --disk path=/opt/samba/share/floppy.img,device=floppy \ + --disk path=/var/lib/libvirt/images/ws-2012.qcow2\ +,format=qcow2,bus=virtio,cache=none \ + --network network=default,model=virtio \ + --memballoon model=virtio --vnc --os-type=windows \ + --os-variant=win2k8 --noautoconsole \ + --accelerate --noapic --keymap=en-us --video=cirrus --force + + + + + + Way 2: Using virt-manager UI + + A VM also could be lauched via GUI tools like virt-manager. + + + + + Launch virt-manager from shell + as root + + + Set a name for VM and select Local install media + + + Add one cdrom and attach Windows Server ISO image to it + + + Select OS type Windows and it's + version Windows Server 2008 + + + + Set CPU and RAM amount + + + Deselect option Enable storage for this + virtual machine + + + + Select option Customize configuration before + install + + + + Add second cdrom for ISO image with virtio drivers + + + Add a floppy drive and attach our floppy image to it + + + Add (or create new) HDD image with Disk bus VirtIO and storage format RAW + + + + Set network device model VirtIO + + + + Start installation process and open guest vm screen through + Console button + + + + + + Convert the image from RAW to QCOW2 format + The image must be converted from RAW format to QCOW2 before being imorted into + Glance. + + + +># qemu-img convert -O qcow2 /var/lib/libvirt/images/ws-2012.raw \ + /var/lib/libvirt/images/ws-2012-ref.qcow2 + + + +
+
+ Upload Image Into Glance + + Services deployed by Murano require specially prepared images, that can be created manually or via automated scripts. + Please refer to corresponding chapters of this book to create image. After images are created they should be registered in Openstack Glance - image operation service. + + + + + Use the glance image-create command to import your disk image to Glance: + +>$ glance image-create --name <NAME> \ + --is-public true --disk-format qcow2 \ + --container-format bare \ + --file <IMAGE_FILE> \ + --property <IMAGE_METADATA> + + + + Replace the command line arguments to glance image-create with the appropriate values for your environment and disk image: + + + + + Replace <NAME> with the name that users will refer to the disk image by. + E.g. 'ws-2012-std' + + + + + Replace <IMAGE_FILE> with the local path to the image file to upload. + E.g. 'ws-2012-std.qcow2'. + + + + Replace <IMAGE_METADATA> with the + following property string + +murano_image_info='{"title": "Windows 2012 Standart Edition", "type": "windows.2012"}' + + where + + title - user-friendly description of the image + + + type - is a image type, for example 'windows.2012' + + + + + + + + To update metadata of the existing image run the command: + +>$ glance image-update <IMAGE-ID> --property <IMAGE_MATADATA> + + + + + Replace <IMAGE-ID> with image id from the previous command output. + + + + Replace <IMAGE_METADATA> with + murano_image_info property, e.g. + +murano_image_info='{"title": "Windows 2012 Standart Edition", "type": "windows.2012"}' + + + + + + + + The value of the --property argument named murano_image_info is a JSON + string. Only double quotes are valid in JSON, so please type + the string exactly as in the example above. + + + After these steps desired image can be chosen in Murano dashboard and used for services platform. + +
+