Go to main content

Customizing Automated Installations With Manifests and Profiles

Exit Print View

Updated: November 2020
 
 

Templates for System Configuration Profiles

These files are in /usr/share/auto_install/sc_profiles on any Oracle Solaris system. Each of the files also contains instructions on settings that you must manually specify to make the files applicable during installation.


Caution  -  The contents displayed in this appendix are extracts to show only the important property settings. They do not constitute valid XML files.


The following profiles are covered:

sc_sample.xml

The profile creates a user account, root password, keyboard mapping and timezone settings, and an IPv4 DHCP configuration.


Note -  Other templates contain the same configuration settings as found in sc_sample.xml, but would have additional parameters as well. This appendix does not show the duplicated sc_sample settings in those templates.
<service_bundle type="profile" name="system configuration">
    <service name="system/config-user" version="1">
      <instance name="default" enabled="true">
        <property_group name="user_account">
          <propval name="login" value="jack"/>
          <propval name="password" value="9Nd/cwBcNWFZg"/>
          <propval name="description" value="default_user"/>
          <propval name="shell" value="/usr/bin/bash"/>
          <propval name="gid" value="10"/>
          <propval name="uid" value="101"/>
          <propval name="type" value="normal"/>
          <propval name="roles" value="root"/>
          <propval name="profiles" value="System Administrator"/>
        </property_group>
        <property_group name="root_account">
            <propval name="password" 
               value="$5$dnRfcZse$Hx4aBQ161Uvn9ZxJFKMdRiy8tCf4gMT2s2rtkFba2y4"/>
            <propval name="type" value="role"/>
        </property_group>
      </instance>
    </service>

    <service version="1" name="system/identity">
      <instance enabled="true" name="node">
        <property_group name="config">
           <propval name="nodename" value="solaris"/>
        </property_group>
      </instance>
    </service>

    <service name="system/console-login" version="1">
      <instance name="default" enabled="true">
        <property_group name="ttymon">
          <propval name="terminal_type" value="sun"/>
        </property_group>
      </instance>
    </service>

    <service name="system/keymap" version="1">
      <instance name="default" enabled="true">
        <property_group name="keymap">
          <propval name="layout" value="US-English"/>
        </property_group>
      </instance>
    </service>

    <service name="system/timezone" version="1">
      <instance name="default" enabled="true">
        <property_group name="timezone">
          <propval name="localtime" value="UTC"/>
        </property_group>
      </instance>
    </service>

    <service name="system/environment" version="1">
      <instance name="init" enabled="true">
        <property_group name="environment">
          <propval name="LANG" value="en_US.UTF-8"/>
        </property_group>
      </instance>
    </service>

    <service name="network/ip-interface-management" version="1" type="service">
      <instance name="default" enabled="true">
	<property_group name="interfaces" type="application">

	  <!-- interface configuration -->
	  <property_group name="{{AI_NETLINK_VANITY}}" type="interface-ip">
            <property name="address-family" type="astring">
              <astring_list>
		<value_node value="ipv4"/>
		<value_node value="ipv6"/>
              </astring_list>
            </property>

	    <!-- IPv4 DHCP address -->
            <property_group name="v4" type="address-dhcp"/>
	  </property_group>

	</property_group>
      </instance>
    </service>
</service_bundle>

custom_network.xml

The profile customizes data link names for network configuration.

<service_bundle type="profile" name="system configuration">
    <service name="network/datalink-management" type="service" version="1">
      <instance name="default" enabled="true">
	<property_group name="datalinks" type="application">

	  <!--
	      customize datalink names for ixgbe0/1 to "corporate0"/"lab0", set
	      lab0 mtu to 9000
	  -->
	  <property_group name="corporate0" type="datalink-phys">
            <propval name='devname' type='astring' value='ixgbe0'/>
	  </property_group>
	  <property_group name="lab0" type="datalink-phys">
            <propval name='devname' type='astring' value='ixgbe1'/>
            <propval name='mtu' type='count' value='9000'/>
	  </property_group>

	</property_group>
      </instance>
    </service>
</service_bundle>

enable_sci.xml

The profile launches the SCI tool after first boot for an interactive configuration.

<service_bundle type="profile" name="enable_SCI_tool">
    <service name="milestone/config" version="1" type="service">
        <instance name="default" enabled="true">
            <property_group name="sysconfig" type="sysconfig">
                <propval name="configure" value="true" type="boolean"/>
                <propval name="interactive_config" value="true" type="boolean"/>
                <propval name="config_groups" value="system" type="astring"/>
            </property_group>
        </instance>
    </service>
</service_bundle>

ib_network.xml

The profile creates an InfiniBand network configuration.

