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

Docs for previous releases are available on readthedocs.org.

Latest Salt release: 3004

Previous topic

salt.states.zk_concurrency

Next topic

salt.states.zookeeper