<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FranGarcia.me (Posts about rhv)</title><link>https://www.frangarcia.me/</link><description></description><atom:link href="https://www.frangarcia.me/categories/rhv.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Fri, 15 Mar 2024 13:54:13 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Notes on upgrading RHV 4.3 to RHV 4.4</title><link>https://www.frangarcia.me/posts/notes-on-upgrading-rhv-43-to-rhv-44/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;Reciently Red Hat has published the latest &lt;a href="https://www.redhat.com/en/blog/red-hat-virtualization-now-and-next"&gt;RHV 4.4 version&lt;/a&gt;. 
This introduces some major changes in the underlying operating system (migration 
from RHEL7 to RHEL8 in both hypervisors and Engine / Self Hosted Engine), and a
bunch of new features.&lt;/p&gt;
&lt;p&gt;There are extensive notes on &lt;a href="https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.4/html-single/upgrade_guide/index"&gt;how to perform the upgrade&lt;/a&gt;, especially for the &lt;a href="https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.4/html-single/upgrade_guide/index#upgrading_a_self_hosted_engine_environment"&gt;Self-hosted Engine&lt;/a&gt;-type of deployments.&lt;/p&gt;
&lt;p&gt;I upgraded a small 2-node lab environment and besides the notes already mentioned
in the docs above, I also found relevant:&lt;/p&gt;
&lt;h2&gt;Before you start&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Understand the NIC naming differences between RHEL7 and RHEL8.&lt;ul&gt;
&lt;li&gt;Your hypervisor NICs will probably be renamed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Jot down your hypervisors' NIC to MAC-addresses mappings prior to attempting an upgrade.&lt;ul&gt;
&lt;li&gt;This will ease understanding what NIC is what after installing RHEL8.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;When using shared storage (FC), beware of unmapping it while you reinstall each host, or ensure your kickstart does NOT clear the shared disks.&lt;ul&gt;
&lt;li&gt;Otherwise this might lead into data loss!!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Prerequistes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;One spare hypervisor, feshly installed with RHEL8/RHVH8 and NOT added to the manager.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;One additional LUN / NFS share for the new SHE 4.4 deployment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The installer does not upgrade the old SHE in-place, so a new lun is required.&lt;/li&gt;
&lt;li&gt;This eases the rollback, as the original SHE LUN is untouched.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensure the new hypervisor has all the configuration to access all required networks prior to starting the upgrade.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IP configuration for the &lt;code&gt;ovirtmgmt&lt;/code&gt; network (obvious).&lt;/li&gt;
&lt;li&gt;IP configuration for any NFS/iSCSI networks, if required. &lt;/li&gt;
&lt;li&gt;Shared FC storage, if required.&lt;/li&gt;
&lt;li&gt;This is critical as the restore process does not prompt to configure/fix network settings when deploying the upgraded manager.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Extra steps&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Collect your RHV-M details:&lt;ul&gt;
&lt;li&gt;IP address and netmask&lt;/li&gt;
&lt;li&gt;FQDN&lt;/li&gt;
&lt;li&gt;Mac-address if using DHCP.&lt;/li&gt;
&lt;li&gt;Extra software and additional RPMs (eg: AD/IDM/ldap integration, etc)&lt;/li&gt;
&lt;li&gt;Existing &lt;code&gt;/etc/hosts&lt;/code&gt; details in case you use hosts instead of DNS (bad bad bad!!!). &lt;/li&gt;
&lt;li&gt;Same for hypervisors!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Optionally: Mark your networks within the cluster as non-&lt;code&gt;Required&lt;/code&gt; . This might be useful until &lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=1867198"&gt;BZ #1867198&lt;/a&gt; is addressed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Deploying and registering the hypervisors.&lt;/h2&gt;
&lt;p&gt;The RHEL8/RHVH8 can be deployed as usual with &lt;a href="https://www.theforeman.org"&gt;Foreman&lt;/a&gt; / &lt;a href="https://www.redhat.com/es/technologies/management/satellite"&gt;Red Hat Satellite&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Ensure the hypervisors are registered and have access to the repositories as below:&lt;/p&gt;
&lt;h3&gt;RHEL8 Host repositories&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;POOLID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;subscription-manager&lt;span class="w"&gt; &lt;/span&gt;list&lt;span class="w"&gt; &lt;/span&gt;--available&lt;span class="w"&gt; &lt;/span&gt;--matches&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Red Hat Virtualization"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;--pool-only&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;head&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
subscription-manager&lt;span class="w"&gt; &lt;/span&gt;attach&lt;span class="w"&gt; &lt;/span&gt;--pool&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$POOLID&lt;/span&gt;
subscription-manager&lt;span class="w"&gt; &lt;/span&gt;repos&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--disable&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;rhel-8-for-x86_64-baseos-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;rhel-8-for-x86_64-appstream-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;rhv-4-mgmt-agent-for-rhel-8-x86_64-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;fast-datapath-for-rhel-8-x86_64-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;ansible-2.9-for-rhel-8-x86_64-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;advanced-virt-for-rhel-8-x86_64-rpms

yum&lt;span class="w"&gt; &lt;/span&gt;module&lt;span class="w"&gt; &lt;/span&gt;reset&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;virt
yum&lt;span class="w"&gt; &lt;/span&gt;module&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;virt:8.2
systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--now&lt;span class="w"&gt; &lt;/span&gt;firewalld
yum&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;rhevm-appliance&lt;span class="w"&gt; &lt;/span&gt;ovirt-hosted-engine-setup
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;RHVH8 Host repositories&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;POOLID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;subscription-manager&lt;span class="w"&gt; &lt;/span&gt;list&lt;span class="w"&gt; &lt;/span&gt;--available&lt;span class="w"&gt; &lt;/span&gt;--matches&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Red Hat Virtualization"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;--pool-only&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;head&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
subscription-manager&lt;span class="w"&gt; &lt;/span&gt;attach&lt;span class="w"&gt; &lt;/span&gt;--pool&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$POOLID&lt;/span&gt;
subscription-manager&lt;span class="w"&gt; &lt;/span&gt;repos&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--disable&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;rhvh-4-for-rhel-8-x86_64-rpms
systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--now&lt;span class="w"&gt; &lt;/span&gt;firewalld
yum&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;rhevm-appliance
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Powering off RHV 4.3 manager&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Set the Manager in global maintenance mode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OPTIONAL&lt;/strong&gt;: Mark your networks within the cluster as non-&lt;code&gt;Required&lt;/code&gt; . This might be useful until &lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=1867198"&gt;BZ #1867198&lt;/a&gt; is addressed.&lt;/li&gt;
&lt;li&gt;Stop the &lt;code&gt;ovirt-engine&lt;/code&gt; service.&lt;/li&gt;
&lt;li&gt;Backup the RHV 4.3 database and save in a shared space.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Performing the RHV-M upgrade&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Copy the database backup into the RHEL8 hypervisor.&lt;/li&gt;
&lt;li&gt;Launch the restore process with &lt;code&gt;hosted-engine --deploy --restore-from-file=backup.tar.bz2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The process has changed significantly in the last RHV releases and it now performs
the new SHE rollout or restore in two phases :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Phase 1: it tries to roll it out in the hypervisor local storage.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gather FQDN, IP details of the Manager.&lt;/li&gt;
&lt;li&gt;Gather other configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 2: migrate to shared storage.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If Phase1 is successful, this takes care of gathering shared storage details (LUN ID or NFS defails).&lt;/li&gt;
&lt;li&gt;Copy the &lt;code&gt;bootstrap&lt;/code&gt; manager into the shared storage.&lt;/li&gt;
&lt;li&gt;Configure the &lt;code&gt;ovirt-ha-broker&lt;/code&gt; and &lt;code&gt;ovirt-ha-agent&lt;/code&gt; in the hypervisor to monitor and ensure the SHE is started.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Phase 1 details&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;[root@rhevh2 rhev]# time  hosted-engine --deploy --restore-from-file=engine-backup-rhevm-20200807_1536.tar.bz2
[ INFO  ] Stage: Initializing
[ INFO  ] Stage: Environment setup
          During customization use CTRL-D to abort.
          Continuing will configure this host for serving as hypervisor and will create a local VM with a running engine.
          The provided engine backup file will be restored there,
          it's strongly recommended to run this tool on an host that wasn't part of the environment going to be restored.
          If a reference to this host is already contained in the backup file, it will be filtered out at restore time.
          The locally running engine will be used to configure a new storage domain and create a VM there.
          At the end the disk of the local VM will be moved to the shared storage.
          The old hosted-engine storage domain will be renamed, after checking that everything is correctly working you can manually remove it.
          Other hosted-engine hosts have to be reinstalled from the engine to update their hosted-engine configuration.
          Are you sure you want to continue? (Yes, No)[Yes]: yes
          It has been detected that this program is executed through an SSH connection without using tmux.
          Continuing with the installation may lead to broken installation if the network connection fails.
          It is highly recommended to abort the installation and run it inside a tmux session using command "tmux".
          Do you want to continue anyway? (Yes, No)[No]: yes
          Configuration files: 
          Log file: /var/log/ovirt-hosted-engine-setup/ovirt-hosted-engine-setup-20200807155111-5blcva.log
          Version: otopi-1.9.2 (otopi-1.9.2-1.el8ev)