<service_bundle type="profile" name="system configuration">
  <service name='network/datalink-management' type='service' version='0'>
    <instance name='default' enabled='true'>
      <property_group name='datalinks' type='application'>
        <property_group name='part1' type='datalink-part'>
          <propval name='linkover' type='astring' value='net1'/>
          <propval name='media' type='astring' value='Infiniband'/>
          <propval name='pkey' type='astring' value='0xFFFF'/>
        </property_group>
      </property_group>
    </instance>
  </service>
  <service name='network/ip-interface-management' type='service' version='0'>
      <instance name='default' enabled='true'>
        <property_group name='interfaces' type='application'>
          <property_group name='part1' type='interface-ip'>
            <property_group name='v4' type='address-static'>
              <propval name='ipv4-address' type='astring' value='x.x.x.x'/>
              <propval name='prefixlen' type='count' value='x'/>
              <propval name='up' type='astring' value='yes'/>
            </property_group>
            <propval name='address-family' type='astring' value='ipv4'/>
          </property_group>
        </property_group>
        <property_group name='static-routes' type='application'>
          <property_group name='route-1' type='static-route'>
            <propval name='destination' type='astring' value='default'/>
            <propval name='family' type='astring' value='inet'/>
            <propval name='gateway' type='astring' value='x.x.x.x'/>
            <propval name='isgateway' type='boolean' value='true'/>
          </property_group>
        </property_group>
      </instance>
    </service>
    <service name="network/dns/client" version="1">
        <property_group name="config">
            <property name="nameserver">
                <net_address_list>
                    <value_node value="x.x.x.x"/>
                </net_address_list>
            </property>
            <property name="search">
                <astring_list>
                    <value_node value="example.com"/>
                </astring_list>
            </property>
        </property_group>
        <instance name="default" enabled="true"/>
    </service>

    <service version="1" name="system/name-service/switch">
        <property_group name="config">
            <propval name="default" value="files"/>
            <propval name="host" value="files dns mdns"/>
        </property_group>
        <instance enabled="true" name="default"/>
    </service>

    <service version="1" name="system/name-service/cache">
        <instance enabled="true" name="default"/>
    </service>
</service_bundle>

ipmp_network.xml

The profile creates an IPMP configuration over 2 IP interfaces.

<service_bundle type="profile" name="system configuration">

    <service name="network/ip-interface-management" version="1" type="service">
      <instance name="default" enabled="true">
	<property_group name="interfaces" type="application">

	  <!-- net1 interface configuration -->
          <property_group name="net1" type="interface-ip">
            <property name="address-family" type="astring">
              <astring_list>
		<value_node value="ipv4"/>
		<value_node value="ipv6"/>
              </astring_list>
            </property>
            <propval name="ipmp-interface" type="astring" value="ipmp1"/>
          </property_group>

	  <!-- net2 standby interface configuration -->
	  <property_group name="net2" type="interface-ip">
            <property name="address-family" type="astring">
              <astring_list>
		<value_node value="ipv4"/>
		<value_node value="ipv6"/>
              </astring_list>
            </property>
            <propval name="ipmp-interface" type="astring" value="ipmp1"/>
            <property_group name="ip" type="interface-protocol-ip">
              <propval name="standby" type="astring" value="on"/>
            </property_group>
	  </property_group>

	  <!-- IPMP interface configuration -->
	  <property_group name="ipmp1" type="interface-ipmp">
            <property name="address-family" type="astring">
              <astring_list>
		<value_node value="ipv4"/>
		<value_node value="ipv6"/>
              </astring_list>
            </property>
            <property name="under-interfaces" type="astring">
              <astring_list>
		<value_node value="net1"/>
		<value_node value="net2"/>
              </astring_list>
            </property>

	    <!-- IPv4 static address -->
            <property_group name="data1" type="address-static">
              <propval name="ipv4-address" type="astring" value="2.3.4.5"/>
	      <propval name="prefixlen" type="count" value="24"/>
              <propval name="up" type="astring" value="yes"/>
            </property_group>
	  </property_group>

	</property_group>
      </instance>
    </service>
</service_bundle>

static_network.xml

The profile configures the network with a static IPv4 address, a static route, and an addrconf address.

<service_bundle type="profile" name="system configuration">
  <service name="network/ip-interface-management" version="1" type="service">
    <instance name="default" enabled="true">
      <property_group name="interfaces" type="application">

	<!-- interface configuration -->
	<property_group name="{{AI_NETLINK_VANITY}}" type="interface-ip">
          <property name="address-family" type="astring">
            <astring_list>
	      <value_node value="ipv4"/>
	      <value_node value="ipv6"/>
            </astring_list>
          </property>

	  <!-- IPv4 static address -->
	  <property_group name="v4" type="address-static">
            <propval name="ipv4-address" type="astring" value="{{AI_IPV4}}"/>
            <propval name="prefixlen" type="count" value="{{AI_IPV4_PREFIXLEN}}"/>
            <propval name="up" type="astring" value="yes"/>
	  </property_group>

	  <!-- IPv6 addrconf address -->
          <property_group name="v6" type="address-addrconf">
            <propval name="interface-id" type="astring" value="::"/>
            <propval name="prefixlen" type="count" value="0"/>
            <propval name="stateful" type="astring" value="yes"/>
            <propval name="stateless" type="astring" value="yes"/>
          </property_group>

	  <!-- default static route through interface -->
          <property_group name="route-1" type="static-route">
            <propval name="destination" type="astring" value="default"/>
            <propval name="family" type="astring" value="inet"/>
            <propval name="gateway" type="astring" value="{{AI_ROUTER}}"/>
          </property_group>
	</property_group>

      </property_group>
    </instance>
  </service>

    <service name="network/dns/client" version="1">
        <property_group name="config">
            <property name="nameserver">
                <net_address_list>
                    <value_node value="x.x.x.x"/>
                </net_address_list>
            </property>
            <property name="search">
                <astring_list>
                    <value_node value="example.com"/>
                </astring_list>
            </property>
        </property_group>
        <instance name="default" enabled="true"/>
    </service>

    <service version="1" name="system/name-service/switch">
        <property_group name="config">
            <propval name="default" value="files"/>
            <propval name="host" value="files dns mdns"/>
        </property_group>
        <instance enabled="true" name="default"/>
    </service>

    <service version="1" name="system/name-service/cache">
        <instance enabled="true" name="default"/>
    </service>
