Go to main content

Customizing Automated Installations With Manifests and Profiles

Exit Print View

Updated: November 2020
 
 

Examples of AI Manifests

The examples in this section show the XML elements that the finished AI manifest must have to achieve the stated result. These manifests can be created either by editing the XML directly or by using a derived manifests script.


Caution  -  The entire package constrains system package versions to the same build, so it must be included in each manifest. Proper system updates and correct package selection depend on the presence of this package. Do not remove the installation of this package from your AI manifest, and do not uninstall this package after installation. Removing this package will result in an unsupported system.


Specifying an iSCSI Target Device

In this example, the target for the installation is an iSCSI device. The whole_disk attribute of the disk element is set to true, which is typical for iSCSI disks. See the ai_manifest(5) man page for descriptions of the target_name, target_lun, and target_ip attributes.

<auto_install>
  <ai_instance name="default">
    <target>
      <disk whole_disk="true">
        <iscsi target_name="iqn.1986-03.com.sun:02:1234567890abcdef"
               target_lun="1" target_ip="129.158.144.200"/>
      </disk>
      <logical>
        <zpool name="rpool" is_root="true">
          <filesystem name="export" mountpoint="/export"/>
          <filesystem name="export/home"/>
          <be name="solaris"/>
        </zpool>
      </logical>
    </target>
    <software type="IPS">
      <source>
        <publisher name="solaris">
          <origin name="http://pkg.oracle.com/solaris/release"/>
        </publisher>
      </source>
      <software_data action="install">
        <name>pkg:/entire@0.5.11-0.175.2</name>
        <name>pkg:/group/system/solaris-large-server</name>
      </software_data>
    </software>
  </ai_instance>
</auto_install>

Specifying a Root Pool and Boot Pool in an AI Manifest

The following sample AI manifest defines an iSCSI device as the root pool, and configures the boot pool to be named mybpool. The default name for a boot pool is bpool. Because no disk devices are included with the boot pool description, the dedicated eUSB disks will be used by default.

<auto_install>
  <ai_instance name="default">
    <target>
      <disk in_zpool="rpool" whole_disk="true">
        <iscsi target_port="326" target_ip="6.6.6.53"\
               target_lun="1">
      </disk>
      <logical>
        <zpool name="rpool" is_root="true">
          <filesystem name="export" mountpoint="/export"/>
          <filesystem name="export/home"/>
          <be name="solaris"/>
        </zpool>
        <zpool name="mybpool" is_boot="true">
      </logical>
    </target>
    <software type="IPS">
      <source>
        <publisher name="solaris">
          <origin name="http://pkg.oracle.com/solaris/release"/>
        </publisher>
      </source>
      <software_data action="install">
        <name>pkg:/entire@0.5.11-0.175.2</name>
        <name>pkg:/group/system/solaris-large-server</name>
      </software_data>
    </software>
  </ai_instance>
</auto_install>

To create a mirrored configuration, specify multiple disks for the root pool. In this case, all root disks are automatically partitioned the same way, with a partition from each disk used to create a mirrored boot pool.

Specifying a RAID Configuration

This example specifies a RAID configuration using the two disks c0t0d0 and c0t1d0. This manifest is similar to the manifest for a mirrored configuration as shown in Specifying a Mirrored Configuration If at Least Two Disks of a Specified Size Are Present. One difference between the two manifests is that the value of the redundancy attribute is raidz instead of mirror. See the zpool(8) man page for information about redundancy types. Another difference is that the ZFS pool is not named rpool, because rpool implies the root pool. By default, the value of the is_root attribute of the zpool element is false, so that assignment could be omitted in this example. Because no root pool is specified, do not configure an initial user for this installation.

<auto_install>
  <ai_instance name="default">
    <target>
      <disk in_vdev="raid_vdev" in_zpool="raidpool" whole_disk="true">
        <disk_name name="c0t0d0" name_type="ctd"/>
      </disk>
      <disk in_vdev="raid_vdev" in_zpool="raidpool" whole_disk="true">
        <disk_name name="c0t1d0" name_type="ctd"/>
      </disk>
      <logical>
        <zpool name="raidpool" is_root="false">
          <vdev name="raid_vdev" redundancy="raidz"/>
        </zpool>
      </logical>
    </target>
    <software type="IPS">
      <source>
        <publisher name="solaris">
          <origin name="http://pkg.oracle.com/solaris/release"/>
        </publisher>
      </source>
      <software_data action="install">
        <name>pkg:/entire@0.5.11-0.175.2</name>
        <name>pkg:/group/system/solaris-large-server</name>
      </software_data>
    </software>
  </ai_instance>
</auto_install>

Installing an SVR4 Package

This example demonstrates how to install a SVR4 package. SVR4 packages must be named in a software element of type SVR4. The value of the name attribute of the origin of the publisher is a directory that contains SVR4 package subdirectories or a SVR4 package datastream file. This origin name for SVR4 package subdirectories can be a full file directory path or a file URI. This origin name for a SVR4 package datastream file can be a full file directory path, a file URI, or an HTTP URI.

Do not install packages that require user input as part of their installation.

