salt.states.zone

Management of Solaris Zones

maintainer

Jorge Schrauwen <sjorge@blackdot.be>

maturity

new

depends

salt.modules.zoneadm, salt.modules.zonecfg

platform

solaris

New in version 2017.7.0.

Below are some examples of how to use this state. Lets start with creating a zone and installing it.

omipkg1_configuration:
  zone.present:
    - name: omipkg1
    - brand: ipkg
    - zonepath: /zones/omipkg1
    - properties:
      - autoboot: true
      - ip-type: exclusive
      - cpu-shares: 50
    - resources:
      - attr:
        - name: owner
        - value: Jorge Schrauwen
        - type: string
      - attr:
        - name: description
        - value: OmniOS ipkg zone for testing
        - type: string
      - capped-memory:
        - physical: 64M
omipkg1_installation:
  zone.installed:
    - name: omipkg1
    - require:
        - zone: omipkg1_configuration
omipkg1_running:
  zone.booted:
    - name: omipkg1
    - require:
        - zone: omipkg1_installation

A zone without network access is not very useful. We could update the zone.present state in the example above to add a network interface or we could use a separate state for this.

omipkg1_network:
  zone.resource_present:
    - name: omipkg1
    - resource_type: net
    - resource_selector_property: mac-addr
    - resource_selector_value: "02:08:20:a2:a3:10"
    - physical: znic1
    - require:
        - zone: omipkg1_configuration

Since this is a single tenant system having the owner attribute is pointless. Let's remove that attribute.

Note

The following state run the omipkg1_configuration state will add it again! If the entire configuration is managed it would be better to add resource_prune and optionally the resource_selector_property properties to the resource.

omipkg1_strip_owner:
  zone.resource_present:
    - name: omipkg1
    - resource_type: attr
    - resource_selector_property: name
    - resource_selector_value: owner
    - require:
        - zone: omipkg1_configuration

Let's bump the zone's CPU shares a bit.

Note

The following state run the omipkg1_configuration state will set it to 50 again. Update the entire zone configuration is managed you should update it there instead.

omipkg1_more_cpu:
  zone.property_present:
    - name: omipkg1
    - property: cpu-shares
    - value: 100

Or we can remove the limit altogether!

Note

The following state run the omipkg1_configuration state will set it to 50 again. Update the entire zone configuration is managed you should set the property to None (nothing after the :) instead.

omipkg1_no_cpu:
  zone.property_absent:
    - name: omipkg1
    - property: cpu-shares
salt.states.zone.absent(name, uninstall=False)

Ensure a zone is absent

namestring

name of the zone

uninstallboolean

when true, uninstall instead of detaching the zone first.

salt.states.zone.attached(name, force=False)

Ensure zone is attached

namestring

name of the zone

forceboolean

force attach the zone

salt.states.zone.booted(name, single=False)

Ensure zone is booted

namestring

name of the zone

singleboolean

boot in single usermode

salt.states.zone.detached(name)

Ensure zone is detached

namestring

name of the zone

salt.states.zone.export(name, path, replace=False)

Export a zones configuration

namestring

name of the zone

pathstring

path of file to export too.

replaceboolean

replace the file if it exists

salt.states.zone.halted(name, graceful=True)

Ensure zone is halted

namestring

name of the zone

gracefulboolean

use shutdown instead of halt if true

salt.states.zone.import_(name, path, mode='import', nodataset=False, brand_opts=None)

Import a zones configuration

namestring

name of the zone

pathstring

path of the configuration file to import

modestring

either import, install, or attach

nodatasetboolean

do not create a ZFS file system

brand_optsboolean

brand specific options to pass

Note

The mode argument can be set to import, install, or attach. import: will only import the configuration install: will import and then try to install the zone attach: will import and then try to attach of the zone

omipkg1:
  zone.import:
    - path: /foo/bar/baz
salt.states.zone.installed(name, nodataset=False, brand_opts=None)

Ensure zone is installed

namestring

name of the zone

nodatasetboolean

do not create a ZFS file system

brand_optsboolean

brand specific options to pass

salt.states.zone.present(name, brand, zonepath, properties=None, resources=None)

Ensure a zone with certain properties and resources

namestring

name of the zone

brandstring

brand of the zone

zonepathstring

path of the zone

propertieslist of key-value pairs

dict of properties

resourceslist of key-value pairs

dict of resources

Note

If the zone does not exist it will not be installed. You can use the `zone.installed` state for this.

Note

Default resource selectors:
  • fs: dir

  • net: mac-addr

  • device: match

  • rctl: name

  • attr: name

  • dataset: name

  • admin: user

Warning

Properties and resource will not be removed when they are absent from the state!

For properties, simple set them to `None`.

For resources, add the `resource_prune` property and set it to `True`. Also specify the `resource_selector_property` if the default is not the one you want.

salt.states.zone.property_absent(name, property)

Ensure property is absent

namestring

name of the zone

propertystring

name of property

Note

This does a zoneacfg clear call. So the property may be reset to a default value! Does has the side effect of always having to be called.

salt.states.zone.property_present(name, property, value)

Ensure property has a certain value

namestring

name of the zone

propertystring

name of property

valuestring

value of property

salt.states.zone.resource_absent(name, resource_type, resource_selector_property, resource_selector_value)

Ensure resource is absent

namestring

name of the zone

resource_typestring

type of resource

resource_selector_propertystring

unique resource identifier

resource_selector_valuestring

value for resource selection

Warning

Both resource_selector_property and resource_selector_value must be provided, some properties like `name` are already reserved by salt in there states.

Note

You can set both resource_selector_property and resource_selector_value to None for resources that do not require them.

salt.states.zone.resource_present(name, resource_type, resource_selector_property, resource_selector_value, **kwargs)

Ensure resource exists with provided properties

namestring

name of the zone

resource_typestring

type of resource

resource_selector_propertystring

unique resource identifier

resource_selector_valuestring

value for resource selection

kwargsstring|int|...

resource properties

Warning

Both resource_selector_property and resource_selector_value must be provided, some properties like name are already reserved by salt in states.

Note

You can set both resource_selector_property and resource_selector_value to None for resources that do not require them.

salt.states.zone.uninstalled(name)

Ensure zone is uninstalled

namestring

name of the zone