Drivers

Cloud management

devstack [CloudManagement, NodeDiscover]

Devstack driver.

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

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 retrieve mac address (optional)
  • serial - how many hosts Ansible should manage at a single time. (optional) default: 10

Default services:

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

devstack_systemd [DevStackManagement]

Driver for modern DevStack based on Systemd.

This driver requires DevStack installed with Systemd (USE_SCREEN=False). Supports discovering of node MAC addresses.

Example configuration:

cloud_management:
  driver: devstack_systemd
  args:
    address: 192.168.1.10
    username: ubuntu
    password: ubuntu_pass
    private_key_file: ~/.ssh/id_rsa_devstack_systemd
    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 retrieve mac address (optional)
  • serial - how many hosts Ansible should manage at a single time. (optional) default: 10

Default services:

  • glance-api
  • 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)
  • serial - how many hosts Ansible should manage at a single time. (optional) default: 10

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 sudo 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)
  • serial - how many hosts Ansible should manage at a single time. (optional) default: 10

Default services:

  • cinder-api
  • cinder-backup
  • cinder-scheduler
  • cinder-volume
  • elasticsearch
  • glance-api
  • glance-glare
  • 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
    libvirt_name: node1
  - ip: 192.168.1.50
    mac: aa:bb:cc:dd:ee:02
    fqdn: node2.local
    auth:
      username: user1
      password: secret1
      sudo: False
      jump:
        host: 10.0.0.52
        username: ubuntu
        private_key_file: /path/to/file
  - ip: 10.0.0.53
    mac: aa:bb:cc:dd:ee:03
    fqdn: node3.local
    become: true
    become_password: my_secret_password

node parameters:

  • ip - ip/host of the node
  • mac - MAC address of the node (optional). MAC address is used for libvirt driver.
  • fqdn - FQDN of the node (optional). FQDN is used for filtering only.
  • auth - SSH related parameters (optional):
    • username - SSH username (optional)
    • password - SSH password (optional)
    • private_key_file - SSH key file (optional)
    • become - True if privilege escalation is used (optional)
    • become_password - privilege escalation password (optional)
    • jump - SSH proxy parameters (optional):
      • host - SSH proxy host
      • username - SSH proxy user
      • private_key_file - SSH proxy key file (optional)

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 - protocol, port number (optional)

linux_service [ServiceAsProcess]

Linux service

Service that is defined in init.d and can be controlled 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 - protocol, 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 - protocol, port number (optional)

systemd_service [ServiceAsProcess]

Systemd service.

Service as Systemd unit and can be controlled by systemctl CLI tool.

Example configuration:

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

parameters:

  • systemd_service - name of a service in systemd
  • grep - regexp for grep to find process PID
  • port - tuple with two values - protocol, port number (optional)

salt_service [ServiceAsProcess]

Salt service

Service that can be controlled 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 - protocol, port number (optional)

pcs_service [ServiceAsProcess]

Service as a resource in Pacemaker

Service that can be controlled 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 - protocol, port number (optional)

pcs_or_linux_service [ServiceAsProcess]

Service as a resource in Pacemaker or Linux service

Service that can be controlled 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 - protocol, port number (optional)