</service_bundle>

vnic_network.xml

The profile creates a virtual network configuration with a VNIC, link aggregation, and flow settings.

<service_bundle type="profile" name="system configuration">
    <service name="network/datalink-management" version="1" type="service">
      <instance name="default" enabled="true">
	<property_group name="datalinks" type="application">

	  <!-- vnic configured over net0 -->
          <property_group name="vnic0" type="datalink-vnic">
            <propval name="linkover" type="astring" value="net0"/>
            <propval name="mac-address-type" type="astring" value="random"/>
            <propval name="media" type="astring" value="Ethernet"/>
            <propval name="vid" type="astring" value="0"/>
          </property_group>

	  <!-- aggregation of net1 and net2 -->
          <property_group name="aggr1" type="datalink-aggr">
            <propval name="aggr-mode" type="astring" value="trunk"/>
            <propval name="force" type="boolean" value="false"/>
            <propval name="key" type="count" value="0"/>
            <propval name="lacp-mode" type="astring" value="off"/>
            <propval name="lacp-timer" type="astring" value="short"/>
            <propval name="media" type="astring" value="Ethernet"/>
            <propval name="num-ports" type="count" value="2"/>
            <propval name="policy" type="astring" value="L4"/>
            <property name="ports" type="astring">
              <astring_list>
		<value_node value="net1"/>
		<value_node value="net2"/>
              </astring_list>
            </property>
          </property_group>
	</property_group>

	<property_group name="flows" type="application">

	  <!-- https flow over vnic0 for port 443 -->
          <property_group name="https1" type="flow">
            <propval name="linkover" type="astring" value="vnic0"/>
            <propval name="local-port" type="count" value="443"/>
            <propval name="max-bw" type="astring" value="500M"/>
            <propval name="transport" type="astring" value="tcp"/>
          </property_group>

	</property_group>
      </instance>
    </service>

    <service name="network/ip-interface-management" version="1"
	type="service">
      <instance name="default" enabled="true">
	<property_group name="interfaces" type="application">

	  <!-- configuration for vnic0 -->
	  <property_group name="vnic0" type="interface-ip">
            <property name="address-family" type="astring">
              <astring_list>
		<value_node value="ipv4"/>
		<value_node value="ipv6"/>
              </astring_list>
            </property>

	    <!-- IPv4 DHCP address -->
            <property_group name="v4" type="address-dhcp"/>

	    <!-- IPv6 addrconf address -->
            <property_group name="v6" type="address-addrconf">
              <propval name="interface-id" type="astring" value="::"/>
              <propval name="prefixlen" type="count" value="0"/>
              <propval name="stateful" type="astring" value="yes"/>
              <propval name="stateless" type="astring" value="yes"/>
            </property_group>
	  </property_group>

	</property_group>
      </instance>
    </service>
</service_bundle>

dns.xml

The profile creates a network/dns/client configuration.

<service_bundle type="profile" name="dns configuration">

    <service name="network/dns/client" version="1">
        <property_group name="config">
            <property name="nameserver">
                <net_address_list>
                    <value_node value="x.x.x.x"/>
                    <value_node value="x.x.x.x"/>
                </net_address_list>
            </property>
            <property name="search">
                <astring_list>
                    <value_node value="example.com"/>
                </astring_list>
            </property>
        </property_group>
        <instance name="default" enabled="true"/>
    </service>

    <service version="1" name="system/name-service/switch">
        <instance enabled="true" name="default"/>
        <property_group name="config">
            <propval name="default" value="files"/>
            <propval name="host" value="files dns mdns"/>
        </property_group>
    </service>

    <service version="1" name="system/name-service/cache">
        <instance enabled="true" name="default"/>
    </service>
</service_bundle>

unconfig.xml

The activates an unconfigure scenario.

<service_bundle type="profile" name="unconfig_profile"> 
    <service name="milestone/unconfig" version="1" type="service"> 
        <property_group name="sysconfig" type="application"> 
            <propval name="shutdown" type="boolean" value="false"/> 
            <propval name="destructive_unconfig" type="boolean" value="false"/> 
            <propval name="unconfig_groups" type="astring" value="system "/> 
            <propval name="unconfigure" type="boolean" value="true"/> 
        </property_group> 
    </service> 
</service_bundle>