From d19860c302f9e150937ba7dafc19312d50406db4 Mon Sep 17 00:00:00 2001 From: Petr Kovar Date: Fri, 21 Apr 2017 17:57:51 +0200 Subject: [PATCH] [image-guide] Update fedora, centos and other pages Update for latest Fedora and CentOS images. Other updates throughout the guide. Change-Id: I9cfdf6b75bd3e47a354b3d4095209f7f3c0aaf48 Closes-bug: 1443815 --- doc/image-guide/source/centos-image.rst | 98 ++-- .../source/create-images-automatically.rst | 13 +- doc/image-guide/source/fedora-image.rst | 452 ++++++++++-------- .../source/figures/virt-manager.png | Bin 31049 -> 10560 bytes doc/image-guide/source/obtain-images.rst | 9 +- doc/image-guide/source/ubuntu-image.rst | 13 +- doc/image-guide/source/virt-install.rst | 38 +- doc/image-guide/source/virt-manager.rst | 7 +- 8 files changed, 341 insertions(+), 289 deletions(-) diff --git a/doc/image-guide/source/centos-image.rst b/doc/image-guide/source/centos-image.rst index 04b036d4c4..c0d0f5aa83 100644 --- a/doc/image-guide/source/centos-image.rst +++ b/doc/image-guide/source/centos-image.rst @@ -19,7 +19,7 @@ Download a CentOS install ISO #. Click the ``isos/`` folder link. #. Click the ``x86_64/`` folder link for 64-bit images. #. Click the netinstall ISO image that you want to download. - For example, ``CentOS-7-x86_64-NetInstall-1511.iso`` is a good + For example, ``CentOS-7-x86_64-NetInstall-1611.iso`` is a good choice because it is a smaller image that downloads missing packages from the Internet during installation. @@ -27,7 +27,7 @@ Start the installation process ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Start the installation process using either the :command:`virt-manager` -or the :command:`virt-install` command as described in the previous section. +or the :command:`virt-install` command as described previously. If you use the :command:`virt-install` command, do not forget to connect your VNC client to the virtual machine. @@ -48,15 +48,16 @@ something like this: --disk /tmp/centos.qcow2,format=qcow2 \ --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole \ - --os-type=linux --os-variant=rhel7 \ - --location=/data/isos/CentOS-7-x86_64-NetInstall-1511.iso + --os-type=linux --os-variant=centos7.0 \ + --location=/data/isos/CentOS-7-x86_64-NetInstall-1611.iso Step through the installation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ At the initial Installer boot menu, choose the -:guilabel:`Install CentOS 7` option. -Step through the installation prompts. Accept the defaults. +:guilabel:`Install CentOS 7` option. After the installation program starts, +choose your preferred language and click :guilabel:`Continue` to get to the +installation summary. Accept the defaults. .. figure:: figures/centos-install.png :width: 100% @@ -72,6 +73,15 @@ default. .. figure:: figures/centos-tcpip.png :width: 100% +Hostname +-------- + +The installer allows you to choose a host name. +The default (``localhost.localdomain``) is fine. +You install the ``cloud-init`` package later, +which sets the host name on boot when a new instance +is provisioned using this image. + Point the installer to a CentOS web server ------------------------------------------ @@ -104,15 +114,6 @@ Storage devices If prompted about which type of devices your installation uses, choose :guilabel:`Virtio Block Device`. -Hostname --------- - -The installer may ask you to choose a host name. -The default (``localhost.localdomain``) is fine. -You install the ``cloud-init`` package later, -which sets the host name on boot when a new instance -is provisioned using this image. - Partition the disks ------------------- @@ -135,19 +136,22 @@ Step through the installation, using the default options. The simplest thing to do is to choose the ``Minimal Install`` install, which installs an SSH server. +Set the root password +--------------------- + +During the installation, remember to set the root password when prompted. + Detach the CD-ROM and reboot ---------------------------- -When the installation has completed, the -:guilabel:`Congratulations, your CentOS installation is complete` -screen appears. +Wait until the installation is complete. .. figure:: figures/centos-complete.png :width: 100% To eject a disk by using the :command:`virsh` command, libvirt requires that you attach an empty disk at the same target -that the CDROM was previously attached, which should be ``hdc``. +that the CD-ROM was previously attached, which may be ``hda``. You can confirm the appropriate target using the :command:`virsh dumpxml vm-image` command. @@ -159,7 +163,7 @@ You can confirm the appropriate target using the ... - +
@@ -173,24 +177,18 @@ and reboot it by manually stopping and starting. .. code-block:: console - # virsh attach-disk --type cdrom --mode readonly centos "" hdc + # virsh attach-disk --type cdrom --mode readonly centos "" hda # virsh reboot centos -Log in to newly created image ------------------------------ - -When you boot for the first time after installation, -you might be prompted about authentication tools. -Select :guilabel:`Exit`. Then, log in as root. - Install the ACPI service ~~~~~~~~~~~~~~~~~~~~~~~~ To enable the hypervisor to reboot or shutdown an instance, you must install and run the ``acpid`` service on the guest system. -Run the following commands inside the CentOS guest to install the -ACPI service and configure it to start when the system boots: +Log in as root to the CentOS guest and run the following commands +to install the ACPI service and configure it to start when the +system boots: .. code-block:: console @@ -216,40 +214,39 @@ Use cloud-init to fetch the public key The ``cloud-init`` package automatically fetches the public key from the metadata server and places the key in an account. -You can install ``cloud-init`` inside the CentOS guest by -adding the EPEL repo: +Install ``cloud-init`` inside the CentOS guest by +running: .. code-block:: console - # yum install epel-release.noarch # yum install cloud-init -The account varies by distribution. On Ubuntu-based virtual machines, -the account is called ``ubuntu``. On Fedora-based virtual machines, -the account is called ``ec2-user``. +The account varies by distribution. On CentOS-based virtual machines, +the account is called ``centos``. You can change the name of the account used by ``cloud-init`` by editing the ``/etc/cloud/cloud.cfg`` file and adding a line with a different user. For example, to configure ``cloud-init`` -to put the key in an account named ``admin``, add this line -to the configuration file: +to put the key in an account named ``admin``, use the following +syntax in the configuration file: .. code-block:: console - user: admin + users: + - name: admin + (...) Install cloud-utils-growpart to allow partitions to resize ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In order for the root partition to properly resize one must -install cloud-utils-growpart which contains the proper tools +In order for the root partition to properly resize, install the +``cloud-utils-growpart`` package, which contains the proper tools to allow the disk to resize using cloud-init. .. code-block:: console # yum install cloud-utils-growpart - Write a script to fetch the public key (if no cloud-init) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -319,16 +316,18 @@ Configure console ~~~~~~~~~~~~~~~~~ For the :command:`nova console-log` command to work properly -on CentOS 7.``x``, you might need to do the following steps: +on CentOS 7, you might need to do the following steps: #. Edit the ``/etc/default/grub`` file and configure the ``GRUB_CMDLINE_LINUX`` option. Delete the ``rhgb quiet`` - and add the ``console=tty0 console=ttyS0,115200n8`` to the option: + and add ``console=tty0 console=ttyS0,115200n8`` to the option. + + For example: .. code-block:: none ... - GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8" + GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8" #. Run the following command to save the changes: @@ -349,20 +348,19 @@ on CentOS 7.``x``, you might need to do the following steps: Shut down the instance ~~~~~~~~~~~~~~~~~~~~~~ -From inside the instance, as root: +From inside the instance, run as root: .. code-block:: console - # /sbin/shutdown -h now + # poweroff Clean up (remove MAC address details) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The operating system records the MAC address of the virtual Ethernet card in locations such as ``/etc/sysconfig/network-scripts/ifcfg-eth0`` -and ``/etc/udev/rules.d/70-persistent-net.rules`` during the instance -process. However, each time the image boots up, the virtual Ethernet -card will have a different MAC address, so this information must +during the instance process. However, each time the image boots up, the virtual +Ethernet card will have a different MAC address, so this information must be deleted from the configuration file. There is a utility called :command:`virt-sysprep`, that performs diff --git a/doc/image-guide/source/create-images-automatically.rst b/doc/image-guide/source/create-images-automatically.rst index 97ecfcba9a..bb9a01c12a 100644 --- a/doc/image-guide/source/create-images-automatically.rst +++ b/doc/image-guide/source/create-images-automatically.rst @@ -43,19 +43,10 @@ Oz that automates the process of creating a virtual machine image file. Oz is a Python app that interacts with KVM to step through the process of installing a virtual machine. + It uses a predefined set of kickstart (Red Hat-based systems) and preseed files (Debian-based systems) for operating systems that it supports, and it can also be used to create Microsoft Windows images. -On Fedora, install Oz with yum: - -.. code-block:: console - - # yum install oz - -.. note:: - - As of this writing, there are no Oz packages for Ubuntu, so you will - need to either install from the source or build your own .deb file. A full treatment of Oz is beyond the scope of this document, but we will provide an example. You can find additional examples of @@ -63,7 +54,7 @@ Oz template files on GitHub at `rcbops/oz-image-build/tree/master/templates `_. Here's how you would create a CentOS 6.4 image with Oz. -Create a template file (we'll call it ``centos64.tdl``) with +Create a template file called ``centos64.tdl`` with the following contents. The only entry you will need to change is the ```` contents. diff --git a/doc/image-guide/source/fedora-image.rst b/doc/image-guide/source/fedora-image.rst index 2b61237ce2..14a7a7d9d7 100644 --- a/doc/image-guide/source/fedora-image.rst +++ b/doc/image-guide/source/fedora-image.rst @@ -2,222 +2,282 @@ Example: Fedora image ===================== -Download a `Fedora `_ ISO image. -This procedure lets you create a Fedora 20 image. +This example shows you how to install a Fedora image and focuses +mainly on Fedora 25. Because the Fedora installation process +might differ across versions, the installation steps might +differ if you use a different version of Fedora. -#. Start the installation using :command:`virt-install` as shown below: +Download a Fedora install ISO +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. Visit the `Fedora download site `_. + +#. Navigate to the + `Download Fedora Server page `_ + for a Fedora Server ISO image. + +#. Choose the ISO image you want to download. + + For example, the ``Netinstall Image`` is a good choice because it is a + smaller image that downloads missing packages from the Internet during + installation. + +Start the installation process +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Start the installation process using either the :command:`virt-manager` +or the :command:`virt-install` command as described previously. +If you use the :command:`virt-install` command, do not forget to connect your +VNC client to the virtual machine. + +Assume that: + +* The name of your virtual machine image is ``fedora``; + you need this name when you use :command:`virsh` commands + to manipulate the state of the image. +* You saved the netinstall ISO image to the ``/tmp`` directory. + +If you use the :command:`virt-install` command, the commands should look +something like this: + +.. code-block:: console + + # qemu-img create -f qcow2 /tmp/fedora.qcow2 10G + # virt-install --virt-type kvm --name fedora --ram 1024 \ + --disk /tmp/fedora.qcow2,format=qcow2 \ + --network network=default \ + --graphics vnc,listen=0.0.0.0 --noautoconsole \ + --os-type=linux --os-variant=fedora23 \ + --location=/tmp/Fedora-Server-netinst-x86_64-25-1.3.iso + +Step through the installation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +After the installation program starts, choose your preferred language and click +:guilabel:`Continue` to get to the installation summary. Accept the defaults. + +Review the Ethernet status +-------------------------- + +Ensure that the Ethernet setting is ``ON``. Additionally, make sure that +``IPv4 Settings' Method`` is ``Automatic (DHCP)``, which is the default. + +Hostname +-------- + +The installer allows you to choose a host name. +The default (``localhost.localdomain``) is fine. +You install the ``cloud-init`` package later, +which sets the host name on boot when a new instance +is provisioned using this image. + +Partition the disks +------------------- + +There are different options for partitioning the disks. +The default installation uses LVM partitions, and creates +three partitions (``/boot``, ``/``, ``swap``), which works fine. +Alternatively, you might want to create a single ext4 +partition that is mounted to ``/``, which also works fine. + +If unsure, use the default partition scheme for the installer. +While no scheme is inherently better than another, having the +partition that you want to dynamically grow at the end of the +list will allow it to grow without crossing another +partition's boundary. + +Select software to install +-------------------------- + +Step through the installation, using the default options. +The simplest thing to do is to choose the ``Minimal Install`` +install, which installs an SSH server. + +Set the root password +--------------------- + +During the installation, remember to set the root password when prompted. + +Detach the CD-ROM and reboot +---------------------------- + +Wait until the installation is complete. + +To eject a disk by using the :command:`virsh` command, +libvirt requires that you attach an empty disk at the same target +that the CD-ROM was previously attached, which may be ``hda``. +You can confirm the appropriate target using the +:command:`virsh dumpxml vm-image` command. + +.. code-block:: console + + # virsh dumpxml fedora + + fedora + ... + + + + + + + +
+ + ... + + +Run the following commands from the host to eject the disk +and reboot using ``virsh``, as root. If you are using ``virt-manager``, +the commands below will work, but you can also use the GUI to detach +and reboot it by manually stopping and starting. + +.. code-block:: console + + # virsh attach-disk --type cdrom --mode readonly fedora "" hda + # virsh reboot fedora + +Install the ACPI service +~~~~~~~~~~~~~~~~~~~~~~~~ + +To enable the hypervisor to reboot or shutdown an instance, +you must install and run the ``acpid`` service on the guest system. + +Log in as root to the Fedora guest and run the following commands +to install the ACPI service and configure it to start when the +system boots: + +.. code-block:: console + + # dnf install acpid + # systemctl enable acpid + +Configure cloud-init to fetch metadata +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +An instance must interact with the metadata service to perform +several tasks on start up. For example, the instance must get +the ssh public key and run the user data script. To ensure that +the instance performs these tasks, use the ``cloud-init`` +package. + +The ``cloud-init`` package automatically fetches the public key +from the metadata server and places the key in an account. +Install ``cloud-init`` inside the Fedora guest by +running: + +.. code-block:: console + + # yum install cloud-init + +The account varies by distribution. On Fedora-based virtual machines, +the account is called ``fedora``. + +You can change the name of the account used by ``cloud-init`` +by editing the ``/etc/cloud/cloud.cfg`` file and adding a line +with a different user. For example, to configure ``cloud-init`` +to put the key in an account named ``admin``, use the following +syntax in the configuration file: + +.. code-block:: console + + users: + - name: admin + (...) + +Install cloud-utils-growpart to allow partitions to resize +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In order for the root partition to properly resize, install the +``cloud-utils-growpart`` package, which contains the proper tools +to allow the disk to resize using cloud-init. + +.. code-block:: console + + # dnf install cloud-utils-growpart + +Disable the zeroconf route +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For the instance to access the metadata service, +you must disable the default zeroconf route: + +.. code-block:: console + + # echo "NOZEROCONF=yes" >> /etc/sysconfig/network + +Configure console +~~~~~~~~~~~~~~~~~ + +For the :command:`nova console-log` command to work properly +on Fedora, you might need to do the following steps: + +#. Edit the ``/etc/default/grub`` file and configure the + ``GRUB_CMDLINE_LINUX`` option. Delete the ``rhgb quiet`` + and add ``console=tty0 console=ttyS0,115200n8`` to the option. + For example: + + .. code-block:: none + + ... + GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap console=tty0 console=ttyS0,115200n8" + +#. Run the following command to save the changes: .. code-block:: console - # qemu-img create -f qcow2 fedora-20.qcow2 8G - # virt-install --connect=qemu:///system --network=bridge:virbr0 \ - --extra-args="console=tty0 console=ttyS0,115200 serial rd_NO_PLYMOUTH" \ - --name=fedora-20 --disk path=/var/lib/libvirt/images/fedora-20.qcow2,format=qcow2,size=10,cache=none \ - --ram 2048 --vcpus=2 --check-cpu --accelerate --os-type linux --os-variant fedora19 \ - --hvm --location=http://dl.fedoraproject.org/pub/fedora/linux/releases/20/Fedora/x86_64/os/ \ - --nographics + # grub2-mkconfig -o /boot/grub2/grub.cfg + Generating grub configuration file ... + Found linux image: /boot/vmlinuz-4.10.10-200.fc25.x86_64 + Found initrd image: /boot/initramfs-4.10.10-200.fc25.x86_64.img + Found linux image: /boot/vmlinuz-0-rescue-c613978614c7426ea3e550527f63710c + Found initrd image: /boot/initramfs-0-rescue-c613978614c7426ea3e550527f63710c.img + done - This will launch a VM and start the installation process. +Shut down the instance +~~~~~~~~~~~~~~~~~~~~~~ - .. code-block:: console +From inside the instance, run as root: - Starting install... - Retrieving file .treeinfo... | 2.2 kB 00:00:00 !!! - Retrieving file vmlinuz... | 9.8 MB 00:00:05 !!! - Retrieving file initrd.img... | 66 MB 00:00:37 !!! - Allocating 'fedora-20.qcow2' | 10 GB 00:00:00 - Creating domain... | 0 B 00:00:00 - Connected to domain fedora-20 - Escape character is ^] - [ 0.000000] Initializing cgroup subsys cpuset - [ 0.000000] Initializing cgroup subsys cpu - [ 0.000000] Initializing cgroup subsys cpuacct - ... - ... - ... - [ OK ] Reached target Local File Systems (Pre). - Starting installer, one moment... - anaconda 20.25.15-1 for Fedora 20 started. - ======================================================================== - ======================================================================== +.. code-block:: console -#. Choose the VNC or text mode to set the installation options. + # poweroff - .. code-block:: console +Clean up (remove MAC address details) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Text mode provides a limited set of installation options. - It does not offer custom partitioning for full control over the - disk layout. Would you like to use VNC mode instead? +The operating system records the MAC address of the virtual Ethernet +card in locations such as ``/etc/sysconfig/network-scripts/ifcfg-eth0`` +during the instance process. However, each time the image boots up, the virtual +Ethernet card will have a different MAC address, so this information must +be deleted from the configuration file. - 1) Start VNC +There is a utility called :command:`virt-sysprep`, that performs +various cleanup tasks such as removing the MAC address references. +It will clean up a virtual machine image in place: - 2) Use text mode +.. code-block:: console - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: + # virt-sysprep -d fedora -#. Set the timezone, network configuration, installation source, - and the root password. Optionally, you can choose to create a user. +Undefine the libvirt domain +~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#. Set up the installation destination as shown below: +Now that you can upload the image to the Image service, you no +longer need to have this virtual machine image managed by libvirt. +Use the :command:`virsh undefine vm-image` command to inform libvirt: - .. code-block:: console +.. code-block:: console - ======================================================================== - Probing storage... - Installation Destination + # virsh undefine fedora - [x] 1) Virtio Block Device: 10.24 GB (vda) - - 1 disk selected; 10.24 GB capacity; 10.24 GB free ... - - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: c - ======================================================================== - ======================================================================== - Autopartitioning Options - - [ ] 1) Replace Existing Linux system(s) - - [x] 2) Use All Space - - [ ] 3) Use Free Space - - Installation requires partitioning of your hard drive. Select what space - to use for the install target. - - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: 2 - ======================================================================== - ======================================================================== - Autopartitioning Options - - [ ] 1) Replace Existing Linux system(s) - - [x] 2) Use All Space - - [ ] 3) Use Free Space - - Installation requires partitioning of your hard drive. Select what space - to use for the install target. - - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: c - ======================================================================== - ======================================================================== - Partition Scheme Options - - [ ] 1) Standard Partition - - [x] 2) LVM - - [ ] 3) BTRFS - - Select a partition scheme configuration. - - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: c - Generating updated storage configuration - Checking storage configuration... - ======================================================================== - - -#. Run the following commands from the host to eject the disk and - reboot using the :command:`virsh` command, as root. - - .. code-block:: console - - # virsh attach-disk --type cdrom --mode readonly fedora-20 "" hdc - # virsh destroy fedora-20 - # virsh start fedora-20 - - You can also use the GUI to detach and reboot it by manually - stopping and starting. - -#. Log in as root user when you boot for the first time after installation. - -#. Install and run the ``acpid`` service on the guest system to enable - the virtual machine to reboot or shutdown an instance. - - Run the following commands inside the Fedora guest to install the - ACPI service and configure it to start when the system boots: - - .. code-block:: console - - # yum install acpid - # chkconfig acpid on - -#. Install the ``cloud-init`` package inside the Fedora guest by adding - the EPEL repo: - - The ``cloud-init`` package automatically fetches the public key - from the metadata server and places the key in an account. - - .. code-block:: console - - # yum install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm - # yum install cloud-init - - You can change the name of the account used by ``cloud-init`` - by editing the ``/etc/cloud/cloud.cfg`` file and adding a line with - a different user. For example, to configure ``cloud-init`` to put the - key in an account named admin, add this line to the configuration file: - - .. code-block:: console - - user: admin - -#. Disable the default ``zeroconf`` route for the instance to access - the metadata service: - - .. code-block:: console - - # echo "NOZEROCONF=yes" >> /etc/sysconfig/network - -#. For the :command:`nova console-log` command to work properly on - Fedora 20, you might need to add the following lines to - the ``/boot/grub/menu.lst`` file: - - .. code-block:: console - - serial --unit=0 --speed=115200 - terminal --timeout=10 console serial - # Edit the kernel line to add the console entries - kernel ... console=tty0 console=ttyS0,115200n8 - -#. Shut down the instance from inside the instance as a root user: - - .. code-block:: console - - # /sbin/shutdown -h now - -#. Clean up and remove MAC address details. - - The operating system records the MAC address of the virtual Ethernet - card in locations such as ``/etc/sysconfig/network-scripts/ifcfg-eth0`` - and ``/etc/udev/rules.d/70-persistent-net.rules`` during the instance - process. However, each time the image boots up, the virtual Ethernet - card will have a different MAC address, so this information must be - deleted from the configuration file. - - Use the :command:`virt-sysprep` utility. This performs various cleanup - tasks such as removing the MAC address references. - It will clean up a virtual machine image in place: - - .. code-block:: console - - # virt-sysprep -d fedora-20 - -#. Undefine the domain since you no longer need to have this - virtual machine image managed by libvirt: - - .. code-block:: console - - # virsh undefine fedora-20 +Image is complete +~~~~~~~~~~~~~~~~~ The underlying image file that you created with the -:command:`qemu-img create` command is ready to be uploaded to the -Image service by using the :command:`openstack image create` +:command:`qemu-img create` command is ready to be uploaded. +For example, you can upload the ``/tmp/fedora.qcow2`` +image to the Image service by using the :command:`openstack image create` command. For more information, see the `Create or update an image `__. diff --git a/doc/image-guide/source/figures/virt-manager.png b/doc/image-guide/source/figures/virt-manager.png index 95c5203111c895f71720fb02bbd04142e05d05b2..3888398767dcbb6a3e2b72e7ed8fd7d884dc0319 100644 GIT binary patch literal 10560 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 literal 31049 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 IR`_. +`Fedora download page `_. .. note:: @@ -116,14 +116,13 @@ be built with a web-based tool called `SUSE Studio `_. Red Hat Enterprise Linux ~~~~~~~~~~~~~~~~~~~~~~~~ -Red Hat maintains official Red Hat Enterprise Linux cloud images. -A valid Red Hat Enterprise Linux subscription is required to -download these images. +Red Hat maintains official Red Hat Enterprise Linux cloud images. A valid Red +Hat Enterprise Linux subscription is required to download these images. * `Red Hat Enterprise Linux 7 KVM Guest Image `_ * `Red Hat Enterprise Linux 6 KVM Guest Image - `_ + `_ .. note:: diff --git a/doc/image-guide/source/ubuntu-image.rst b/doc/image-guide/source/ubuntu-image.rst index 67eaf85e99..f041a3c859 100644 --- a/doc/image-guide/source/ubuntu-image.rst +++ b/doc/image-guide/source/ubuntu-image.rst @@ -197,14 +197,17 @@ The account varies by distribution. On Ubuntu-based virtual machines, the account is called ``ubuntu``. On Fedora-based virtual machines, the account is called ``ec2-user``. -You can change the name of the account used by cloud-init by editing the -``/etc/cloud/cloud.cfg`` file and adding a line with a different user. -For example, to configure cloud-init to put the key in an account named -``admin``, edit the config file so it has the line: +You can change the name of the account used by ``cloud-init`` +by editing the ``/etc/cloud/cloud.cfg`` file and adding a line +with a different user. For example, to configure ``cloud-init`` +to put the key in an account named ``admin``, use the following +syntax in the configuration file: .. code-block:: console - user: admin + users: + - name: admin + (...) Shut down the instance ~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/image-guide/source/virt-install.rst b/doc/image-guide/source/virt-install.rst index ce8f96fbd6..903f2266e3 100644 --- a/doc/image-guide/source/virt-install.rst +++ b/doc/image-guide/source/virt-install.rst @@ -2,10 +2,10 @@ Use virt-install and connect by using a local VNC client ======================================================== -If you do not wish to use virt-manager (for example, you do not -want to install the dependencies on your server, you don't have -an X server running locally, the X11 forwarding over SSH isn't -working), you can use the :command:`virt-install` tool to boot +If you do not wish to use :command:`virt-manager` (for example, +you do not want to install the dependencies on your server, you do +not have an X server running locally, the X11 forwarding over SSH +is not working), you can use the :command:`virt-install` tool to boot the virtual machine through libvirt and connect to the graphical console from a VNC client installed on your local machine. @@ -17,7 +17,7 @@ index.php?title=Welcome_to_TigerVNC>`_ (multiple platforms), `RealVNC `_ (multiple platforms), `Chicken `_ (Mac OS X), `Krde `_ (KDE), -`Vinagre `_ (GNOME). +`Vinagre `_ (GNOME). The following example shows how to use the :command:`qemu-img` command to create an empty image file, and :command:`virt-install` @@ -25,13 +25,13 @@ command to start up a virtual machine using that image file. As root: .. code-block:: console - # qemu-img create -f qcow2 /data/centos-6.4.qcow2 10G - # virt-install --virt-type kvm --name centos-6.4 --ram 1024 \ - --cdrom=/data/CentOS-6.4-x86_64-netinstall.iso \ - --disk path=/data/centos-6.4.qcow2,size=10,format=qcow2 \ - --network network=default \ - --graphics vnc,listen=0.0.0.0 --noautoconsole \ - --os-type=linux --os-variant=rhel6 + # qemu-img create -f qcow2 /tmp/centos.qcow2 10G + # virt-install --virt-type kvm --name centos --ram 1024 \ + --disk /tmp/centos.qcow2,format=qcow2 \ + --network network=default \ + --graphics vnc,listen=0.0.0.0 --noautoconsole \ + --os-type=linux --os-variant=centos7.0 \ + --location=/data/isos/CentOS-7-x86_64-NetInstall-1611.iso Starting install... Creating domain... | 0 B 00:00 @@ -39,17 +39,17 @@ command to start up a virtual machine using that image file. As root: the console to complete the installation process. The KVM hypervisor starts the virtual machine with the -libvirt name, ``centos-6.4``, with 1024 MB of RAM. +libvirt name, ``centos``, with 1024 MB of RAM. The virtual machine also has a virtual CD-ROM drive associated -with the ``/data/CentOS-6.4-x86_64-netinstall.iso`` file and +with the ``/data/isos/CentOS-7-x86_64-NetInstall-1611.iso`` file and a local 10 GB hard disk in qcow2 format that is stored -in the host at ``/data/centos-6.4.qcow2``. +in the host at ``/tmp/centos.qcow2``. It configures networking to use libvirt default network. There is a VNC server that is listening on all interfaces, and libvirt will not attempt to launch a VNC client automatically nor try to display the text console (``--no-autoconsole``). Finally, libvirt will attempt to optimize the configuration -for a Linux guest running a RHEL 6.x distribution. +for a Linux guest running a CentOS 7 distribution. .. note:: @@ -60,7 +60,7 @@ for a Linux guest running a RHEL 6.x distribution. 192.168.122.0/24 subnet, and libvirt has iptables rules for doing NAT for IP addresses on this subnet. -Run the :command:`virt-install --os-variant list` command +Run the :command:`osinfo-query os` command to see a range of allowed ``--os-variant`` options. Use the :command:`virsh vncdisplay vm-name` command @@ -68,10 +68,10 @@ to get the VNC port number. .. code-block:: console - # virsh vncdisplay centos-6.4 + # virsh vncdisplay centos :1 -In the example above, the guest ``centos-6.4`` uses VNC +In the example above, the guest ``centos`` uses VNC display ``:1``, which corresponds to TCP port ``5901``. You should be able to connect a VNC client running on your local machine to display ``:1`` on the remote diff --git a/doc/image-guide/source/virt-manager.rst b/doc/image-guide/source/virt-manager.rst index e74d908609..d235115c80 100644 --- a/doc/image-guide/source/virt-manager.rst +++ b/doc/image-guide/source/virt-manager.rst @@ -33,7 +33,8 @@ permissions to run libvirt, but has sudo privileges, do: The ``-X`` flag passed to ssh will enable X11 forwarding over ssh. If this does not work, try replacing it with the ``-Y`` flag. -Click the :guilabel:`New` button at the top-left and step through the +Click the :guilabel:`Create a new virtual machine` button at the top-left, +or go to :menuselection:`File --> New Virtual Machine`. Then, follow the instructions. .. figure:: figures/virt-manager.png @@ -44,7 +45,7 @@ to specify information about the virtual machine. .. note:: - When using qcow2 format images you should check the option - ``customize before install``, go to disk properties and + When using qcow2 format images, you should check the option + ``Customize configuration before install``, go to disk properties and explicitly select the :guilabel:`qcow2` format. This ensures the virtual machine disk size will be correct.