# salt.states.smartos

Management of SmartOS Standalone Compute Nodes

maintainer:

  Jorge Schrauwen <sjorge@blackdot.be>

maturity:

  new

depends:

  vmadm, imgadm

platform:

  smartos

Added in version 2016.3.0.

    vmtest.example.org:
      smartos.vm_present:
        - config:
            reprovision: true
        - vmconfig:
            image_uuid: c02a2044-c1bd-11e4-bd8c-dfc1db8b0182
            brand: joyent
            alias: vmtest
            quota: 5
            max_physical_memory: 512
            tags:
              label: 'test vm'
              owner: 'sjorge'
            nics:
              "82:1b:8e:49:e9:12":
                nic_tag: trunk
                mtu: 1500
                ips:
                  - 172.16.1.123/16
                  - 192.168.2.123/24
                vlan_id: 10
              "82:1b:8e:49:e9:13":
                nic_tag: trunk
                mtu: 1500
                ips:
                  - dhcp
                vlan_id: 30
            filesystems:
              "/bigdata":
                source: "/bulk/data"
                type: lofs
                options:
                  - ro
                  - nodevices

    kvmtest.example.org:
      smartos.vm_present:
        - vmconfig:
            brand: kvm
            alias: kvmtest
            cpu_type: host
            ram: 512
            vnc_port: 9
            tags:
              label: 'test kvm'
              owner: 'sjorge'
            disks:
              disk0:
                size: 2048
                model: virtio
                compression: lz4
                boot: true
            nics:
              "82:1b:8e:49:e9:15":
                nic_tag: trunk
                mtu: 1500
                ips:
                  - dhcp
                vlan_id: 30

    docker.example.org:
      smartos.vm_present:
        - config:
            auto_import: true
            reprovision: true
        - vmconfig:
            image_uuid: emby/embyserver:latest
            brand: lx
            alias: mydockervm
            quota: 5
            max_physical_memory: 1024
            tags:
              label: 'my emby docker'
              owner: 'sjorge'
            resolvers:
              - 172.16.1.1
            nics:
              "82:1b:8e:49:e9:18":
                nic_tag: trunk
                mtu: 1500
                ips:
                  - 172.16.1.118/24
                vlan_id: 10
            filesystems:
              "/config:
                source: "/vmdata/emby_config"
                type: lofs
                options:
                  - nodevices

    cleanup_images:
      smartos.image_vacuum

Note

Keep in mind that when removing properties from vmconfig they will not get removed from the vm's current configuration, except for nics, disk, tags, ... they get removed via add_*, set_*, update_*, and remove_*. Properties must be manually reset to their default value. The same behavior as when using 'vmadm update'.

Warning

For HVM (bhyve and KVM) brands the image_uuid field should go on the boot disks, this disk should NOT have a size specified. (See man vmadm)

salt.states.smartos.config_absent(name)

  Ensure configuration property is absent in /usbkey/config

  namestring

    name of property

salt.states.smartos.config_present(name, value)

  Ensure configuration property is set to value in /usbkey/config

  namestring

    name of property

  valuestring

    value of property

salt.states.smartos.image_absent(name)

  Ensure image is absent on the computenode

  namestring

    uuid of image

  Note

  computenode.image_absent will only remove the image if it is not used by a vm.

salt.states.smartos.image_present(name)

  Ensure image is present on the computenode

  namestring

    uuid of image

salt.states.smartos.image_vacuum(name)

  Delete images not in use or installed via image_present

  Warning

  Only image_present states that are included via the top file will be detected.

salt.states.smartos.source_absent(name)

  Ensure an image source is absent on the computenode

  namestring

    source url

salt.states.smartos.source_present(name, source_type='imgapi')

  Ensure an image source is present on the computenode

  namestring

    source url

  source_typestring

    source type (imgapi or docker)

salt.states.smartos.vm_absent(name, archive=False)

  Ensure vm is absent on the computenode

  namestring

    hostname of vm

  archiveboolean

    toggle archiving of vm on removal

  Note

  State ID is used as hostname. Hostnames must be unique.

salt.states.smartos.vm_present(name, vmconfig, config=None)

  Ensure vm is present on the computenode

  namestring

    hostname of vm

  vmconfigdict

    options to set for the vm

  configdict

    fine grain control over vm_present

  Note

  The following configuration properties can be toggled in the config parameter.

    - kvm_reboot (true) - reboots of kvm zones if needed for a config update

    - auto_import (false) - automatic importing of missing images

    - auto_lx_vars (true) - copy kernel_version and docker:* variables from image

    - reprovision (false) - reprovision on image_uuid changes

    - enforce_tags (true) - false = add tags only, true = add, update, and remove tags

    - enforce_routes (true) - false = add tags only, true = add, update, and remove routes

    - enforce_internal_metadata (true) - false = add metadata only, true = add, update, and remove metadata

    - enforce_customer_metadata (true) - false = add metadata only, true = add, update, and remove metadata

  Note

  State ID is used as hostname. Hostnames must be unique.

  Note

  If hostname is provided in vmconfig this will take president over the State ID. This allows multiple states to be applied to the same vm.

  Note

  The following instances should have a unique ID.

    - nic : mac

    - filesystem: target

    - disk : path or diskN for zvols

  e.g. disk0 will be the first disk added, disk1 the 2nd,...

  Changed in version 2019.2.0: Added support for docker image uuids, added auto_lx_vars configuration, documented some missing configuration options.

salt.states.smartos.vm_running(name)

  Ensure vm is in the running state on the computenode

  namestring

    hostname of vm

  Note

  State ID is used as hostname. Hostnames must be unique.

salt.states.smartos.vm_stopped(name)

  Ensure vm is in the stopped state on the computenode

  namestring

    hostname of vm

  Note

  State ID is used as hostname. Hostnames must be unique.