Drivers

Cloud management

devstack [CloudManagement, NodeDiscover]

Devstack driver.

This driver requires devstack installed in screen mode (USE_SCREEN=True). Supports discovering of node MAC addreses.

Example configuration:

cloud_management:
  driver: devstack
  args:
    address: 192.168.1.10
    username: ubuntu
    password: ubuntu_pass
    private_key_file: ~/.ssh/id_rsa_devstack
    slaves:
    - 192.168.1.11
    - 192.168.1.12
    iface: eth1

parameters:

  • address - ip address of any devstack node
  • username - username for all nodes
  • password - password for all nodes (optional)
  • private_key_file - path to key file (optional)
  • slaves - list of ips for additional nodes (optional)
  • iface - network interface name to retrive mac address (optional)

Default services:

  • glance-api
  • ironic-api
  • ironic-conductor
  • keystone
  • mysql
  • nova-api
  • nova-compute
  • nova-scheduler
  • rabbitmq

fuel [CloudManagement, NodeDiscover]

Fuel driver.

Cloud deployed by fuel. Supports discovering of slave nodes.

Example configuration:

cloud_management:
  driver: fuel
  args:
    address: 192.168.1.10
    username: root
    private_key_file: ~/.ssh/id_rsa_fuel
    slave_direct_ssh: True

parameters:

  • address - ip address of fuel master node
  • username - username for fuel master and slave nodes
  • private_key_file - path to key file (optional)
  • slave_direct_ssh - if False then fuel master is used as ssh proxy (optional)

Default services:

  • cinder-api
  • cinder-backup
  • cinder-scheduler
  • cinder-volume
  • glance-api
  • glance-glare
  • glance-registry
  • heat-api
  • heat-engine
  • horizon
  • ironic-api
  • ironic-conductor
  • keystone
  • memcached
  • mysql
  • neutron-dhcp-agent
  • neutron-l3-agent
  • neutron-metadata-agent
  • neutron-openvswitch-agent
  • neutron-server
  • nova-api
  • nova-cert
  • nova-compute
  • nova-conductor
  • nova-consoleauth
  • nova-novncproxy
  • nova-scheduler
  • rabbitmq
  • swift-account
  • swift-account-auditor
  • swift-account-reaper
  • swift-account-replicator
  • swift-container
  • swift-container-auditor
  • swift-container-replicator
  • swift-container-sync
  • swift-container-updater
  • swift-object
  • swift-object-auditor
  • swift-object-replicator
  • swift-object-updater
  • swift-proxy

tcpcloud [CloudManagement, NodeDiscover]

TCPCloud driver.

Supports discovering of slave nodes.

Example configuration:

cloud_management:
  driver: tcpcloud
  args:
    address: 192.168.1.10
    username: root
    password: root_pass
    private_key_file: ~/.ssh/id_rsa_tcpcloud
    slave_username: ubuntu
    slave_password: ubuntu_pass
    master_sudo: False
    slave_sudo: True
    slave_name_regexp: ^(?!cfg|mon)
    slave_direct_ssh: True
    get_ips_cmd: pillar.get _param:single_address

parameters:

  • address - ip address of salt config node
  • username - username for salt config node
  • password - password for salt config node (optional)
  • private_key_file - path to key file (optional)
  • slave_username - username for salt minions (optional) username will be used if slave_username not specified
  • slave_password - password for salt minions (optional) password will be used if slave_password not specified
  • master_sudo - Use sudo on salt config node (optional)
  • slave_sudo - Use sudi on salt minion nodes (optional)
  • slave_name_regexp - regexp for minion FQDNs (optional)
  • slave_direct_ssh - if False then salt master is used as ssh proxy (optional)
  • get_ips_cmd - salt command to get IPs of minions (optional)

Default services:

  • cinder-api
  • cinder-backup
  • cinder-scheduler
  • cinder-volume
  • elasticsearch
  • glance-api
  • glance-registry
  • grafana-server
  • heat-api
  • heat-engine
  • horizon
  • influxdb
  • keystone
  • kibana
  • memcached
  • mysql
  • nagios3
  • neutron-dhcp-agent
  • neutron-l3-agent
  • neutron-metadata-agent
  • neutron-openvswitch-agent
  • neutron-server
  • nova-api
  • nova-cert
  • nova-compute
  • nova-conductor
  • nova-consoleauth
  • nova-novncproxy
  • nova-scheduler
  • rabbitmq

