Jump to: navigation, search

OPS235 Lab 2

1,921 bytes added, 04:49, 18 September 2020
Part 2: Installing from a Network (Minimal install - CLI)
[[Image:vmware-1a.png|thumb|right|400px|At the end of lab2, your VMware Workstation application will contain '''4 virtual machines''' ('''c7host''' in your '''VMware Workstation''' application, and '''centos1, centos2, centos3 VMs''' in your '''KVM''' application). You will now have the option to run one virtual machine at a time, or run all machines simultaneously to learn about networking (covered in later labs) ]]
While you are performing this lab, it is recommended to generally note the major differences in the different installation methods, and which method you prefer to use if you were a Linux system administrator in charge of installing many Linux distributions for an organization.
<u>Main Objectives</u>
* Installing additional Virtualization Software on your '''c7host''' machine ('''KVM''')
* '''Create 3 separate VMs (virtual machines) using different installation methods:'''
:* '''centos1''': Network Centos CentOS Installation ('''Graphical'''):* '''centos2''': Network Centos CentOS Installation (minimal install - '''CLI only'''):* '''centos3''': Network Centos CentOS Installation with Kickstart configuration file ('''CLI only''')
* Manipulate virtual machines by CLI ('''virsh''')
* Properly '''backup VM images''' and backup '''VM configuration files'''
[ chmod]<br>
[ vi]
|valign="top" style="padding-left:20px;"|Matrix Online Tutorials:<br><ul><li>Shell Scripting - Part 2 (Logic & Math Expressions):<br>'''/home/murray.saulops235/scripting-2'''</li><li>Shell Scripting - Part 3 (Loops)<br>'''/home/murray.saulops235/scripting-3'''</li></ul>
{{Admon/note|About KVM|There are actually several key programs installed for virtualization using KVM:<ul><li>'''kvm/qemu''' - the hypervisor and other hardware emulation systems.</li><li>A system service named '''libvirtd''' that manages the VMs.</li><li>A graphical tool for managing virtual machines ('''virt-manager''') and the '''virsh''' command-line tool.</li></ul>}}
</li><li>Start the virtualization service: <b><code><span style="color:#3366CC;font-size:1.2em;">systemctl start libvirtd</span></code></b><br><br>'''NOTE:''' The most recent variants of Centos CentOS and Fedora are using a service called '''firewalld''' that is intended to replace '''iptables''', however the ''iptables'' service is still in relatively common usage. In this course we will concentrate on ''iptables''.<br><br></li><li>To Disable disable and remove firewalld , issue the following commands:<br>
<b><code><span style="color:#3366CC;font-size:1.2em;">systemctl disable firewalld</span></code></b><br>
<b><code><span style="color:#3366CC;font-size:1.2em;">systemctl stop firewalld</span></code></b><br>
<b><code><span style="color:#3366CC;font-size:1.2em;">yum remove firewalld</span></code></b><br>
<li>To install and enable the IPTables services, issue the following commands:<br>
<li value="8">Start the graphical tool by selecting the menu options '''Applications'''>'''System Tools'''>'''Virtual Machine Manager''' or by typing the command<b><code><span style="color:#3366CC;font-size:1.2em;"> virt-manager</span></code></b></li>
<li>You will be learning in the next investigation to perform several different type types of CENTOS CentOS Linux installs.</li>
:'''Perform the following steps:'''
# In a terminal as the root user, edit the file called: '''/boot/efi/EFI/centos/grub.cfg'''<ul><li>'''If this file doesn't exist, double-check your UEFI settings in VMWare Workstation for c7host. If BIOS is selected, <u>you MUST redo Lab 1</u>.'''</li></ul># Search for the <b>first occurrence </b> of the Linux Kernel boot command.Do not make the following changes on more than one entry!
# Insert the boot option: '''kvm-intel.nested=1''' at the end of the Linux kernel boot options.
<blockquote><code style="font-family:courier;font-size:1.2em;margin-left:20px;">
<br>linuxefi /vmlinuz-3.10.0-6931062.21.2.el7.x86_64 root=/dev/mapper/centos_c7host-root ro crashkernel=auto rhgb quiet LANG=en_CA.UTF-8 <span style="color:blue;font-weight:bold">kvm-intel.nested=1</span><br> initrdefi /initramfs-3.10.0-6931062.21.2.el7.x86_64.img
<blockquote><code style="font-family:courier;font-size:1.2em;margin-left:20px;">
linuxefi /boot/vmlinuz-3.10.0-327.18.21062.el7.x86_64 root=/dev/mapper/centos_c7host-root ro crashkernel=auto rhgb quiet LANG=en_CA.UTF-8 <span style="color:blue;font-weight:bold">kvm-intel.nested=1</span><br>initrdefi /boot/initramfs-3.10.0-327.18.21062.el7.x86_64.img
<ol><li value="4">Save your editing changes, close the virtual machine application, and <u>'''reboot'''</u> your c7host VM.</li>
<li>If you configured your c7host VM for nested VMs, then you should get the output <b><code><span style="color:#3366CC;font-size:1.2em;">Y</span></code></b> when you issue the following command:<br><b><code><span style="color:#3366CC;font-size:1.2em;">cat /sys/module/kvm_intel/parameters/nested</span></code></b></li><ul><li>For '''AMD''' processors, check the /sys/module/'''kvm_amd'''/parameters/nested file.</li></ul><ul><li>And if kvm_intel directory doesn't exist, double-check your '''Processors => Virtualization Engine (Intel VT-x/EPT...)''' settings in VMWare Workstation.</li></ul>
:: '''VM Name (and hostname):''' centos1
:: '''Boot media:''' Network installation
:: '''Centos CentOS Full Network Install URL:'''
:::*Seneca Lab:
:: '''Memory:''' 2048MB
:: '''Disk space:''' 15GB
:: '''CPUs:''' 12 [[Image:Kvm-warning.jpg|thumb|right|400px|You may see this warning when creating your first VM inside CentOS. Select''' ''Don't ask me about these directories again'' '''and click''' ''Yes'''''.]]
:'''Perform the following steps:'''
#<span style="background-color:yellow;">During the install, select '''Gnome Desktop''' software selection). For partitioning, select '''I will configure partition settings''', click done, then select '''Click here to create them automatically'''. Set the / partition for '''ext4''' file-system type, and click '''Done'''.</span>
#<span style="background-color:yellow;">Set the correct '''Date and Time Zone''', and then click on '''Network and Hostname'''. The network should be turned on. For hostname, enter: '''centos1''' and then click '''Done'''.</span>
# <span style="background-color:yellow;">Complete the installation. Login to your regular user account, switch to the root user with <b>su -</b>, and perform a '''yum update''' for the centos1 VM (reboot if required). Make certain to adjust your screen-saver settings if desired.</span>
{{Admon/important|Use same root password / regular username / regular user passwords for c7host and ALL VMs|To simplify the lab checking process make certain that you use the identical root password, regular username, and regular username password for VMs that you create in this labs as you did for c7host machine in lab1.<br><br>}}
<ol><li value="13"><span style="background-color:yellow;">Repeat the steps as you did in the previous investigation ([http Investigation1 Part 1]) to '''stop and disable firewalld, install iptables-services, start and enable iptables''' for this newly-created VM.</span></li>
<li><span style="background-color:yellow;">Repeat the steps as you did with c7host post-install to '''disable SELinux''' and perform a '''yum update'''.</span></li>
<li>Issue the following command to obtain the IPADDR for your centos1 VM to record in your lab2 logbook: <b><code><span style="color:#3366CC;font-size:1.2em;">ifconfig</span></code></b></li>
:: '''VM Name (and hostname):''' centos2
:: '''Boot media:''' Network installation
:: '''Centos CentOS Full Network Install URL:'''
:::*Seneca Lab:
# Create the VM (called '''centos2''') as you did with the ''centos1'' machine.
# Make certain to enter the name: '''centos2''', <u>AND</u> then select the option: '''Customize configuration before install''', and select '''Copy Host CPU Configuration''', click '''Apply''', and then click '''Begin Installation'''.
#When selecting the install options for centos2, do the same operation that you did in centos1 (but with '''Minimal Install''' software selection instead), but after '''automatically creating the partitions''', reduce the size of the root LVM partition logical volume to '''8 GiB''' and add an LVM partition a logical volume with a size of '''2 GiB''' (mount point: '''/home''', name: '''home''', and make certain root and /home partitions logical volumes have '''ext4''' file system).<br><br>
# <span style="background-color:yellow;">Complete the installation. Login to your regular user account.</span>
#<span style="background-color:yellow;">Repeat the steps as you did in the previous investigation ([http Investigation1 Part 1]) to '''stop and disable firewalld, install iptables-services, start and enable iptables''' for this newly-created VM.</span>
# <span style="background-color:yellow;">Repeat the steps as you did with c7host post-install to '''disable SELinux''' (using the command 'vi' instead of 'vim') and perform a '''yum update'''.</span>
# The ifconfig command is not available in centos2. Issue the following command to obtain and record your centos2 IPADDR in your lab2 logbook: <b><code><span style="color:#3366CC;font-size:1.2em;">ip address</span></code></b>
:: '''VM Name (and hostname):''' centos3
:: '''Boot media:''' Network installation
:: '''Centos7 CentOS 7 Full Install Network URL:'''
:::*Seneca Lab:
:: '''Kickstart File URL (Kernel options): '''
:::* Seneca Lab:''' <span style="color:green;font-weight:bold">ks=</span>http* Home:''' <span style="color:green;font-weight:bold">ks=</span>http
:: '''VM Image Pathname:''' /var/lib/libvirt/images/centos3.qcow2
:: '''Memory:''' 2048MB ('''IMPORTANT''' Do not use less than 2048MB during installation.)
:: '''Disk space:''' 15GB
:: '''CPUs:''' 2
<br>{{Admon/important|Include ''ks&#61;'' in the URL options field!|When using a kickstart file, make sure you include the''' ''ks&#61;'' '''portion of the link. If done correctly, you should not be able to select partitions or any other settings.}}<br>
:'''Perform the following steps:'''
# Create the VM (called '''centos3''')
# During the install, copy the network URL, then click the '''URL options''' to expand the '''kernel options''' input textbox. Type the following in the kernel options textbox: <ul><li>Seneca Lab:''' <span style="color:green;font-weight:bold">ks=</span>http</li><li>'''Home:''' <span style="color:green;font-weight:bold">ks=</span>http</li></ul>
# Then click the '''forward''' button to proceed. Make certain to select the correct Memory Size and Disk Space size shown in the VM Details above
# Make certain to enter the name: '''centos3''', <u>AND</u> then select the option: '''Customize configuration before install''', and select '''Copy Host CPU Configuration''', click '''Apply''', and then click '''Begin Installation'''.
# Record the time taken to install, and compare this to the time taken by the previous installations.<br><br>If during the installation, you see the message at the bottom '''Pane is Dead''', click the '''Virtual Machine''' menu at the top, select '''Shut Down''' -> '''Force Off''', '''right-click''' on '''centos3''' in the ''virtual manager'' window and select '''Delete'''. Redo the VM setup for a new instance of the ''centos3'' VM.<br><br>
# What happens when the installation is finished?
# Click '''In a web browser''', click the kickstart file (KS) link above. This link in is a web-browser, and record text file. Read through it to find the following information (pay attention to access lines starting with #) and record it in your centos3 VMLab Logbook:<ul><li>'''Regular-user account name'''</li><li>'''Regular-user account password'''</li><li>'''Root Password'''</li></ul>
# Boot the virtual machine and log in (use the user ID and password information from the previous step to gain access to this VM).
# Compare the experience to the first time you booted the other virtual machines.
# <span style="background-color:yellow;">Repeat the steps as you did in the previous investigation ([http Investigation1 Part 1]) to '''stop and disable firewalld, install iptables-services, start and enable iptables''' for this newly-created VM.</span>
# <span style="background-color:yellow;">Repeat the steps as you did with c7host post-install to '''disable SELinux''' and perform a '''yum update'''.</span>
# The ifconfig command may not be available in centos3. Issue the following command to obtain and record your centos2 IPADDR in your lab2 logbook: <b><code><span style="color:#3366CC;font-size:1.2em;">ip address</span></code></b>
'''Answer the INVESTIGATION 2 observations / questions in your lab log book.'''
# Shut down your '''centos1''', '''centos2''', and '''centos3''' VMs. For ''centos2'' and ''centos3'', which are CLI-only, you can issue the following command as root to shutdown: <b><code><span style="color:#3366CC;font-size:1.2em;">shutdown -h</span></code></b>. Please be patient, the VMs will shut down!
# In your '''c7host''' VM, change open a new Terminal window, and '''switch to the root account ''inside'' the terminal'''.# Change to the images directory by issuing the command: <b><code><span style="color:#3366CC;font-size:1.2em;">cd /var/lib/libvirt/images/</span></code></b><brul><li>Note the size of the files in this directory. What do these files contain?</li></ul># Make a compressed backup of your '''centos1.qcow2''' , '''centos2.qcow2''', and '''centos3.qcow2''' files to your regular user's home directory by issuing each command (one at a time):<br><b><code><span style="color:#3366CC;font-size:1.2em;">gzip < centos1.qcow2 > ~YourRegularUsername/centos1.qcow2.backup.gz</span></code></b><br><b><code><span style="color:#3366CC;font-size:1.2em;">gzip < centos2.qcow2 > ~YourRegularUsername/centos2.qcow2.backup.gz</span></code></b><br><b><code><span style="color:#3366CC;font-size:1.2em;">gzip < centos3.qcow2 > ~YourRegularUsername/centos3.qcow2.backup.gz</span></code></b><brul>'''NOTE:''' Make certain to use the redirection signs "<" and ">" properly in the command!<br/ul>
{{Admon/important |Please be patient|It may look like the command prompt is stuck but it could take a while for gzip to compress an entire operating system. '''NOTE:''' Do NOT press '''&lt;ctrl&gt;c''' to cancel this process. If you do, your archive will become incomplete and your recovery will be corrupt.}}
('''NOTE:''' Make certain to use the redirection signs "<ol><li value=" and ">5" properly in the command!)<br><br># Compare the size of the compressed and original files (hint: use '''ls -lh'''). If file is very large (like 15GB), you didn't compress it and you need to remove that file and perform the previous step until you get it right!</li># <li> Start the '''''centos3''''' VM.</li># <li> '''Make certain that you are in your VM and <u>not</u> in your main system!''' </li># <li> Wreck <u>only</u> your centos3 system! Try this command inside the centos3 virtual machine:<b><code><span style="color:#3366CC;font-size:1.2em;">rm -rf /*</span></code></b> (ignore error messages).</li># <li> Shut down the centos3 VM. If you tried to start the centos3 VM, it would not boot since all system files have been removed!</li># <li> Make certain you are in your '''/var/lib/libvirt/images directory'''. Restore the original image from the backup from your home directory to your '''images''' directory by typing this command:<br><b><code><span style="color:#3366CC;font-size:1.2em;">gunzip < ~YourUserId/centos3.qcow2.backup.gz > centos3.qcow2'''</span></code></b></li># <li> Restart the VM. Is it working normally?</li># Create compressed backups of your other virtual machines (ie. '''centos1''' and '''centos2''').# <li> You should make a copy of the xml XML configuration file in case you "wipe" and re-install the host machine, and want to add a restored VM backups to the virtual machine manager list. We will demonstrate using the centos3 xml XML configuration file, and prove that a "clone" can be added to your list.Please perform the following step:</li># <li> Execute the following command: <b><code><span style="color:#3366CC;font-size:1.2em;">virsh dumpxml centos3 > centos3.xml</span></code></b></li># <li> Examine the file <b><code><span style="color:#3366CC;font-size:1.2em;">centos3.xml</span></code></b>. What does it contain? What format is it in?<br><br/li></ol=== Part 2: Restoring Virtual Machines === [[Image:Cinnamon-2.png|thumb|right|500px|Click on the cog icon to select different installed desktop environments.]] # We will now learn how to download a compressed image file and xml XML configuration file and add it as a VM to the virtual manager Virtual Machine Manager menu.# Issue the following commands:<ul><li><b><code><span style="color:#3366CC;font-size:1.2em;">wget http</span></code></b></li><li><b><code><span style="color:#3366CC;font-size:1.2em;">wget</span></code></b><br><br></li></ul><ol><li value="17">The downloaded file "practical1.img.gz" is a "raw image compressed VM file", but will work the same for a Virtual Machine as the qcow2 file format.# Copy these files to the '''/var/lib/libvirt/images''' directory and decompress that raw the qcow2 image file.</li><li># Make certain your present working directory is: '''/var/lib/libvirt/images'''</li><li># Issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">virsh define practical1centos4.xml</span></code></b></li><li># What happened in the virtual manager window? To remove a VM entry in the Virtual Manager window, simply issue the command: '''virsh undefine vm_name''' (without the '''.xml''' file extension)# Start up your new centos4 VM.# Click on the user <i>OPS235</i>, and click the cog icon.# Notice <i>Cinnamon (Software Rendering)</lii> is selected. The Cinnamon desktop environment has been installed on this VM. From this menu, you can select other installed desktop environments. This is how you switch between them. Write it down.# Login with the password <b><i>ops235</i><li/b>. Feel free to explore the new environment.# Prior to your practical test, you will be required to perform a similar operation to download, unzip and run a VM image for your practical test.<br><br></li></ol>{{Admon/important|Shutting Down the Host while Virtual Machines are Running|If you shut down your host system while virtual machines are running, they will be suspended, and will resume the next time you boot your host system.}}<ol> <li value="2212">For the remainder of these labs, it is assumed that you will backup <u>'''both'''</u> the images and xml XML configuration files for <u>'''all'''</u> Virtual machines, when asked to backup your virtual machines. It is also highly recommended to backup these files to an external storage device (eg. USB key) in case the host machine gets "wiped" and you need to rebuild your HOST machine and then restore your Virtual Machines...</li>
<li>Answer this question in your log book:</li>
::* In order to fully back up a virtual machine, what information should be saved in addition to the virtual machine image?
=== Part 23: Using Shell Scripts for VM Backup &amp; Management===
{|width="40%" align="right" cellpadding="10"
|- valign="top"
{{Admon/important|Virtual Machine Does not Shutdown from Command|If the Virtual machine fails to shutdown from the <code>virsh shutdown</code> command, then you can go to the '''Virtual Machine manager''' and '''halt''' or '''shutdown''' within the VM itself, then you can click the '''PowerOff''' button in the VM window. You'll want to avoid a forced shutdown since those are equivalent to yanking the power cord out of the wall on a physical machine!|}}
<ol><li value="9">Open a Bash shell terminal and login as root.</li>
<li>Use a text editor (such as <b><code><span style="color:#3366CC;font-size:1.2em;">vi</span></code></b> or <b><code><span style="color:#3366CC;font-size:1.2em;">nano</span></code></b>) to create a Bash Shell script called: <b><code><span style="color:#3366CC;font-size:1.2em;">backupVM.bash</span></code></b> in /root's home /bin directory.</li>
<li>Enter the following text content into your text-editing session:</li></ol>
<code style="color:#3366CC;font-family:courier;font-size:.9em;">
&nbsp;echo "Backing up VM #$numanswer"<br>
&nbsp;gzip < /var/lib/libvirt/images/centos$numanswer.qcow2 > /root/centos$numanswer.qcow2.backup.gz<br><br>
&nbsp;echo "VM #$numanswer BACKUP DONE":<br>
&nbsp;echo "Invalid Selection... Aborting program"<br>
<li value="15">Save, set permissions, and then run that shell script to backup centos1. Confirm that this script did backup this image to root's home directory</li><li>Use the <b><code>wget</code></b> command to download, study, and run the following shell scripts on-line:<blockquote><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;"><br></span></code></b><br><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;"><br></span></code></b></blockquote></li><li>Try to understand what these Bash Shell scripts do.</li><li>You have completed lab2. Proceed to Completing The Lab, and follow the instructions for "lab sign-off".</li></ol> 
'''Answer INVESTIGATION 2 observations / questions in your lab log book.'''
'''Answer INVESTIGATION 3 observations / questions in your lab log book.'''
===Exclusively for Summer 2020 term, submissions are accepted only online!===Follow the submission instructions for lab 2 on Blackboard.{{Admon/important|Backup ALL of your VMs!|If you have successfully completed this lab, make a new backup of all of your virtual machines onto your UBS USB Key.}} 
:'''Perform the Following Steps:'''
# Use the '''virsh start''' command to launch all the VMs ('''centos1''', '''centos2''', and '''centos3''').
# Inside each virtual machine, run <b><code>ip a</code></b> on the command line. Open a Terminal window in centos1 to do so. You'll need the IP address of each machine for the next steps.
# Switch to your '''c7host''' VM, open a terminal, login as root, and change directory to '''/root/bin'''.
# Issue the Linux command: <b><code><span style="color:#3366CC;font-size:1.2em;">wget http</span></code></b>
# Give the '''lab2-check.bash''' file execute permissions (for the file owner).
# Run the shell script and if any warnings, make fixes and re-run shell script until you receive "congratulations" message.
::&#x2713; '''<u>All</u> VMs''':<blockquote><ul><li>All 4 VMs '''created''' and '''running'''</li><li> Proof of '''yum updates''' on ALL VMs (i.e. results from '''yum update''' command)</li></ul></blockquote>
::<span style="color:green;font-size:1.5em;">&#x2713;</span>'''centos2 c7host VM''':<blockquote><ul><li>Run the '''lab2-check.bash''' script in front of your instructor (must have all <b><code><span style="color:#66cc00;border:thin solid black;font-size:1.2em;">&nbsp;OK&nbsp;</span></code></b> messages)</li></ul></blockquote>
::<span style="color:green;font-size:1.5em;">&#x2713;</span> Lab2 logbook notes completed.
[[Category:OPS235 Labs]]
[[Category:CentOS 7]]
[[Category:Digital Classroom]]

Navigation menu