Drivers¶
Cloud management¶
universal [CloudManagement]¶
Universal cloud management driver
This driver is suitable for the most abstract (and thus universal) case. The driver does not have any built-in services nor node discovery capabilities. All services need to be listed explicitly in a config file. Node list is specified using node_list node discovery driver.
Example of multi-node configuration:
Note that in this configuration a node discovery driver is required.
cloud_management:
driver: universal
node_discover:
driver: node_list
args:
- ip: 192.168.5.149
auth:
username: developer
private_key_file: cloud_key
become_password: my_secret_password
- ip: 192.168.5.150
auth:
username: developer
private_key_file: cloud_key
become_password: my_secret_password
devstack [CloudManagement, NodeDiscover]¶
Driver for DevStack.
This driver requires DevStack installed with Systemd (USE_SCREEN=False). Supports discovering of node MAC addresses.
Example configuration:
cloud_management:
driver: devstack
args:
address: 192.168.1.10
auth:
username: ubuntu
password: ubuntu_pass
private_key_file: ~/.ssh/id_rsa_devstack
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)
- iface - network interface name to retrieve mac address (optional)
Default services:
- cinder-api
- cinder-scheduler
- cinder-volume
- etcd
- glance-api
- heat-api
- heat-engine
- keystone
- memcached
- mysql
- neutron-dhcp-agent
- neutron-l3-agent
- neutron-meta-agent
- neutron-openvswitch-agent
- neutron-server
- nova-api
- nova-compute
- nova-scheduler
- placement-api
- rabbitmq
saltcloud [CloudManagement, NodeDiscover]¶
Driver for OpenStack cloud managed by Salt.
Supports discovering of slave nodes.
Example configuration:
cloud_management:
driver: saltcloud
args:
address: 192.168.1.10
auth:
username: root
password: root_pass
private_key_file: ~/.ssh/id_rsa_tcpcloud
slave_auth:
username: ubuntu
password: ubuntu_pass
become_username: root
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
Note that Libvirt domain name should be specified as node attribute. Refer to node discover (node_list driver) for details.
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
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_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.
- libvirt_name - Libvirt domain name (optional).
- auth - SSH related parameters (optional):
- username - SSH username (optional)
- password - SSH password (optional)
- private_key_file - SSH key file (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, 'ingress']
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 or three values - protocol, port number, direction (optional)
Note that network operations are based on iptables. They are applied to the whole host and not restricted to a single process.
system_service [ServiceAsProcess]¶
System service
This is universal driver for any system services supported by Ansible (e.g. systemd, upstart). Please refer to Ansible documentation http://docs.ansible.com/ansible/latest/service_module.html for the whole list.
Example configuration:
services:
app:
driver: system_service
args:
service_name: app
grep: my_app
port: ['tcp', 4242, 'ingress']
parameters:
- service_name - name of a service
- grep - regexp for grep to find process PID
- port - tuple with two or three values - protocol, port number, direction (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, 'egress']
parameters:
- salt_service - name of a service
- grep - regexp for grep to find process PID
- port - tuple with two or three values - protocol, port number, direction (optional)
Container drivers¶
docker_container [Container]¶
Docker container
This is docker container driver for any docker containers supported by Ansible. Please refer to Ansible documentation https://docs.ansible.com/ansible/latest/modules/docker_container_module.html for the whole list.
Example configuration:
containers:
app:
driver: docker_container
args:
container_name: app
parameters:
- container_name - name of the container