Building Your Own Machine Images

Guidelines for Building Private Images

Note:

Oracle provides support for instances created using Oracle-provided images.

When you build images, consider the following guidelines:

  • Supported operating systems

    Oracle has certified the use of private images that are built using x86, 64-bit versions of the following operating systems:

    • Oracle Linux
      • 5.3
      • 5.11 UEK R2
      • 6.4 UEK R3 and UEK R4
      • 6.6 UEK R3 and UEK R4
      • 6.7 UEK R3 and UEK R4
      • 6.8 UEK R3 and UEK R4
      • 7.1 UEK R3 and UEK R4
      • 7.2 UEK R3 and UEK R4

      Oracle Linux images must be set up to boot using kernel version 2.6.36 or later. Kernels starting from v2.6.36 contain PVHVM drivers, which are required for instances to work in Oracle Compute Cloud Service.

    • Oracle Solaris 11.3

    Note:

    You can launch instances from images built using other operating systems as well. Do follow the guidelines provided in this document when building such images.

  • Network configuration

    If you expect the instances that’re created from your image to be attached to multiple networks, then configure your image to support multiple virtual NICs:
    • For Oracle Linux and other Linux distributions that’re based on Red Hat Enterprise Linux (RHEL), create a separate interface file under /etc/sysconfig/network-scripts for each network.

      The interface files should be named ifcfg-interface, where interface is the interface name:
      • For Oracle Linux 6.x and RHEL-based images, the interface name should be in the ethN format—that is, eth0eth1, and so on.

      • For Oracle Linux 7+ images, the interface name should be in the emN format: em1, em2, and so on.

      You can attach your instance to up to eight networks.

      Each interface file should be contain the following attributes:
      DEVICE=interface
      ONBOOT=yes
      TYPE=Ethernet
      BOOTPROTO=dhcp
      PERSISTENT_DHCLIENT=1

      Replace interface with the appropriate interface name as described earlier.

    • For Debian-based images, edit the /etc/network/interfaces file to include the following commands:
      auto eth0
      iface eth0 inet dhcp
      auto eth1
      iface eth1 inet dhcp
      auto eth2
      iface eth2 inet dhcp
      auto eth3
      iface eth3 inet dhcp
      auto eth4
      iface eth4 inet dhcp
      auto eth5
      iface eth5 inet dhcp
      auto eth6
      iface eth6 inet dhcp
      auto eth7
      iface eth7 inet dhcp
  • Image disk count and size

    The image must contain only one disk.

    Keep your image disk size just as small as is essential. A large image requires more time to be uploaded to Oracle Storage Cloud Service, and costs more to store. In addition, creating instances and bootable storage volumes from a large image requires more time. Before uploading image files to Oracle Storage Cloud Service, make them sparse files. On Linux, you can convert a file to the sparse format by running the command, cp --sparse=always original_file sparse_file. And when creating the tar archive, to ensure that the tar utility stores the sparse file appropriately, specify the -S option.

  • User access

    Before creating the image file, plan ahead and provision any users that you'd like to be available when instances are created using the image.

    Note:

    While creating instances, you can specify one or more SSH public keys.

    The keys that you specify are stored as metadata on the instance. This metadata can be accessed from within the instance at http://192.0.0.192/{version}/meta-data/public-keys/{index}/openssh-key.
    • Oracle-provided images include a script that runs automatically when the instance starts, retrieves the keys, and adds them to the authorized_keys file of the opc user.

    • In images that you build, you can write and include a script that runs automatically when the instance starts, retrieves the SSH public keys, and adds the keys to the authorized_keys file of the appropriate users.

    Alternatively, if you’re building an Oracle Linux 6.7 image, you can install and use opc-init to perform instance initialization and configuration tasks, including copying the SSH public key to the authorized_keys file of the opc user. See Using opc-init in a Private Machine Image.

  • Format

    The image must be a full disk image, including a partition table and boot loader. The virtual disk image must be converted to the raw format, packaged in a tar archive that contains only the image, and compressed using gzip. The final image must be a tar.gz file.

    Choose a tar.gz file name that you can use later to easily identify the key characteristics of the image, such as the OS name, OS version, and the disk size. For example, for a root-disabled, Oracle Linux 6.6 image with a 20-GB disk, consider using a file name such as OL66_20GB_RD.tar.gz.

  • Security patches

    Apply the necessary security patches and review the security configuration before creating the image file.

    To ensure that Oracle Compute Cloud Service instances provide a resilient platform for your workloads, make sure that the latest security patches are applied to the operating system running on the instances. In addition, before deploying applications on an instance, review the security configuration of the operating system and verify that it complies with your security policies and standards.

Building an Oracle Linux Machine Image

Oracle provides several ready-to-use Oracle Linux machine images that you can use to create instances in Oracle Compute Cloud Service. You can build your own machine images and create instances using them.

For detailed instructions about installing Oracle Linux on Oracle VM VirtualBox; customizing the operating system for enabling key-based SSH access; changing the default kernel; installing Apache HTTP Server, MySQL, and PHP; and then creating a raw image that you can use to launch instances in Oracle Compute Cloud Service, see the Building a Custom Oracle Linux Machine Image with the LAMP Stack tutorial.

After building a machine image, to use it to launch instances, you must upload the tar.gz image file to Oracle Storage Cloud Service. See Uploading Image Files to Oracle Storage Cloud Service.