Power management

libvirt [PowerDriver]

Libvirt driver.

Example configuration:

power_managements:
- driver: libvirt
  args:
    connection_uri: qemu+unix:///system

parameters:

  • connection_uri - libvirt uri

ipmi [PowerDriver]

IPMI driver.

Example configuration:

power_managements:
- driver: ipmi
  args:
    mac_to_bmc:
      aa:bb:cc:dd:ee:01:
        address: 170.0.10.50
        username: admin1
        password: Admin_123
      aa:bb:cc:dd:ee:02:
        address: 170.0.10.51
        username: admin2
        password: Admin_123
    fqdn_to_bmc:
      node3.local:
        address: 170.0.10.52
        username: admin1
        password: Admin_123

parameters:

  • mac_to_bmc - list of dicts where keys are the node MACs and values are the corresponding BMC configurations with the folowing fields:
    • address - ip address of IPMI server
    • username - IPMI user
    • password - IPMI password

Node discover

node_list [NodeDiscover]

Node list.

Allows specifying list of nodes in configuration.

Example configuration:

node_discover:
  driver: node_list
  args:
  - ip: 10.0.0.51
    mac: aa:bb:cc:dd:ee:01
    fqdn: node1.local
  - ip: 10.0.0.52
    mac: aa:bb:cc:dd:ee:02
    fqdn: node2.local
  - ip: 10.0.0.53
    mac: aa:bb:cc:dd:ee:03
    fqdn: node3.local

Service drivers

process [Service]

Service as process

“process” is a basic service driver that uses ps and kill in actions like kill / freeze / unfreeze. Commands for start / restart / terminate should be specified in configuration, otherwise the commands will fail at runtime.

Example configuration:

services:
  app:
    driver: process
    args:
      grep: my_app
      restart_cmd: /bin/my_app --restart
      terminate_cmd: /bin/stop_my_app
      start_cmd: /bin/my_app
      port: ['tcp', 4242]

parameters:

  • grep - regexp for grep to find process PID
  • restart_cmd - command to restart service (optional)
  • terminate_cmd - command to terminate service (optional)
  • start_cmd - command to start service (optional)
  • port - tuple with two values - potocol, port number (optional)

linux_service [ServiceAsProcess]

Linux service

Service that is defined in init.d and can be controled by service CLI tool.

Example configuration:

services:
  app:
    driver: linux_service
    args:
      linux_service: app
      grep: my_app
      port: ['tcp', 4242]

parameters:

  • linux_service - name of a service
  • grep - regexp for grep to find process PID
  • port - tuple with two values - potocol, port number (optional)

screen [ServiceAsProcess]

Service in Screen

This driver controls service that is started in a window of screen tool.

Example configuration:

services:
  app:
    driver: screen
    args:
      window_name: app
      grep: my_app
      port: ['tcp', 4242]

parameters:

  • window_name - name of a service
  • grep - regexp for grep to find process PID
  • port - tuple with two values - potocol, port number (optional)

salt_service [ServiceAsProcess]

Salt service

Service that can be controled by salt service.* commands.

Example configuration:

services:
  app:
    driver: salt_service
    args:
      salt_service: app
      grep: my_app
      port: ['tcp', 4242]

parameters:

  • salt_service - name of a service
  • grep - regexp for grep to find process PID
  • port - tuple with two values - potocol, port number (optional)

pcs_service [ServiceAsProcess]

Service as a resource in Pacemaker

Service that can be controled by pcs resource CLI tool.

Example configuration:

services:
  app:
    driver: pcs_service
    args:
      pcs_service: app
      grep: my_app
      port: ['tcp', 4242]

parameters:

  • pcs_service - name of a service
  • grep - regexp for grep to find process PID
  • port - tuple with two values - potocol, port number (optional)

pcs_or_linux_service [ServiceAsProcess]

Service as a resource in Pacemaker or Linux service

Service that can be controled by pcs resource CLI tool or linux service tool. This is a hybrid driver that tries to find service in Pacemaker and uses linux service if it is not found there.

Example configuration:

services:
  app:
    driver: pcs_or_linux_service
    args:
      pcs_service: p_app
      linux_service: app
      grep: my_app
      port: ['tcp', 4242]

parameters:

  • pcs_service - name of a service in Pacemaker
  • linux_service - name of a service in init.d
  • grep - regexp for grep to find process PID
  • port - tuple with two values - potocol, port number (optional)