<auto_install>
  <ai_instance name="default">
    <target>
      <logical>
        <zpool name="rpool" is_root="true">
          <filesystem name="export" mountpoint="/export"/>
          <filesystem name="export/home"/>
          <be name="solaris"/>
        </zpool>
      </logical>
    </target>
    <software type="IPS">
      <source>
        <publisher name="solaris">
          <origin name="http://pkg.oracle.com/solaris/release"/>
        </publisher>
      </source>
      <software_data action="install">
        <name>pkg:/entire@0.5.11-0.175.2</name>
        <name>pkg:/group/system/solaris-large-server</name>
      </software_data>
    </software>
    <software type="SVR4">
      <source>
        <publisher>
          <origin name="/net/host2/usr/dist"/>
        </publisher>
      </source>
      <software_data>
        <name>SUNWpackage</name>
      </software_data>
    </software>
  </ai_instance>
</auto_install>

Installing Multiple SVR4 Packages

To install multiple SVR4 packages, you will need to specify the software tag for each package as shown below.

<software type="SVR4">
  <source> 
    <publisher>
      <origin name="/net/192.0.2.2/svr4/app1.pkg"/>
    </publisher>
  </source>
  <software_data> 
    <name>application1</name>
  </software_data>
</software>  
<software type="SVR4">
  <source> 
    <publisher>
      <origin name="/net/192.0.2.2/svr4/app2.pkg"/>
    </publisher>
  </source>
  <software_data> 
    <name>application2</name>
  </software_data>
</software>  

  

Reusing Existing Disk Slices or Partitions

This sample shows how to specify to use existing disk slices for a SPARC client. For disk slices, the dimensions (start_sector and size) from an existing slice are reused. The configuration process will not search the slices to see if there is already a version of Solaris installed.

    <disk>
      <disk_name name="c1t0d0" name_type="ctd"/>
      <slice name="0" action="use_existing" force="true" in_zpool="rpool">
    </disk>
  

The following example shows how to specify for an x86 client that an existing partition on a disk should be reused during the AI process. For partitions, the existing dimensions for the named slice should be reused. In this case which partition is reused is automatically determined during the configuration process.

    <partition action="use_existing_solaris2">
        <slice action="use_existing" name="0" force="true"/>
    </partition>  
  

Accessing a Unified Archive Using SSL Client Authentication

To access a unified archive using SSL, include a credentials element, to provide key, certificate, and CA certificate information in the AI manifest. In this example, the unified archive is called sslarchive.ua.

<software type="ARCHIVE">
   <source>
       <file uri="https://example.com/sslarchive.ua"/>
           <credentials>
               <key src="file://root/key.pem"/>
               <cert src="file://root/cert.pem"/>
               <cacert src="file://root/cacert.pem"/>
           </credentials>
       </file>
   </source>
</software>

See Overview of Securing Automated Installations in Automatically Installing Oracle Solaris 11.4 Systems for information about setting up SSL on your AI server.

Accessing a Unified Archive Using Http Authentication Tokens

To use an HTTP authentication token when accessing a unified archive, add the token to a credentials element. Also, add a line defining the unified archive.

<software type="ARCHIVE">
    <source>
        <file uri="http://example.com/httparchive.ua"/>
            <credentials>
                <http_auth_token>my-specifically-granted-auth-token</http_auth_token>
            </credentials>
        </file>
    </source>
</software>

Accessing a Secure IPS Repository

In order to access a secure IPS repository, you must specify the key and certificate for the repository.

    <publisher name="solaris">
        <origin name="https://pkg.oracle.com/solaris/support/"/>
        <credentials>
            <key src="/var/pkg/ssl/Oracle_Solaris_11_Support.key.pem" />
            <cert src="/var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem" />
        </credentials>
    </publisher> 

Changing the Locale When Installing the solaris-minimal-server Package

If you install solaris-minimal-server group, only the C/POSIX locale is installed on the system. If you use any of the UTF-8 locales, you need to install the system/locale package and customize IPS facet.locale attribute setting as needed. If you do not set facet.locale.* to false all of the available UTF-8 locales will be installed. For example, if your system's default locale is set to en_US.UTF-8 in the system configuration profile, you should add these lines to the manifest to add the en_US locale:

    <software type="IPS">
      <destination>
        <image>
          <!-- Unset all locales -->
          <facet set="false">facet.locale.*</facet>
          <!-- Specify locales to install -->
          <facet set="true">facet.locale.en</facet>
          <facet set="true">facet.locale.en_US</facet>
        </image>
      </destination>
  ...
      <software_data action="install">
         <name>pkg:/entire@5.12-5.12.0</name>
         <name>pkg:/group/system/solaris-minimal-server</name>
         <name>pkg:/system/locale</name>  
      </software_data>
    </software>

Not Installing the Man Page Package with the solaris-minimal-server Package

Even though the solaris-minimal-server group does not include the man command, by default it includes man pages. To prevent the installation of the man pages, you need to set the doc.man facet to false as shown:

    <software type="IPS">
      <destination>
        <image>
          <!-- Specify that man pages should not be installed -->
          <facet set="false">doc.man</facet>
        </image>
      </destination>
  ...
      <software_data action="install">
         <name>pkg:/entire@5.12-5.12.0</name>
         <name>pkg:/group/system/solaris-minimal-server</name>
         <name>pkg:/system/locale</name>  
      </software_data>
    </software>

Adding a Specific Package when Installing a Package Group

Even though the solaris-minimal-server group does not include the man command, by default it includes man pages. To add the man command to the system during installation, you need to include the /text/doctools package as show below:

    <software type="IPS">
  ...
      <software_data action="install">
         <name>pkg:/entire@5.12-5.12.0</name>
         <name>pkg:/group/system/solaris-minimal-server</name>
         <name>pkg:/text/doctools</name>
      </software_data>
    </software>