# Configuration specification

Configuration file contains the following parameters:

> - cloud_management
> - power_managements
> - node_discover
> - services
> - containers

Each parameter specifies a driver or a list of drivers.

Example configuration:

    cloud_management:
      driver: devstack
      args:
        address: 192.168.1.240
        auth:
          username: ubuntu
          iface: enp0s3

    power_managements:
    - driver: libvirt
      args:
        connection_uri: qemu+ssh://ubuntu@10.0.1.50/system

    - driver: ipmi
      args:
        fqdn_to_bmc:
          node-1.domain.tld:
            address: 120.10.30.65
            username: alex
            password: super-secret

    node_discover:
      driver: node_list
      args:
      - fqdn: node-1.domain.tld
        ip: 192.168.1.240
        mac: 1e:24:c3:75:dd:2c

    services:
      glance-api:
        driver: screen
        args:
          grep: glance-api
          window_name: g-api
        hosts:
        - 192.168.1.240

    containers:
      neutron_api:
        driver: docker_container
        args:
          container_name: neutron_api

## cloud_management

This parameter specifies cloud management driver and its arguments. `cloud_management` is responsible for configuring connection to nodes and contains arguments such as SSH username/password/key/proxy.

    cloud_management:
      driver: devstack  # name of the driver
      args:             # arguments for the driver
        address: 192.168.1.240
        auth:
          username: ubuntu
          iface: enp0s3

Drivers can support discovering of cloud nodes. For example, `saltcloud` drives allow discovering information about nodes through master/config node of the cloud.

List of supported drivers for cloud_management: Cloud management

## power_managements

This parameter specifies list of power management drivers. Such drivers allow controlling power state of cloud nodes.

    power_managements:
    - driver: libvirt   # name of the driver
      args:             # arguments for the driver
        connection_uri: qemu+ssh://ubuntu@10.0.1.50/system

    - driver: ipmi      # name of the driver
      args:             # arguments for the driver
        fqdn_to_bmc:
          node-1.domain.tld:
            address: 120.10.30.65
            username: alex
            password: super-secret

List of supported drivers for power_managements: Power management

## node_discover

This parameter specifies node discover driver. `node_discover` is responsible for fetching list of hosts for the cloud. If `node_discover` is specified in configuration then `cloud_management` will only control connection options to the nodes.

    node_discover:
      driver: node_list
      args:
      - fqdn: node-1.domain.tld
        ip: 192.168.1.240
        mac: 1e:24:c3:75:dd:2c

List of supported drivers for node_discover: Node discover

## services

This parameter specifies list of services and their types. This parameter allows updating/adding services which are embedded in `cloud_management` driver.

    services:
      glance-api:            # name of the service
        driver: screen       # name of the service driver
        args:                # arguments for the driver
          grep: glance-api
          window_name: g-api
        hosts:               # list of hosts where this service running
        - 192.168.1.240
      mysql:                 # name of the service
        driver: process      # name of the service driver
        args:                # arguments for the driver
          grep: mysqld
          port:
          - tcp
          - 3307
          restart_cmd: sudo service mysql restart
          start_cmd: sudo service mysql start
          terminate_cmd: sudo service mysql stop

Service driver contains optional `hosts` parameter which controls discovering of hosts where the service is running. If `hosts` specified, then service discovering is disabled for this service and hosts specified in `hosts` will be used, otherwise, service will be searched across all nodes.

List of supported drivers for services: Service drivers

## containers

This parameter specifies list of containers and their types. This parameter allows updating/adding containers which are embedded in `cloud_management` driver.

    containers:
      neutron_api:                     # name of the container
        driver: docker_container       # name of the container driver
        args:                          # arguments for the driver
          container_name: neutron_api
        hosts:                         # list of hosts where this container running
        - 192.168.1.240

Container driver contains optional `hosts` parameter which controls discovering of hosts where the container is running. If `hosts` specified, then container discovering is disabled for this container and hosts specified in `hosts` will be used, otherwise, container will be searched across all nodes.

List of supported drivers for containers: Container drivers