[ INFO  ] Stage: Environment packages setup
[ INFO  ] Stage: Programs detection
[ INFO  ] Stage: Environment setup (late)
[ INFO  ] Stage: Environment customization

          --== STORAGE CONFIGURATION ==--


          --== HOST NETWORK CONFIGURATION ==--

          Please indicate the gateway IP address [10.48.0.100]: 
[ INFO  ] TASK [ovirt.hosted_engine_setup : Execute just a specific set of steps]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Force facts gathering]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Detecting interface on existing management bridge]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Get all active network interfaces]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Filter bonds with bad naming]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Generate output list]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Collect interface types]
[ INFO  ] changed: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Check for Team devices]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Get list of Team devices]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Filter unsupported interface types]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Failed if only teaming devices are availible]
[ INFO  ] skipping: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Validate selected bridge interface if management bridge does not exist]
[ INFO  ] skipping: [localhost]
         Please indicate a nic to set ovirtmgmt bridge on: (eth4.100, ens15.200) [ens15.200]: eth4.100
          Please specify which way the network connectivity should be checked (ping, dns, tcp, none) [dns]: 

          --== VM CONFIGURATION ==--

          Please enter the name of the datacenter where you want to deploy this hosted-engine host. Please note that if you are restoring a backup that contains info about other hosted-engine hosts,
          this value should exactly match the value used in the environment you are going to restore. [Default]: 
          Please enter the name of the cluster where you want to deploy this hosted-engine host. Please note that if you are restoring a backup that contains info about other hosted-engine hosts,
          this value should exactly match the value used in the environment you are going to restore. [Default]: 
          Renew engine CA on restore if needed? Please notice that if you choose Yes, all hosts will have to be later manually reinstalled from the engine. (Yes, No)[No]: 
          Pause the execution after adding this host to the engine?
          You will be able to iteratively connect to the restored engine in order to manually review and remediate its configuration before proceeding with the deployment:
          please ensure that all the datacenter hosts and storage domain are listed as up or in maintenance mode before proceeding.
          This is normally not required when restoring an up to date and coherent backup. (Yes, No)[No]: 
          If you want to deploy with a custom engine appliance image,
          please specify the path to the OVA archive you would like to use
          (leave it empty to skip, the setup will use rhvm-appliance rpm installing it if missing): 
          Please specify the number of virtual CPUs for the VM (Defaults to appliance OVF value): [4]: 
          Please specify the memory size of the VM in MB (Defaults to appliance OVF value): [16384]: 
[ INFO  ] Detecting host timezone.
          Please provide the FQDN you would like to use for the engine.
          Note: This will be the FQDN of the engine VM you are now going to launch,
          it should not point to the base host or to any other existing machine.
         Engine VM FQDN:  []: rhevm.example.org
          Please provide the domain name you would like to use for the engine appliance.
          Engine VM domain: [example.org]
          Enter root password that will be used for the engine appliance: 
          Confirm appliance root password: 
          Enter ssh public key for the root user that will be used for the engine appliance (leave it empty to skip): 
          Do you want to enable ssh access for the root user (yes, no, without-password) [yes]: 
          Do you want to apply a default OpenSCAP security profile (Yes, No) [No]: 
          You may specify a unicast MAC address for the VM or accept a randomly generated default [00:16:3e:03:ec:35]: 
          How should the engine VM network be configured (DHCP, Static)[DHCP]? static
          Please enter the IP address to be used for the engine VM []: 10.48.0.4
[ INFO  ] The engine VM will be configured to use 10.48.0.4/24
          Please provide a comma-separated list (max 3) of IP addresses of domain name servers for the engine VM
          Engine VM DNS (leave it empty to skip) [10.48.0.100]: 
          Add lines for the appliance itself and for this host to /etc/hosts on the engine VM?
          Note: ensuring that this host could resolve the engine VM hostname is still up to you
          (Yes, No)[No] 

          --== HOSTED ENGINE CONFIGURATION ==--

          Please provide the name of the SMTP server through which we will send notifications [localhost]: 
          Please provide the TCP port number of the SMTP server [25]: 
          Please provide the email address from which notifications will be sent [root@localhost]: 
          Please provide a comma-separated list of email addresses which will get notifications [root@localhost]: 
          Enter engine admin password: 
          Confirm engine admin password: 
[ INFO  ] Stage: Setup validation
          Please provide the hostname of this host on the management network [rhevh2]: rhevh2.example.org
[ INFO  ] Stage: Transaction setup
[ INFO  ] Stage: Misc configuration (early)
[ INFO  ] Stage: Package installation
[ INFO  ] Stage: Misc configuration
[ INFO  ] Stage: Transaction commit
[ INFO  ] Stage: Closing up
[ INFO  ] Cleaning previous attempts
[ INFO  ] TASK [ovirt.hosted_engine_setup : Execute just a specific set of steps]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Force facts gathering]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Install oVirt Hosted Engine packages]
[ INFO  ] ok: [localhost]

[... snip ...]
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The manager is now being deployed and made available via the hypervisor at a later stage:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;[ INFO  ] TASK [ovirt.hosted_engine_setup : Adding new SSO_ALTERNATE_ENGINE_FQDNS line]
[ INFO  ] changed: [localhost -&amp;gt; rhevm.example.org]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Restart ovirt-engine service for changed OVF Update configuration and LibgfApi support]
[ INFO  ] changed: [localhost -&amp;gt; rhevm.example.org]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Mask cloud-init services to speed up future boot]
[ INFO  ] changed: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Wait for ovirt-engine service to start]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Open a port on firewalld]
[ INFO  ] changed: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Expose engine VM webui over a local port via ssh port forwarding]
[ INFO  ] changed: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Evaluate temporary bootstrap engine URL]
[ INFO  ] ok: [localhost]
[ INFO  ] The bootstrap engine is temporary accessible over https://rhevh2.example.org:6900/ovirt-engine/ 
[ INFO  ] TASK [ovirt.hosted_engine_setup : Detect VLAN ID]
[ INFO  ] changed: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Set Engine public key as authorized key without validating the TLS/SSL certificates]
[ INFO  ] changed: [localhost]
[...]
[ INFO  ] TASK [ovirt.hosted_engine_setup : include_tasks]
[ INFO  ] skipping: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : include_tasks]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Always revoke the SSO token]
[ INFO  ] TASK [ovirt.hosted_engine_setup : include_tasks]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Obtain SSO token using username/password credentials]
[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Wait for the host to be up]
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;bootstrap&lt;/code&gt; manager is available at &lt;a href="https://hypervisor.example.org:6900/ovirt-engine/"&gt;https://hypervisor.example.org:6900/ovirt-engine/&lt;/a&gt;  and the installer tries to add the current host under the Manager management. (It waits for the host to be in the 'Up' state. This is why is important to have all the storage and network prerequisites prepared/available).&lt;/p&gt;
&lt;p&gt;And to finish up :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;[ INFO  ] ok: [localhost]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Destroy local storage-pool localvm7imrhb7u]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Undefine local storage-pool localvm7imrhb7u]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Destroy local storage-pool {{ local_vm_disk_path.split('/')[5] }}]
[ INFO  ] TASK [ovirt.hosted_engine_setup : Undefine local storage-pool {{ local_vm_disk_path.split('/')[5] }}]
[ INFO  ] Generating answer file '/var/lib/ovirt-hosted-engine-setup/answers/answers-20200807193709.conf'
[ INFO  ] Generating answer file '/etc/ovirt-hosted-engine/answers.conf'
[ INFO  ] Stage: Pre-termination
[ INFO  ] Stage: Termination
[ INFO  ] Hosted Engine successfully deployed
[ INFO  ] Other hosted-engine hosts have to be reinstalled in order to update their storage configuration. From the engine, host by host, please set maintenance mode and then click on reinstall button ensuring you choose DEPLOY in hosted engine tab.
[ INFO  ] Please note that the engine VM ssh keys have changed. Please remove the engine VM entry in ssh known_hosts on your clients.

