Manifest file reference

This resource aims to provide a definitive structure of a deployment manifest file will all its supported keys.

Note: For a conceptual overview of manifests see Deployment manifest.

core:
  config:
    # Use local network proxy to access external resources
    proxy:
      proxy_required: [true,false]
      # Proxy variables to use if 'true' is chosen above
      http_proxy: <url>:<port>
      https_proxy: <url>:<port>
      no_proxy: <host>,<host>,...

    bootstrap:
      # Management networks shared by hosts
      management_cidr: <cidr>,<cidr>,...
      # Example:
      # management_cidr: 192.168.29.0/24

    # Enter a region name (cannot be changed later)
    region: <region>
    # Example:
    # region: RegionOne

    addons:
      # MetalLB address allocation ranges
      metallb: <a.a.a.a-b.b.b.b>,<c,c,c,c-d.d.d.d>,...
      # Example:
      # metallb: 10.20.21.10-10.20.21.20

    k8s-addons:
      # Load balancer ranges
      loadbalancer: <cidr>,<cidr>,...

    user:
      # Populate OpenStack cloud with demo user, default images, flavors etc
      run_demo_setup: [true,false]
      # Username to use for access to OpenStack
      username: <username>
      # Password to use for access to OpenStack
      password: <password>
      # Network to use for initial project network
      cidr: <cidr>
      # Nameservers that guests should use for DNS resolution
      nameservers: <ip-address> <ip-address> ...
      # Enable ping and SSH access to instances
      security_group_rules: [true,false]
      # Local or remote access to VMs
      # Local mode - single node only
      remote_access_location: [local,remote]

    # External networking
    external_network:
      nic: <interface-name>
      # CIDR of OpenStack external network
      cidr: <cidr>
      # IP address of default gateway for external network
      gateway: <ip-address>
      # IP allocation range
      range: <ip-address-range>
      # Network type for access to external network
      network_type: [flat,vlan]
      # VLAN ID if 'vlan' is chosen above
      segmentation_id: <vlan-id>

    # MicroCeph
    microceph_config:
      # Disks to attach to MicroCeph nodes
      <node-hostname>:
        osd_devices: <device>,<device>,...
      # Examples:
      # sunbeam-1.localdomain:
      #   osd_devices: /dev/vdc,/dev/vdd
      # sunbeam-2.localdomain:
      #   osd_devices: /dev/vdc,/dev/vdd
      # sunbeam-3.localdomain:
      #   osd_devices: /dev/vdc,/dev/vdd

    # TLS
    certificates:
      <CSR x500UniqueIdentifier>:
        # Base64 encoded certificate for unit CSR Unique ID: subject
        certificate: <Base64 encoded certificate>

  software:

    juju:
      bootstrap_args:
      - <argument>
      - <argument>
      - ...
      # Examples:
      # - --debug
      # - --agent-version=3.2.4
      # - --model-default=test-mode=true
      # - --model-default=logging-config=<root>=INFO;unit=DEBUG

    charms:
      <charm>:
        channel: <channel>
        revision: <revision>
        config:
          <option>: <value>
          <option>: <value>
      ...
      ...
      # Examples:
      # keystone-k8s:
      #   channel: 2023.2/candidate
      # glance-k8s:
      #   channel: 2023.2/candidate
      #   revision: 66
      #   config:
      #     debug: true
      #     pool-type: replicated

      # Special cases

      # Configure mysql storage in single mysql scenario
      # mysql-k8s:
      #   storage:
      #     database: <value>

      # Configure mysql storage in multi mysql scenario
      # mysql-k8s:
      #   storage-map:
      #     keystone-k8s:
      #       database: <value>
      #     glance-k8s:
      #       database: <value>
      #     ...
    
      # Configure mysql configs in multi mysql scenario
      # mysql-k8s:
      #   config-map:
      #     keystone-k8s:
      #       <option>: <value>
      #     glance-k8s:
      #       <option>: <value>
      #     ...

      # Configure glance image repository for local storage
      # glance-k8s:
      #   storage:
      #     local-repository: <value>

    terraform:
      <plan>:
        source: <path-to-file>
      # Example:
      # hypervisor-plan:
      #   source: /home/ubuntu/deploy-openstack-hypervisor
features:
  loadbalancer:
    config:
      <option>: <value>
    software:
      charms:
        <charm>:
          channel: <channel>
          revision: <revision>
          config:
            <option>: <value>
            <option>: <value>
      ...
  ...

Two spaces missing in front of addons. addons key should be under deployment

Thank you. The change has been made.

on 2024.1/edge (not sure about older versions) nameservers must be space separated (comma fail in bootstrap)

I made the change.

@hemanth-n Can you confirm space-separated values for nameservers?

also missing gateway on Remote Access area
as exported manifest

  # # Remote Access
  # external_network:
  #   # CIDR of network to use for external networking
  #   cidr: 172.16.2.0/24
  #   # IP address of default gateway for external network
  #   gateway: 172.16.2.1
  #   # Start of IP allocation range for external network
  #   start: 172.16.2.10
  #   # End of IP allocation range for external network
  #   end: 172.16.2.254
  #   # Network type for access to external network
  #   network_type: vlan
  #   # VLAN ID to use for external network
  #   segmentation_id: 2

Updated with gateway key.

1 Like

yes, nameservers accepts space-separated values