1,234
edits
Changes
→Part 2: Installing from a Network (Minimal install - CLI)
= LAB PREPARATION =
[[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) ]]
=== Purpose / Objectives of Lab2Lab 2===
In this lab, you will create 3 remaining virtual machines using another virtualization program called '''KVM''' that will run in your c7host VM. These VMs will be used throughout the remainder of this course to learn how to administer them (installing software, managing services, networking, etc).
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'''
Miscellaneous<br>
[http://linuxcommand.org/lc3_man_pages/gzip1.html gzip , gunzip]<br>
[http://man7.org/linux/man-pages/man8/ip.8.html ip]<br>
[http://man7.org/linux/man-pages/man1/grep.1.html grep]<br>
[http://man7.org/linux/man-pages/man1/wc.1.html wc]<br>
[http://man7.org/linux/man-pages/man1/chmod.1.html chmod]<br>
[http://ss64.com/vi.html 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>
|}
</source>'''NOTE:''' Do NOT press '''<ctrl>c''' since it may cause your machine to cause a kernel panic when you restart your machine.}}
<ol><li value="3">As root, install the virtualization software by issuing the command:<br><b><code><span style="color:#3366CC;font-size:1.2em;">yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python \<br>python-virtinst libvirt-client virt-install virt-viewer bridge-utils</span></code></b> <br><br></li>
<li>'''Restart your c7host virtual machine'''. If you fail to do this, you may experience virtualization network problems.
{| width="40%" align="right" cellpadding="10"
{{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>
<br></li>
<li>To install and enable the IPTables services, issue the following commands:<br>
<ol>
<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>
</ol>
:'''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. See <ol>{{Admon/important|About the reference settings shown below for reference|* Only '''ONE''' of these settings might be applicable.* Enter '''JUST''' the text highlighted in '''BLUE''' as your kernel version, root, and LVM settings might vary slightly.}}</ol> <blockquote><code style="font-family:courier;font-size:1.2em;margin-left:20px;"><br>linuxefi /vmlinuz-3.10.0-1062.1.2.el7.x86_64 root=/dev/mapper/centos_c7host-root ro crashkernel=auto rd.lvm.lv=centos_c7host/root rd.lvm.lv=centos_c7host/swap 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-1062.1.2.el7.x86_64.img</code></blockquote> <span style="color:red;font-weight:bold">OR</span>
<blockquote><code style="font-family:courier;font-size:1.2em;margin-left:20px;">
<br>
linuxefi /boot/vmlinuz-3.10.0-327.18.21062.el7.x86_64 root=/dev/mapper/centos_c7host-root ro crashkernel=auto rd.lvm.lv=centos_c7host/root rd.lvm.lv=centos_c7host/swap 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
</code></blockquote>
<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>
</ol>
:: '''VM Name (and hostname):''' centos1
:: '''Boot media:''' Network installation
:: '''Centos CentOS Full Network Install URL:''':::*Seneca Lab: httphttps://belmontmirror.senecac.onsenecacollege.ca/centos/7/os/x86_64/:::*Home: http://mirror.csclubnetflash.uwaterloo.canet/centos/7/os/x86_64/
:: '''VM Image Pathname:''' /var/lib/libvirt/images/centos1.qcow2
:: '''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;">Another dialog will appear. Click '''CPUs''' (or "processors") and on right-side under Configuration select '''Copy Host CPU Configuration''', click '''Apply''', and then click '''Begin Installation''' at the top left-hand side.</span>
#<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;">Click 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>
<br>
{{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>}}
<br>
<ol><li value="13"><span style="background-color:yellow;">Repeat the steps as you did in the previous investigation ([httphttps://zenitwiki.senecaccdot.onsenecacollege.ca/wiki/index.php/OPS235_Lab_2_-_CentOS7_-_HD2OPS235_Lab_2#Part_1:_Install_KVM_Virtualization_Application 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 eth0</span></code></b></li>
<li>Record the time taken to install, and compare this to the time taken by the previous installations in your lab2 logbook.</li>
</ol>
:: '''VM Name (and hostname):''' centos2
:: '''Boot media:''' Network installation
:: '''Centos CentOS Full Network Install URL:''':::*Seneca Lab: httphttps://belmontmirror.senecac.onsenecacollege.ca/centos/7/os/x86_64/:::*Home: http://mirror.csclubnetflash.uwaterloo.canet/centos/7/os/x86_64/
:: '''VM Image Pathname:''' /var/lib/libvirt/images/centos2.qcow2
:: '''Memory:''' 2048MB
# 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 logical volume to '''8 GiB''' and add a logical volume with a size of '''2 GiB''' (mount point: '''/home''', name: '''home''', and make certain root and /home 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 ([httphttps://zenitwiki.senecaccdot.onsenecacollege.ca/wiki/index.php/OPS235_Lab_2_-_CentOS7_-_SSD2OPS235_Lab_2#Part_2Part_1:_Install_KVM_Virtualization_Application Investigation1 Part 21]) 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>
# Record the time taken to install, and compare this to the time taken by the previous installations in your lab2 logbook.
:: '''VM Name (and hostname):''' centos3
:: '''Boot media:''' Network installation
:: '''Centos7 CentOS 7 Full Install Network URL:''':::*Seneca Lab: httphttps://belmontmirror.senecac.onsenecacollege.ca/centos/7/os/x86_64/:::*Home: http://mirror.csclubnetflash.uwaterloo.canet/centos/7/os/x86_64/:: '''Kickstart File URL (Kernel options): ''' :::* Seneca Lab:''' <span style="color:green;font-weight:bold">ks=http</span>https://matrix.senecacict.onsenecacollege.ca/~andrewops235/labs/centos7-kickstart.smithcfg:::* Home:''' <span style="color:green;font-weight:bold">ks=</span>https://ict.senecacollege.ca/~ops235/labs/centos7-kickstart-v01ext.cfg
:: '''VM Image Pathname:''' /var/lib/libvirt/images/centos3.qcow2
:: '''Memory:''' 2048MB('''IMPORTANT''' Do not use less than 2048MB during installation.)
:: '''Disk space:''' 15GB
:: '''CPUs:''' 12<br>{{Admon/important|Include ''ks='' in the URL options field!|When using a kickstart file, make sure you include the''' ''ks='' '''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:<brul><li>Seneca Lab:'''<span style="color:#336699green;font-weight:bold">ks=</span>httphttps://matrixict.senecac.onsenecacollege.ca/~andrewops235/labs/centos7-kickstart.cfg</li><li>'''Home:''' <span style="color:green;font-weight:bold">ks=</span>https://ict.smithsenecacollege.ca/~ops235/labs/centos7-kickstart-v01ext.cfg''' and then </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'''.
# Observe the installation. How is it different from booting from a downloaded image?
# Record the time taken to install, and compare this to the time taken by the previous installations.<br><br>If the 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 ([httphttps://zenitwiki.senecaccdot.onsenecacollege.ca/wiki/index.php/OPS235_Lab_2_-_CentOS7_-_SSD2OPS235_Lab_2#Part_2Part_1:_Install_KVM_Virtualization_Application Investigation1 Part 21]) 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 the and record your centos2 IPADDR for your centos1 VM to record in your lab2 logbook: <b><code><span style="color:#3366CC;font-size:1.2em;">ifconfig eth0ip address</span></code></b>
# Remember that centos3 is text-based interface only (no graphics). To recover from a blank screen, press a key (like the SPACE key) to return to the screen display.
# Record the time taken to install, and compare this to the time taken by the previous installations in your lab2 logbook.
'''Answer the INVESTIGATION 2 observations / questions in your lab log book.'''
=INVESTIGATION 23: MANAGING VIRTUAL MACHINES (KVM)=
# 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 '''<ctrl>c''' to cancel this process. If you do, your archive will become incomplete and your recovery will be corrupt.}}
<li>Answer this question in your log book:</li>
</ol>
::* 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 & 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;">
echo "Backing up VM #$numanswer"<br>
gzip < /var/lib/libvirt/images/centos$numanswer.qcow2 > /root/centos$numanswer.qcow2.backup.gz<br><br>
echo "VM #$numanswer BACKUP DONE":<br>
else<br>
echo "Invalid Selection... Aborting program"<br>
<ol>
<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;">https://scsict.senecac.onsenecacollege.ca/~murray.saulops235/labs/vm-start-text.bash<br>https://scs.senecacict.onsenecacollege.ca/~murray.saulops235/labs/vm-stop-text.bash</span></code></b><br><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;">https://scs.senecacict.onsenecacollege.ca/~murray.saulops235/labs/vm-start.bash<br>https://scs.senecacict.onsenecacollege.ca/~murray.saulops235/labs/vm-stop.bash</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 3 observations / questions in your lab log book.'''
= LAB 2 SIGN-OFF (SHOW INSTRUCTOR) =
===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 httphttps://matrixict.senecac.onsenecacollege.ca/~murray.saulops235/ops235labs/lab2-check.bash</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.
::✓ '''<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;">✓</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;"> OK </span></code></b> messages)</li></ul></blockquote>
::<span style="color:green;font-size:1.5em;">✓</span> Lab2 logbook notes completed.
# What is the difference between a determinant loop and an in-determinant loop?
# Show a few examples how loops can be used to error-check when prompting the user for data.
# What is the purpose of the '''&&''' and '''||''' symbols when used with logic?'# What does the command '''rpm -qi centos-release''' do and why is it important? # What is the difference between '''rpm -q centos-release''' and '''uname -a'''?
[[Category:OPS235]]
[[Category:OPS235 Labs]]
[[Category:CentOS 7]]
[[Category:SSD2]]
[[Category:Digital Classroom]]