real    45m1,768s
user    18m4,639s
sys     1m9,271s
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;After finishing the upgrade it is also recommended to register the RHV-Manager virtual machine and upgrade to the latest RPMs available in the Red Hat CDN.&lt;/p&gt;
&lt;p&gt;Set the Hosted Engine in Global Maintenance mode and:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;POOLID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;subscription-manager&lt;span class="w"&gt; &lt;/span&gt;list&lt;span class="w"&gt; &lt;/span&gt;--available&lt;span class="w"&gt; &lt;/span&gt;--matches&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Red Hat Virtualization"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;--pool-only&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;head&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
subscription-manager&lt;span class="w"&gt; &lt;/span&gt;attach&lt;span class="w"&gt; &lt;/span&gt;--pool&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$POOLID&lt;/span&gt;

subscription-manager&lt;span class="w"&gt; &lt;/span&gt;repos&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--disable&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;rhel-8-for-x86_64-baseos-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;rhel-8-for-x86_64-appstream-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;rhv-4.4-manager-for-rhel-8-x86_64-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;fast-datapath-for-rhel-8-x86_64-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;ansible-2.9-for-rhel-8-x86_64-rpms&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;--enable&lt;span class="o"&gt;=&lt;/span&gt;jb-eap-7.3-for-rhel-8-x86_64-rpms

