Metalsmith Deployment¶
This role deploys instances using metalsmith CLI.
Variables¶
The only required variable is:
- metalsmith_instances
- list of instances to provision, see Instance for instance description. 
The following optional variables provide the defaults for Instance attributes:
- metalsmith_candidates
- the default for - candidates.
- metalsmith_capabilities
- the default for - capabilities.
- metalsmith_conductor_group
- the default for - conductor_group.
- metalsmith_extra_args
- the default for - extra_args.
- metalsmith_image
- the default for - image.
- metalsmith_image_checksum
- the default for - image_checksum.
- metalsmith_image_kernel
- the default for - image_kernel.
- metalsmith_image_ramdisk
- the default for - image_ramdisk.
- metalsmith_netboot
- the default for - netboot
- metalsmith_nics
- the default for - nics.
- metalsmith_resource_class
- the default for - resource_class.
- metalsmith_root_size
- the default for - root_size.
- metalsmith_ssh_public_keys
- the default for - ssh_public_keys.
- metalsmith_swap_size
- the default for - swap_size.
- metalsmith_traits
- the default for - traits.
- metalsmith_user_name
- the default for - user_name, the default value is- metalsmith.
Instance¶
Each instances has the following attributes:
- candidates(defaults to- metalsmith_candidates)
- list of nodes (UUIDs or names) to be considered for deployment. 
- capabilities(defaults to- metalsmith_capabilities)
- node capabilities to request when scheduling. 
- conductor_group(defaults to- metalsmith_conductor_group)
- conductor group to pick nodes from. - Note - Currently it’s not possible to specify the default group. 
- extra_args(defaults to- metalsmith_extra_args)
- additional arguments to pass to the - metalsmithCLI on all calls.
- image(defaults to- metalsmith_image)
- UUID, name or HTTP(s) URL of the image to use for deployment. Mandatory. 
- image_checksum(defaults to- metalsmith_image_checksum)
- MD5 checksum or checksum file URL for an HTTP(s) image. 
- image_kernel(defaults to- metalsmith_image_kernel)
- URL of the kernel image if and only if the - imageis a URL of a partition image.
- image_ramdisk(defaults to- metalsmith_image_ramdisk)
- URL of the ramdisk image if and only if the - imageis a URL of a partition image.
- netboot
- whether to boot the deployed instance from network (PXE, iPXE, etc). The default is to use local boot (requires a bootloader on the image). 
- nics(defaults to- metalsmith_nics)
- list of virtual NICs to attach to node’s physical NICs. Each is an object with exactly one attribute: - network
- creates a port on the given network, for example: - nics: - network: private - network: ctlplane - can optionally take a fixed IP to assign: - nics: - network: private fixed_ip: 10.0.0.2 - network: ctlplane fixed_ip: 192.168.42.30 
- port
- uses the provided pre-created port: - nics: - port: b2254316-7867-4615-9fb7-911b3f38ca2a 
- subnet
- creates a port on the given subnet, for example: - nics: - subnet: private-subnet1 
 
- resource_class(defaults to- metalsmith_resource_class)
- requested node’s resource class. Mandatory. 
- root_size(defaults to- metalsmith_root_size)
- size of the root partition (in GiB), if partition images are used. - Note - Also required for whole-disk images due to how the Bare Metal service currently works. 
- ssh_public_keys(defaults to- metalsmith_ssh_public_keys)
- list of file names with SSH public keys to put to the node. 
- swap_size(defaults to- metalsmith_swap_size)
- size of the swap partition (in MiB), if partition images are used (it’s an error to set it for a whole disk image). 
- traits
- list of traits the node should have. 
- user_name(defaults to- metalsmith_user_name)
- name of the user to create on the instance via configdrive. Requires cloud-init on the image. 
Example¶
---
- hosts: all
  tasks:
    - include_role:
        name: metalsmith_deployment
      vars:
        metalsmith_image: centos7
        metalsmith_nics:
          - network: ctlplane
        metalsmith_ssh_public_keys:
          - /home/user/.ssh/id_rsa.pub
        metalsmith_instances:
          - hostname: compute-0
            resource_class: compute
            root_size: 100
            swap_size: 4096
            capabilities:
              boot_mode: uefi
            traits:
              - CUSTOM_GPU
          - hostname: compute-1
            resource_class: compute
            root_size: 100
            swap_size: 4096
            capabilities:
              boot_mode: uefi
            user_name: heat-admin
          - hostname: compute-2
            resource_class: compute
            candidates:
              - e63650f2-4e7d-40b2-8932-f5b0e54698c7
              - f19d00dd-60e1-46c8-b83c-782b4d291d9e
          - hostname: control-0
            resource_class: control
            capabilities:
              boot_mode: uefi
            nics:
              - network: ctlplane
              - port: 1899af15-149d-47dc-b0dc-a68614eeb5c4
          - hostname: custom-partition-image
            resource_class: custom
            image: https://example.com/images/custom-1.0.root.img
            image_kernel: https://example.com/images/custom-1.0.vmlinuz
            image_ramdisk: https://example.com/images/custom-1.0.initrd
            image_checksum: https://example.com/images/MD5SUMS
          - hostname: custom-whole-disk-image
            resource_class: custom
            image: https://example.com/images/custom-1.0.qcow2
            image_checksum: https://example.com/images/MD5SUMS