yum&lt;span class="w"&gt; &lt;/span&gt;module&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pki-deps
yum&lt;span class="w"&gt; &lt;/span&gt;module&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;postgresql:12
yum&lt;span class="w"&gt; &lt;/span&gt;module&lt;span class="w"&gt; &lt;/span&gt;reset&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;virt
yum&lt;span class="w"&gt; &lt;/span&gt;module&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;virt:8.2
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Performing the upgrade : &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;stop&lt;span class="w"&gt; &lt;/span&gt;ovirt-engine
yum&lt;span class="w"&gt; &lt;/span&gt;upgrade&lt;span class="w"&gt; &lt;/span&gt;-y
engine-setup&lt;span class="w"&gt; &lt;/span&gt;--accept-defaults&lt;span class="w"&gt; &lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Rolling back a failed upgrade&lt;/h2&gt;
&lt;p&gt;A rollback can be performed if the following applies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The deployment or upgrade to the new RHV 4.4 Manager was not successfull.&lt;/li&gt;
&lt;li&gt;No new instances have been created and/or VMs have not been altered (eg, added disks or nics, etc). If a rollback occurs those changes will be inconsistent with the old manager DB status and potentially imposible to reconciliate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If so, the rollback can be performed by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Powering off the new RHEL8/RHVH hypervisor and manager.&lt;/li&gt;
&lt;li&gt;Powering on the old Manager in a RHEL7 hosts. They should be pointed to the old SHE LUN and storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Finalising the upgrade&lt;/h2&gt;
&lt;p&gt;At this point you should have a working manager under the regular &lt;a href="https://FQDN/ovirt-engine/"&gt;https://FQDN/ovirt-engine/&lt;/a&gt; address. &lt;strong&gt;Don't forget to clear cookies and browser cache&lt;/strong&gt; as this might lead into strange WebUI issues.&lt;/p&gt;
&lt;p&gt;At this point you can continue reinstalling your hypervisors. I'd suggest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starting with your SHE hypervisors first. This will ensure you have SHE HA asap.&lt;/li&gt;
&lt;li&gt;Then the non-SHE hypervisors.&lt;/li&gt;
&lt;li&gt;Then finalise with the rest of the task such as upgrading Cluster and DC compatibility, rebooting the guest VMs, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy hacking!&lt;/p&gt;</description><category>ovirt</category><category>rhel7</category><category>rhel8</category><category>rhv</category><guid>https://www.frangarcia.me/posts/notes-on-upgrading-rhv-43-to-rhv-44/</guid><pubDate>Sat, 08 Aug 2020 10:04:11 GMT</pubDate></item><item><title>Provisioning RHV 4.1 hypervisors using Satellite 6.2</title><link>https://www.frangarcia.me/posts/provisioning-rhv-41-hypervisors-using-satellite-62/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.1/html-single/installation_guide/#Automating_RHVH_Deployment"&gt;RHV-H 4.1 installation documentation&lt;/a&gt;
describes a method to provision RHV-H hypervisors using PXE and/or Satellite. This
document covers all steps required to archieve such configuration in a repeatable 
manner.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A RHV-H installation ISO file such as &lt;code&gt;RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso&lt;/code&gt; downloaded into Satellite/Capsules.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rhviso2media.sh&lt;/code&gt; script (see &lt;a href="https://gist.github.com/frangdlt/1f15683778483d30dcfd8ee464922403"&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Creating the installation media in Satellite and Capsules&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Deploy the RHV-H iso in /var/lib/pulp/tmp&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;rhviso2media.sh&lt;/code&gt; to populate installation media directories. It will make the following files available:&lt;ul&gt;
&lt;li&gt;kernel and initrd files in &lt;code&gt;tftp://host/ISOFILE/vmlinuz&lt;/code&gt; and &lt;code&gt;tftp://host/ISOFILE/initrd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;DVD installation media in &lt;code&gt;/var/www/html/pub/ISOFILE&lt;/code&gt; directory&lt;/li&gt;
&lt;li&gt;squashfs.img file in &lt;code&gt;/var/www/html/pub/ISOFILE&lt;/code&gt; directory&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# ./rhviso2media.sh RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso&lt;/span&gt;
Mounting&lt;span class="w"&gt; &lt;/span&gt;/var/lib/pulp/tmp/RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso&lt;span class="w"&gt; &lt;/span&gt;...
mount:&lt;span class="w"&gt; &lt;/span&gt;/dev/loop0&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;write-protected,&lt;span class="w"&gt; &lt;/span&gt;mounting&lt;span class="w"&gt; &lt;/span&gt;read-only
Copying&lt;span class="w"&gt; &lt;/span&gt;ISO&lt;span class="w"&gt; &lt;/span&gt;contents&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;/var/www/html/pub/RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso&lt;span class="w"&gt; &lt;/span&gt;...
Extracting&lt;span class="w"&gt; &lt;/span&gt;redhat-virtualization-host-image-update&lt;span class="w"&gt; &lt;/span&gt;...
./usr/share/redhat-virtualization-host/image
./usr/share/redhat-virtualization-host/image/redhat-virtualization-host-4.0-20170307.1.el7_3.squashfs.img
./usr/share/redhat-virtualization-host/image/redhat-virtualization-host-4.0-20170307.1.el7_3.squashfs.img.meta
&lt;span class="m"&gt;1169874&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocks
OK
Copying&lt;span class="w"&gt; &lt;/span&gt;squash.img&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;public&lt;span class="w"&gt; &lt;/span&gt;directory&lt;span class="w"&gt; &lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;Available&lt;span class="w"&gt; &lt;/span&gt;as&lt;span class="w"&gt; &lt;/span&gt;http://sat62.lab.local/pub/RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso/squashfs.img&lt;span class="w"&gt; &lt;/span&gt;...
Copying&lt;span class="w"&gt; &lt;/span&gt;/mnt/RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso/images/pxeboot/vmlinuz&lt;span class="w"&gt; &lt;/span&gt;/mnt/RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso/images/pxeboot/initrd.img&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;/varlib/tftpboot/RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso&lt;span class="w"&gt; &lt;/span&gt;...
OK
Unmounting&lt;span class="w"&gt; &lt;/span&gt;/mnt/RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Create Installation media&lt;/h2&gt;
&lt;p&gt;RHVH Installation media&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;http://fake.url
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This is not used as it the kickstart will use a &lt;code&gt;liveimg&lt;/code&gt; url, not a &lt;code&gt;media&lt;/code&gt; url;
however Satellite is stubborn and still requires it.&lt;/p&gt;
&lt;h2&gt;Create partition table&lt;/h2&gt;
&lt;p&gt;name : RHVH Kickstart default&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="cp"&gt;&amp;lt;%#&lt;/span&gt;
&lt;span class="c"&gt;kind: ptable&lt;/span&gt;
&lt;span class="c"&gt;name: Kickstart default&lt;/span&gt;
&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;zerombr&lt;/span&gt;
&lt;span class="x"&gt;clearpart --all --initlabel&lt;/span&gt;
&lt;span class="x"&gt;autopart --type=thinp&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Create pxelinux for RHV&lt;/h2&gt;
&lt;p&gt;Based on &lt;code&gt;Kickstart default PXELinux&lt;/code&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="x"&gt;```erb&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;%#&lt;/span&gt;
&lt;span class="c"&gt;kind: PXELinux&lt;/span&gt;
&lt;span class="c"&gt;name: RHVH Kickstart default PXELinux&lt;/span&gt;
&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;#&lt;/span&gt;
&lt;span class="x"&gt;# This file was deployed via '&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vi"&gt;@template_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;' template&lt;/span&gt;
&lt;span class="x"&gt;#&lt;/span&gt;
&lt;span class="x"&gt;# Supported host/hostgroup parameters:&lt;/span&gt;
&lt;span class="x"&gt;#&lt;/span&gt;
&lt;span class="x"&gt;# blacklist = module1, module2&lt;/span&gt;
&lt;span class="x"&gt;#   Blacklisted kernel modules&lt;/span&gt;
&lt;span class="x"&gt;#&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt;
&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vi"&gt;@host&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'blacklist'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"modprobe.blacklist="&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vi"&gt;@host&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'blacklist'&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;gsub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;' '&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;' '&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="cp"&gt;-%&amp;gt;&lt;/span&gt;

&lt;span class="x"&gt;DEFAULT rhvh&lt;/span&gt;

&lt;span class="x"&gt;LABEL rhvh&lt;/span&gt;
&lt;span class="x"&gt;    KERNEL &lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vi"&gt;@host&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"rhvh_image"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;/vmlinuz &lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vi"&gt;@kernel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;    APPEND initrd=&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vi"&gt;@host&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"rhvh_image"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;/initrd.img inst.stage2=http://&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vi"&gt;@host&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hostgroup&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subnet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tftp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;/pub/&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vi"&gt;@host&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"rhvh_image"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;/ ks=&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;foreman_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'provision'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt; intel_iommu=on ssh_pwauth=1 local_boot_trigger=&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;foreman_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"built"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt; &lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;    IPAPPEND 2&lt;/span&gt;
&lt;span class="x"&gt;```&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Create Kickstart for RHV&lt;/h2&gt;
&lt;p&gt;File under &lt;code&gt;Satellite Kickstart Default for RHVH&lt;/code&gt; .&lt;/p&gt;
&lt;p&gt;Note that the &lt;code&gt;@host.hostgroup.subnet.tftp.name&lt;/code&gt; variable is used to point to 
the capsule associated to this host, rather than the Satellite server itself.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;
&lt;span class="nl"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;provision&lt;/span&gt;
&lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Satellite&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Kickstart&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;default&lt;/span&gt;
&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;
&lt;span class="n"&gt;rhel_compatible&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;operatingsystem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Redhat&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;operatingsystem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Fedora&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;os_major&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;operatingsystem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;major&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_i&lt;/span&gt;
&lt;span class="cp"&gt;# safemode renderer does not support unary negation&lt;/span&gt;
&lt;span class="n"&gt;pm_set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;puppetmaster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;empty&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;puppet_enabled&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pm_set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;force&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;puppet&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;salt_enabled&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;salt_master&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;
&lt;span class="n"&gt;section_end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rhel_compatible&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;os_major&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;''&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="nf"&gt;%end&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="n"&gt;install&lt;/span&gt;
&lt;span class="cp"&gt;# not required # url --url=http:&lt;/span&gt;&lt;span class="c1"&gt;//&amp;lt;%= @host.hostgroup.subnet.tftp.name %&amp;gt;/pub/&amp;lt;%= @host.params["rhvh_image"] %&amp;gt;&lt;/span&gt;
&lt;span class="n"&gt;lang&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;en_US&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UTF&lt;/span&gt;&lt;span class="mi"&gt;-8&lt;/span&gt;
&lt;span class="n"&gt;selinux&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;enforcing&lt;/span&gt;
&lt;span class="n"&gt;keyboard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;es&lt;/span&gt;
&lt;span class="n"&gt;skipx&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;subnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;subnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;respond_to&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dhcp_boot_mode&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;subnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dhcp_boot_mode&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;

&lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;bootproto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"static --ip=#{@host.ip} --netmask=#{subnet.mask} --gateway=#{subnet.gateway} --nameserver=#{[subnet.dns_primary, subnet.dns_secondary].select(&amp;amp;:present?).join(',')}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;hostname&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;os_major&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;" --device=#{@host.mac}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;''&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;

&lt;span class="n"&gt;rootpw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;iscrypted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="n"&gt;firewall&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;os_major&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;''&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;ssh&lt;/span&gt;
&lt;span class="n"&gt;authconfig&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;useshadow&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;passalgo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sha256&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;kickstart&lt;/span&gt;
&lt;span class="n"&gt;timezone&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;utc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;zone&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;UTC&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;operatingsystem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Fedora&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;os_major&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;# Bootloader exception for Fedora 16:&lt;/span&gt;
&lt;span class="n"&gt;bootloader&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"nofb quiet splash=quiet &amp;lt;%=ks_console%&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;grub_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;biosboot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;fstype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;biosboot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="n"&gt;bootloader&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;mbr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"nofb quiet splash=quiet"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;grub_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;dynamic&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="nf"&gt;%include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;diskpart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;diskLayout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;

&lt;span class="n"&gt;text&lt;/span&gt;
&lt;span class="n"&gt;reboot&lt;/span&gt;

&lt;span class="n"&gt;liveimg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//&amp;lt;%= foreman_server_fqdn %&amp;gt;/pub/&amp;lt;%= @host.params["rhvh_image"] %&amp;gt;/squashfs.img&lt;/span&gt;


&lt;span class="nf"&gt;%post&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;nochroot&lt;/span&gt;
&lt;span class="n"&gt;exec&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tty3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tty3&lt;/span&gt;
&lt;span class="cp"&gt;#changing to VT 3 so that we can see whats going on....&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chvt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="n"&gt;cp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;va&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;resolv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sysimage&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;resolv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conf&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chvt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tee&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sysimage&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;postnochroot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;section_end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;


&lt;span class="nf"&gt;%post&lt;/span&gt;
&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Starting anaconda &amp;lt;%= @host %&amp;gt; postinstall"&lt;/span&gt;

&lt;span class="n"&gt;nodectl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;init&lt;/span&gt;

&lt;span class="n"&gt;exec&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tty3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tty3&lt;/span&gt;
&lt;span class="cp"&gt;#changing to VT 3 so that we can see whats going on....&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chvt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;subnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;respond_to&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dhcp_boot_mode&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;snippet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;kickstart_networking_setup&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;

&lt;span class="cp"&gt;#update local time&lt;/span&gt;
&lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"updating system time"&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ntpdate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;ntp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mf"&gt;0.f&lt;/span&gt;&lt;span class="n"&gt;edora&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pool&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ntp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;org&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;hwclock&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;systohc&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;snippet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"subscription_manager_registration"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;parameters&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;realm&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;realm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;realm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;realm_type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Red&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Hat&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Identity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Management&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;snippet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"idm_register"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;

&lt;span class="cp"&gt;# update all the base packages from the updates repository&lt;/span&gt;
&lt;span class="cp"&gt;#yum -t -y -e 0 update&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;snippet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;remote_execution_ssh_keys&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;

&lt;span class="n"&gt;sync&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;provisioning_type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;provisioning_type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;# Inform the build system that we are done.&lt;/span&gt;
&lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Informing Foreman that we are built"&lt;/span&gt;
&lt;span class="n"&gt;wget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;O&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;null&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;check&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;certificate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;foreman_url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tee&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;section_end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-%&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Create new Operating system&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Name: RHVH&lt;/li&gt;
&lt;li&gt;Major Version: 7&lt;/li&gt;
&lt;li&gt;Partition table:  RHVH Kickstart default&lt;/li&gt;
&lt;li&gt;Installation media:  RHVH Installation media&lt;/li&gt;
&lt;li&gt;Templates: "Kickstart default PXELinux for RHVH" and "Satellite kickstart default for RHVH"&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Associate the previously-created provisioning templates with this OS.&lt;/p&gt;
&lt;h2&gt;Create a new hostgroup&lt;/h2&gt;
&lt;p&gt;Create a new host-group with a Global Parameter called &lt;code&gt;rhvh_image&lt;/code&gt; . This parameter
is used by the provisioning templates to generate the installation media paths as required.&lt;/p&gt;
&lt;p&gt;eg:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rhvh_image = RHVH-4.0-20170308.0-RHVH-x86_64-dvd1.iso&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;rhviso2media&lt;/h2&gt;
&lt;script src="https://gist.github.com/frangdlt/1f15683778483d30dcfd8ee464922403.js"&gt;&lt;/script&gt;

&lt;h2&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;Future Satellite versions of satellite might include better integration of RHV-H 
provisioning; however the method described above can be used in the meantime.&lt;/p&gt;
&lt;p&gt;Happy hacking!&lt;/p&gt;</description><category>foreman</category><category>rhv</category><category>satellite6</category><guid>https://www.frangarcia.me/posts/provisioning-rhv-41-hypervisors-using-satellite-62/</guid><pubDate>Wed, 17 Jul 2019 08:15:39 GMT</pubDate></item><item><title>RHV 4.2: Using rhv-log-collector-analyzer to assess your virtualization environment</title><link>https://www.frangarcia.me/posts/rhv-42-using-rhv-log-collector-analyzer-to-assess-your-virtualization-environment/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;RHV 4.2 includes a tool that allows to quickly analyze your RHV environment. It
bases its analysis in either a &lt;a href="https://access.redhat.com/solutions/61546"&gt;logcollector&lt;/a&gt; 
report (sosreport and others), or  it can connect live to you environment and 
generate some nice JSON or HTML output.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt; : This article is deprecated and is only left for historical reasons.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rhv-log-collector-analyzer&lt;/code&gt; now only supports live reporting, so use the method
&lt;code&gt;rhv-log-collector-analyzer --live&lt;/code&gt; to grab a snapshot of your deployment and
verify its status.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;You'll find it already installed in RHV 4.2 , and gathering a report is as easy
as:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# rhv-log-collector-analyzer --live&lt;/span&gt;
Generating&lt;span class="w"&gt; &lt;/span&gt;reports:
&lt;span class="o"&gt;===================&lt;/span&gt;
Generated&lt;span class="w"&gt; &lt;/span&gt;analyzer_report.html
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If you need to assess an existing logcollector report on a new system that
never had a running RHV-Manager, things get a bit more complicated:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;root@localhost&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# yum install -y ovirt-engine&lt;/span&gt;
root@localhost&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# su - postgres&lt;/span&gt;
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;~&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# source scl_source enable rh-postgresql95&lt;/span&gt;
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;~&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# cd /tmp&lt;/span&gt;
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;/tmp&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# time rhv-log-collector-analyzer  /tmp/sosreport-LogCollector-20181106134555.tar.xz&lt;/span&gt;

Preparing&lt;span class="w"&gt; &lt;/span&gt;environment:
&lt;span class="o"&gt;======================&lt;/span&gt;
Temporary&lt;span class="w"&gt; &lt;/span&gt;working&lt;span class="w"&gt; &lt;/span&gt;directory&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;/tmp/tmp.do6qohRDhN
Unpacking&lt;span class="w"&gt; &lt;/span&gt;postgres&lt;span class="w"&gt; &lt;/span&gt;data.&lt;span class="w"&gt; &lt;/span&gt;This&lt;span class="w"&gt; &lt;/span&gt;can&lt;span class="w"&gt; &lt;/span&gt;take&lt;span class="w"&gt; &lt;/span&gt;up&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;several&lt;span class="w"&gt; &lt;/span&gt;minutes.
sos-report&lt;span class="w"&gt; &lt;/span&gt;extracted&lt;span class="w"&gt; &lt;/span&gt;into:&lt;span class="w"&gt; &lt;/span&gt;/tmp/tmp.do6qohRDhN/unpacked_sosreport
pgdump&lt;span class="w"&gt; &lt;/span&gt;extracted&lt;span class="w"&gt; &lt;/span&gt;into:&lt;span class="w"&gt; &lt;/span&gt;/tmp/tmp.do6qohRDhN/pg_dump_dir
Welcome&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;unpackHostsSosReports&lt;span class="w"&gt; &lt;/span&gt;script!
Extracting&lt;span class="w"&gt; &lt;/span&gt;sosreport&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;hypervisor&lt;span class="w"&gt; &lt;/span&gt;HYPERVISOR1&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/ovirt-log-collector-analyzer-hosts/HYPERVISOR1
Extracting&lt;span class="w"&gt; &lt;/span&gt;sosreport&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;hypervisor&lt;span class="w"&gt; &lt;/span&gt;HYPERVISOR2&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/ovirt-log-collector-analyzer-hosts/HYPERVISOR2
Extracting&lt;span class="w"&gt; &lt;/span&gt;sosreport&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;hypervisor&lt;span class="w"&gt; &lt;/span&gt;HYPERVISOR3&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/ovirt-log-collector-analyzer-hosts/HYPERVISOR3
Extracting&lt;span class="w"&gt; &lt;/span&gt;sosreport&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;hypervisor&lt;span class="w"&gt; &lt;/span&gt;HYPERVISOR4&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/ovirt-log-collector-analyzer-hosts/HYPERVISOR4

Creating&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;temporary&lt;span class="w"&gt; &lt;/span&gt;database&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/tmp.do6qohRDhN/postgresDb/pgdata.&lt;span class="w"&gt; &lt;/span&gt;Log&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;initdb&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/tmp.do6qohRDhN/initdb.log

WARNING:&lt;span class="w"&gt; &lt;/span&gt;enabling&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"trust"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;authentication&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;local&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;connections
You&lt;span class="w"&gt; &lt;/span&gt;can&lt;span class="w"&gt; &lt;/span&gt;change&lt;span class="w"&gt; &lt;/span&gt;this&lt;span class="w"&gt; &lt;/span&gt;by&lt;span class="w"&gt; &lt;/span&gt;editing&lt;span class="w"&gt; &lt;/span&gt;pg_hba.conf&lt;span class="w"&gt; &lt;/span&gt;or&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;option&lt;span class="w"&gt; &lt;/span&gt;-A,&lt;span class="w"&gt; &lt;/span&gt;or
--auth-local&lt;span class="w"&gt; &lt;/span&gt;and&lt;span class="w"&gt; &lt;/span&gt;--auth-host,&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;next&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;run&lt;span class="w"&gt; &lt;/span&gt;initdb.
LOG:&lt;span class="w"&gt;  &lt;/span&gt;redirecting&lt;span class="w"&gt; &lt;/span&gt;log&lt;span class="w"&gt; &lt;/span&gt;output&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;logging&lt;span class="w"&gt; &lt;/span&gt;collector&lt;span class="w"&gt; &lt;/span&gt;process
HINT:&lt;span class="w"&gt;  &lt;/span&gt;Future&lt;span class="w"&gt; &lt;/span&gt;log&lt;span class="w"&gt; &lt;/span&gt;output&lt;span class="w"&gt; &lt;/span&gt;will&lt;span class="w"&gt; &lt;/span&gt;appear&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;directory&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pg_log"&lt;/span&gt;.
Importing&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;dump&lt;span class="w"&gt; &lt;/span&gt;into&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;temporary&lt;span class="w"&gt; &lt;/span&gt;database.&lt;span class="w"&gt; &lt;/span&gt;Log&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;restore&lt;span class="w"&gt; &lt;/span&gt;process&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/tmp.do6qohRDhN/db-restore.log

Generating&lt;span class="w"&gt; &lt;/span&gt;reports:
&lt;span class="o"&gt;===================&lt;/span&gt;
Generated&lt;span class="w"&gt; &lt;/span&gt;analyzer_report.html

Cleaning&lt;span class="w"&gt; &lt;/span&gt;up:
&lt;span class="o"&gt;============&lt;/span&gt;
Stopping&lt;span class="w"&gt; &lt;/span&gt;temporary&lt;span class="w"&gt; &lt;/span&gt;database
Removing&lt;span class="w"&gt; &lt;/span&gt;temporary&lt;span class="w"&gt; &lt;/span&gt;directory&lt;span class="w"&gt; &lt;/span&gt;/tmp/tmp.do6qohRDhN
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You'll find a &lt;code&gt;analyzer_report.html&lt;/code&gt; file in your current working directory. It
can be reviews with a text-only browser such as &lt;code&gt;lynx&lt;/code&gt;/&lt;code&gt;links&lt;/code&gt; , or opened 
with a proper full-blown browser.&lt;/p&gt;
&lt;h2&gt;Bonus track&lt;/h2&gt;
&lt;p&gt;Sometimes it can also be helpful to check the database dump that is included
in the logcollector report. In order to do that, you can do something like:&lt;/p&gt;
&lt;p&gt;Review pg_dump_dir in the log above: &lt;code&gt;/tmp/tmp.do6qohRDhN/pg_dump_dir&lt;/code&gt; .&lt;/p&gt;
&lt;p&gt;Initiate a new postgres instance as follows :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;scl_source&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;rh-postgresql95
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PGDATA&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/foo
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;initdb&lt;span class="w"&gt; &lt;/span&gt;-D&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PGDATA&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;/opt/rh/rh-postgresql95/root/usr/libexec/postgresql-ctl&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;-D&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PGDATA&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-s&lt;span class="w"&gt; &lt;/span&gt;-w&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;psql&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"create database testengine"&lt;/span&gt;
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;psql&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"create schema testengine"&lt;/span&gt;
postgres@localhost&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;psql&lt;span class="w"&gt; &lt;/span&gt;testengine&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/tmp.*/pg_dump_dir/restore.sql
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Happy hacking!&lt;/p&gt;</description><category>logcollector</category><category>rhv</category><category>sosreport</category><guid>https://www.frangarcia.me/posts/rhv-42-using-rhv-log-collector-analyzer-to-assess-your-virtualization-environment/</guid><pubDate>Mon, 19 Nov 2018 21:15:39 GMT</pubDate></item><item><title>Configuring Cisco UCS fencing in RHV Manager</title><link>https://www.frangarcia.me/posts/configuring-cisco-ucs-fencing-in-rhv-manager/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;Just a quick postit on how to configure fencing of Cisco UCS servers in RHV.
Since the fencing agent requires the full path to the Service Profile in UCS,
it needs to be carefully specified as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slot: &lt;code&gt;MyServer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Options: &lt;code&gt;suborg=org-CLOUD/org-CLOUD-HYPERVISORS/org-AZ1,ssl_insecure=1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The path to the Service Profile can be checked by inspecting the UCS 'Events'
tab, which will show entries similar to:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nt"&gt;&amp;lt;eventRecord&lt;/span&gt;
&lt;span class="na"&gt;affected=&lt;/span&gt;&lt;span class="s"&gt;"org-root/org-CLOUD/org-CLOUD-HYPERVISORS/org-AZ1/ls-MyServer"&lt;/span&gt;
&lt;span class="na"&gt;cause=&lt;/span&gt;&lt;span class="s"&gt;"transition"&lt;/span&gt;
&lt;span class="na"&gt;changeSet=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;
&lt;span class="na"&gt;code=&lt;/span&gt;&lt;span class="s"&gt;"E4196007"&lt;/span&gt;
&lt;span class="na"&gt;created=&lt;/span&gt;&lt;span class="s"&gt;"2018-02-21T12:44:16Z"&lt;/span&gt;
&lt;span class="na"&gt;descr=&lt;/span&gt;&lt;span class="s"&gt;"[FSM:BEGIN]: Configuring Service Profile CFS1PHY03(FSM:sam:dme:LsServerConfigure)"&lt;/span&gt;
&lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"2586840"&lt;/span&gt;
&lt;span class="na"&gt;ind=&lt;/span&gt;&lt;span class="s"&gt;"state-transition"&lt;/span&gt;
&lt;span class="na"&gt;sessionId=&lt;/span&gt;&lt;span class="s"&gt;"internal"&lt;/span&gt;
&lt;span class="na"&gt;severity=&lt;/span&gt;&lt;span class="s"&gt;"info"&lt;/span&gt;
&lt;span class="na"&gt;trig=&lt;/span&gt;&lt;span class="s"&gt;"special"&lt;/span&gt;
&lt;span class="na"&gt;txId=&lt;/span&gt;&lt;span class="s"&gt;"1209150"&lt;/span&gt;
&lt;span class="na"&gt;user=&lt;/span&gt;&lt;span class="s"&gt;"ucsCentral"&lt;/span&gt;
&lt;span class="na"&gt;dn=&lt;/span&gt;&lt;span class="s"&gt;"event-log/2586840"&lt;/span&gt;
&lt;span class="na"&gt;status=&lt;/span&gt;&lt;span class="s"&gt;"created"&lt;/span&gt;
&lt;span class="na"&gt;sacl=&lt;/span&gt;&lt;span class="s"&gt;"addchild,del,mod"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/eventRecord&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Happy hacking!&lt;/p&gt;</description><category>cisco</category><category>rhv</category><category>ucs</category><guid>https://www.frangarcia.me/posts/configuring-cisco-ucs-fencing-in-rhv-manager/</guid><pubDate>Wed, 21 Feb 2018 16:31:13 GMT</pubDate></item><item><title>Configuring an iscsi volume for RHV usage</title><link>https://www.frangarcia.me/posts/configuring-an-iscsi-volume-for-rhv-usage/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;This is a cheatsheet to quickly configure storage and export it as an iSCSI
volume using RHEL7 targetcli and have it configured under RHV. This is by no means
a production configuration as your RHEL7 system might become a single point of
failure, but it convers nicely building a home lab or test environment.&lt;/p&gt;
&lt;p&gt;Just for clarity, a quick reminder of iSCSI concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;iSCSI target&lt;/strong&gt; provides some storage (here called server),&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;iSCSI initiator&lt;/strong&gt; uses this available storage (here called client).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;h3&gt;Configure server's storage&lt;/h3&gt;
&lt;p&gt;You can configure several types of backends, and for me the most versatile is
using LVM's Logical Volumes. You'll need to create your volumes in advance, for
example:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;lvcreate yourVG -n yourLV1 -L 50G
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Install software&lt;/h3&gt;
&lt;p&gt;Install the targetcli RPM:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;yum install -y targetcli
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Enable the &lt;code&gt;target&lt;/code&gt; daemon (NOT &lt;code&gt;targetd&lt;/code&gt;)&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;systemctl enable --now target.service
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Gather RHV configuration&lt;/h3&gt;
&lt;p&gt;You'll need to gather the following information from RHV:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IQN (iSCSI identifier) &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Configure and enable iSCSI&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;targetcli&lt;/code&gt; provides a very simple way to create iscsi targets once you understand
how it works. Namely what needs to be done is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add your backend devices&lt;/strong&gt;. This is where you add into targetcli's control the 
  LVM devices created in previous steps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create an IQN target&lt;/strong&gt;. This is a collection of luns shared to the same system(s)
  under the same group. It is used later to apply ACLs so only certain hosts can use
  certain LUNs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add LUNs into your IQN target&lt;/strong&gt;. After creating your IQN target, you need to
  add the backstore devices so they're shared via iSCSI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add ACLs into your IQN target&lt;/strong&gt;. Unless configured otherwise, LUNs are not
  visible to systems unless they're added into the right ACL.  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is a dump on how all this can be accomplished with targetcli:&lt;/p&gt;
&lt;h2&gt;Add storage into RHV&lt;/h2&gt;
&lt;p&gt;foo&lt;/p&gt;</description><category>iscsi</category><category>lab</category><category>rhev</category><category>rhv</category><category>targetcli</category><guid>https://www.frangarcia.me/posts/configuring-an-iscsi-volume-for-rhv-usage/</guid><pubDate>Tue, 29 Aug 2017 06:23:07 GMT</pubDate></item><item><title>Tales from the Field: Updating RHEV 3.5 to RHV 4.1</title><link>https://www.frangarcia.me/posts/tftf-updating-rhev-35-to-rhv-41/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;Welcome to the first post in the &lt;em&gt;Tales from the Field&lt;/em&gt; series. In this section
I indent to collect the most useful stories about different products and how they
are being used in every day situations.&lt;/p&gt;
&lt;p&gt;For a starter, I'll cover the new RHV suite, now on version 4.1, and the upgrade
path to have an older environment migrated to the latest version.&lt;/p&gt;
&lt;h2&gt;RHV fundamentals&lt;/h2&gt;
&lt;p&gt;RHEV is now simply known as &lt;em&gt;Red Hat Virtualization&lt;/em&gt; and it has several components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The RHEV Manager, a system that acts as a central configuration and orchestration
point for all hypervisors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Several types of hypervisors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RHEL-6 hypervisors. Used primarily in the RHEV 3.x suite.&lt;/li&gt;
&lt;li&gt;RHEL-7 hypervisors. Used in the latter RHEV 3.x and 4.x suites.&lt;/li&gt;
&lt;li&gt;RHEV-H 6 (vintage) hypervisors. Used primarily in the RHEV 3.x suite.&lt;/li&gt;
&lt;li&gt;RHEV-H 7 (vintage) hypervisors. Used in the latter RHEV 3.x suite.&lt;/li&gt;
&lt;li&gt;RHEV-H 7 (ngn) hypervisors. The new hypervisor in RHEV 4.x suite.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Standard RHEV to RHV upgrade path&lt;/h2&gt;
&lt;p&gt;Red Hat has put together some documentation and labs that should ease the upgrade
process:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/labs/rhevupgradehelper/"&gt;The 'RHV upgrade helper' lab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extensive documentation:&lt;ul&gt;
&lt;li&gt;Upgrading 3.5 to 3.6 :&lt;ul&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Virtualization/3.6/html/Upgrade_Guide/Red_Hat_Enterprise_Virtualization_3.6_Upgrade_Considerations.html"&gt;RED HAT ENTERPRISE VIRTUALIZATION 3.6 UPGRADE CONSIDERATIONS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/articles/2188911"&gt;"RHEV 3.5 to 3.6 Upgrade Guide: Tips, Considerations and Roll-back Issues"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/articles/2188461"&gt;Hosted Engine RHEV 3.5 to 3.6 Upgrade Guide: Tips, Considerations and Roll-back&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Upgrading 3.6 to 4.0 :&lt;ul&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.0/html-single/upgrade_guide/"&gt;RHV 4.0 UPGRADE GUIDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/solutions/2544981"&gt;How to upgrade RHEV 3.6 Hosted Engine to RHV 4.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Upgrading 4.0 to 4.1 :&lt;ul&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.1/html/upgrade_guide/"&gt;RHV 4.1 UPGRADE GUIDE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The 3.6 to 4.0 step is probably the one that requires most planning, as it involves
rebuilding the manager with a new version of the underlying operating system (RHEL6 to
RHEL7).&lt;/p&gt;
&lt;h2&gt;Shortcutting the upgrade&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;If I'm running a 3.5 cluster I surely do not need to install/upgrade every version of RHEV to end up in the latest version, do I?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, &lt;strong&gt;yes&lt;/strong&gt;. But there are some tweaks that can be done in the process to ease out the migration.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you are running a 3.5 cluster with either EL6 or EL7 3.5 hypervisors, you'll
  need to reinstall them. RHV4 uses the &lt;em&gt;next generation node (NGN)&lt;/em&gt; hypervisors
  which are not upgradable from previous versions of RHEV-H. The good news is
  it's now available a 3.6 NGN version of the hypervisor. So you can reinstall
  some of your existing 3.5 hosts with 3.6NGN, and that's the only reinstallation
  you will need.&lt;/li&gt;
&lt;li&gt;Once you have updated your manager to 3.5.latest, then to 3.6 you are in a position
  to start reinstalling your hypervisors with 3.6 NGN. Once that part is done,
  it is required you change your cluster compatibility settings to 3.6 and 
  recommended you reboot all your VMs. There is an ongoing buzilla 
  &lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=1474870"&gt;BZ#1474870&lt;/a&gt; that should
  address documenting what is the official recommendation regarding VM reboot
  on an upgrade scenario.&lt;/li&gt;
&lt;li&gt;Once you are in RHEV 3.6 Manager with 3.6 compat level, you need to backup your
  engine database and keep in a safe place. If you're migrating to a Hosted Engine
  from a standalone Engine, you'll need it to restore the data. If your plan is
  to reinstall your standalone Engine with RHEL7, it's the moment to do so.&lt;/li&gt;
&lt;li&gt;Once your Engine is available, you'll run a restore then an upgrade so it's
  upgraded to the latest 4.0 version .  &lt;/li&gt;
&lt;li&gt;If your 3.6 hypervisors have a configured RHSM/Satellite subscription, you'll
  be able to launch a 3.6 to 4.0 upgrade from the Manager itself. This greatly 
  eases the upgrade as no manual provision is required.&lt;/li&gt;
&lt;li&gt;After all hypervisors have been migrated to 4.0, change cluster compatibility
  to 4.0 .&lt;/li&gt;
&lt;li&gt;Rinse and repeat for Manager &amp;amp; host upgrades to 4.1 .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy hacking!&lt;/p&gt;</description><category>rhv</category><category>tftf</category><guid>https://www.frangarcia.me/posts/tftf-updating-rhev-35-to-rhv-41/</guid><pubDate>Tue, 11 Jul 2017 20:06:41 GMT</pubDate></item><item><title>Satellite 6.2 : Adding RHV4 compute resources</title><link>https://www.frangarcia.me/posts/satellite-62-adding-rhv4-compute-resources/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;Satellite server allows to manage compute resources such as Vmware and Red Hat
Virtualization (RHEV/RHV). In the later RHV versions there's a caveat on how
they should be added into Satellite.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The RHV certificate file has changed location:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;http://rhv4-fqdn//ovirt-engine/services/pki-resource?resource=ca-certificate&amp;amp;format=X509-PEM-CA&lt;/code&gt;  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The API endpoint should be specified with a 'v3' tag, as follows :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;https://rhv4-fqdn/ovirt-engine/api/v3&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Happy hacking!&lt;/p&gt;</description><category>rhv</category><category>satellite6</category><category>vmware</category><guid>https://www.frangarcia.me/posts/satellite-62-adding-rhv4-compute-resources/</guid><pubDate>Thu, 29 Jun 2017 10:12:30 GMT</pubDate></item><item><title>Injecting proxy configuration into remote-viewer (RHEV/oVirt console)</title><link>https://www.frangarcia.me/posts/injecting-proxy-configuration-into-remote-viewer-rhevovirt-console/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;One of the things that bother me is that I have not been able to find an easy 
way to change proxy settings when using the &lt;code&gt;remote-viewer&lt;/code&gt; tool to connect
to RHEV/oVirt virtual machines.&lt;/p&gt;
&lt;p&gt;Finally I managed to put some thought into how to handle this situation -- and
the easiest way I found is just to puto a wrapper into &lt;code&gt;remote-viewer&lt;/code&gt; so whenver
it's invoked via the browser, it can do all required mangling of the &lt;code&gt;*.vv&lt;/code&gt; file
we just downloaded.&lt;/p&gt;
&lt;p&gt;The virt-viwer &lt;code&gt;*.vv&lt;/code&gt; files are just INI files so updating them is usually
quite easy via :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://docs.ansible.com/ansible/ini_file_module.html"&gt;Ansible ini_file module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pixelb/crudini"&gt;Crudini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All in all, my wrapper looks like this :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c1"&gt;# Wrapper around remote-viewer to inject proxy parameters.&lt;/span&gt;
&lt;span class="c1"&gt;# Needs ansible, but can be trivially amended to use crudini.&lt;/span&gt;

&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;:/usr/bin:/usr/sbin

&lt;span class="nv"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
chmod&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;600&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$path&lt;/span&gt;

logger&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$path&lt;/span&gt;


&lt;span class="c1"&gt;# Add your magic about detecting whether we need to use a proxy in the 'if' below ;-)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;netstat&lt;span class="w"&gt; &lt;/span&gt;-putan&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/dev/null&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;':3128.*LISTEN'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-ne&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;logger&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;enabling&lt;span class="w"&gt; &lt;/span&gt;proxy
&lt;span class="w"&gt;    &lt;/span&gt;ansible&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;ini_file&lt;span class="w"&gt; &lt;/span&gt;localhost&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"state=present section=virt-viewer option=proxy value=\"http://localhost:3128\" path=\"&lt;/span&gt;&lt;span class="nv"&gt;$path&lt;/span&gt;&lt;span class="s2"&gt;\""&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;ansible&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;ini_file&lt;span class="w"&gt; &lt;/span&gt;localhost&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"state=present section=ovirt       option=proxy value=\"http://localhost:3128\" path=\"&lt;/span&gt;&lt;span class="nv"&gt;$path&lt;/span&gt;&lt;span class="s2"&gt;\""&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;sed&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'s# = #=#g'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$path&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c1"&gt;#logger &amp;lt; $path&lt;/span&gt;
/usr/bin/remote-viewer&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$path&lt;/span&gt;

&lt;span class="nb"&gt;exit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$?&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And then you just need to instruct your browser to launch &lt;code&gt;remote-viewer.sh&lt;/code&gt; rather
than &lt;code&gt;remote-viewer&lt;/code&gt; to have your proxy settings automatically added.&lt;/p&gt;
&lt;p&gt;Happy hacking!&lt;/p&gt;</description><category>ansible</category><category>remote-viewer</category><category>rhv</category><category>virt-viewer</category><guid>https://www.frangarcia.me/posts/injecting-proxy-configuration-into-remote-viewer-rhevovirt-console/</guid><pubDate>Tue, 06 Jun 2017 13:09:01 GMT</pubDate></item><item><title>Identifying VirtIO disks in RHEV</title><link>https://www.frangarcia.me/posts/identifying-virtio-disks-in-rhev/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;When you have a lot of disks attached to a single VM, it can be cumbersome to
identify which VM disk is what inside the VM. For example, you might have
several 100 GB disks named vde, vdf, vdg and have no obvious way to properly
detect which one is the right one.&lt;/p&gt;
&lt;p&gt;Say you want to remove your &lt;code&gt;vdd&lt;/code&gt; disk, and have it removed from your RHEV environment.&lt;/p&gt;
&lt;p&gt;You can check their VirtIO identifier with:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="cp"&gt;# find /dev/disk/by-id "(" -name "virtio*" -and -not -name "*part*" ")"  -exec ls -l "{}" +&lt;/span&gt;
&lt;span class="n"&gt;lrwxrwxrwx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Mar&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;disk&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;virtio&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;38&lt;/span&gt;&lt;span class="n"&gt;ebb33e&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;db1c&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;4048&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vdb&lt;/span&gt;
&lt;span class="n"&gt;lrwxrwxrwx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Mar&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;disk&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;virtio&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;d18901c&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;dea&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;414&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vda&lt;/span&gt;
&lt;span class="n"&gt;lrwxrwxrwx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Mar&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;disk&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;virtio&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;69&lt;/span&gt;&lt;span class="n"&gt;c3688d&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f8b3&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;464&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vdc&lt;/span&gt;
&lt;span class="n"&gt;lrwxrwxrwx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Mar&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;disk&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;virtio&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;b1666304&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fba1&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;44&lt;/span&gt;&lt;span class="n"&gt;a2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vdd&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;We can confirm the VirtIO identifier for &lt;code&gt;vdd&lt;/code&gt; is &lt;code&gt;b1666304-fba1-44a2&lt;/code&gt; .&lt;/p&gt;
&lt;p&gt;Now we need to map this to the human-readable names available in the RHEV Web UI.
This can be done by leveraging the URL as follows :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;#&lt;span class="w"&gt; &lt;/span&gt;curl&lt;span class="w"&gt; &lt;/span&gt;--silent&lt;span class="w"&gt; &lt;/span&gt;-k&lt;span class="w"&gt; &lt;/span&gt;-u&lt;span class="w"&gt; &lt;/span&gt;"admin@internal:password"&lt;span class="w"&gt; &lt;/span&gt;https://server:port/api/vms/UUID/disks&lt;span class="w"&gt; &lt;/span&gt;|&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;'disk&lt;span class="w"&gt; &lt;/span&gt;href|alias'

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;disk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/api/vms/VM-UUID/disks/38ebb33e-db1c-4048-a345-e381abc7f8cc"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"c8aad46c-9373-4670-a345-e381abc7f8cc"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;alias&amp;gt;&lt;/span&gt;MyVMName_Disk3&lt;span class="nt"&gt;&amp;lt;/alias&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;disk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/api/vms/VM-UUID/disks/4d18901c-1dea-414d-9cca-811dac616443"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"b7840cff-8f55-4dbb-9cca-811dac616443"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;alias&amp;gt;&lt;/span&gt;MyVMName_Disk2&lt;span class="nt"&gt;&amp;lt;/alias&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;disk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/api/vms/VM-UUID/disks/69c3688d-f8b3-464c-87e1-000e19d85c79"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"e9938a29-b792-4f6e-87e1-000e19d85c79"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;alias&amp;gt;&lt;/span&gt;MyVMName_Disk1&lt;span class="nt"&gt;&amp;lt;/alias&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;disk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/api/vms/VM-UUID/disks/b1666304-fba1-44a2-9cb1-fb4cfcbc19dd"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"9c2df047-343e-484a-9cb1-fb4cfcbc19dd"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;alias&amp;gt;&lt;/span&gt;MyVMName_Disk4&lt;span class="nt"&gt;&amp;lt;/alias&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The UUID for the instance can be checked in the RHEV Web UI by opening the &lt;code&gt;VMs&lt;/code&gt;
tab and clicking in the VM name.&lt;/p&gt;
&lt;p&gt;Happy hacking! :-)&lt;/p&gt;</description><category>rhv</category><category>virtio</category><guid>https://www.frangarcia.me/posts/identifying-virtio-disks-in-rhev/</guid><pubDate>Mon, 17 Apr 2017 14:03:11 GMT</pubDate></item><item><title>Red Hat Virtualization to get Hyperconvergence (HCI) support</title><link>https://www.frangarcia.me/posts/red-hat-virtualization-to-get-hyperconvergence-hci-support/</link><dc:creator>Fran Garcia</dc:creator><description>&lt;p&gt;It's been a while since I last touched Red Hat Virtualization (now without the 'E'!).
Once thing that picked my eye in this review is the fact that Hyperconvergence
is now a thing and will be supported very soon.&lt;/p&gt;
&lt;p&gt;The idea behind this is providing ROBOs (remote offices / branch offices) a low-complexity
solution to support their computing requirements without investing in difficult
to manage technology. But enough with the buzzwords, the technical details are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization technology provided by Red Hat Virtualization (RHV) 4.1 .&lt;/li&gt;
&lt;li&gt;Software-defined Storage technology provided by GlusterFS .&lt;/li&gt;
&lt;li&gt;Automathed installation via the &lt;a href="http://cockpit-project.org/"&gt;Cockpit&lt;/a&gt; software.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="RHV Pod components image" src="https://www.frangarcia.me/files/hci-pod_0.png" title="RHV Hyperconverged Pod"&gt;&lt;/p&gt;
&lt;p&gt;The plan is to support up to 3 pods (3, 6 and 9 hosts) configurations (remember
this is a ROBO product). As with all beta software, this is subject to change
in the final product so keep an eye on the Release Notes.&lt;/p&gt;
&lt;p&gt;Here are a few links that will bring further info if this sounds
interesting to you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://rhelblog.redhat.com/2016/11/01/hyperconverged/"&gt;Red Hat Virtualization: Bridging the Gap with the Cloud and Hyperconverged Infrastructure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/articles/2360321"&gt;Deploying Red Hat's Hyper-Converged Infrastructure (HCI)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/articles/2922421"&gt;BETA: Deploying Red Hat's Hyper-Converged Infrastructure (HCI) for virtual workloads with RHV 4.1 and RHGS 3.2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy hacking!&lt;/p&gt;</description><category>rhv</category><guid>https://www.frangarcia.me/posts/red-hat-virtualization-to-get-hyperconvergence-hci-support/</guid><pubDate>Fri, 31 Mar 2017 22:11:54 GMT</pubDate></item></channel></rss>