120 lines
2.9 KiB
Python
120 lines
2.9 KiB
Python
#!/usr/bin/env python
|
|
|
|
# WARNING: this might not be most up-to-date script and not all things might
|
|
# work here, for most up-to-date version see example-riaks.py
|
|
# This is just a demo of the template language of Solar
|
|
|
|
from solar.interfaces.db import get_db
|
|
from solar.core import signals
|
|
|
|
db = get_db()
|
|
db.clear()
|
|
signals.Connections.clear()
|
|
|
|
from solar import template
|
|
|
|
|
|
nodes = template.nodes_from('templates/riak_nodes.yml')
|
|
|
|
riak_services = nodes.on_each(
|
|
'resources/riak_node',
|
|
{
|
|
'riak_self_name': 'riak{num}',
|
|
'riak_hostname': 'riak_server{num}.solar',
|
|
'riak_name': 'riak{num}@riak_server{num}.solar',
|
|
})
|
|
|
|
slave_riak_services = riak_services.tail()
|
|
|
|
riak_services.take(0).connect_list(
|
|
slave_riak_services,
|
|
{
|
|
'riak_name': 'join_to',
|
|
}
|
|
)
|
|
|
|
hosts_files = nodes.on_each('resources/hosts_file')
|
|
|
|
riak_services.connect_list_to_each(
|
|
hosts_files,
|
|
{
|
|
'ip': 'hosts_ips',
|
|
'riak_hostname': 'hosts_names',
|
|
},
|
|
events=False
|
|
)
|
|
|
|
|
|
hosts_files.add_deps('run/success', riak_services, 'run')
|
|
slave_riak_services.add_reacts('run/success', slave_riak_services, 'join')
|
|
slave_riak_services.add_reacts('leave/success', slave_riak_services, 'join')
|
|
slave_riak_services.add_react('run/success', riak_services.take(0), 'commit')
|
|
|
|
|
|
haproxy_services = nodes.on_each(
|
|
'resources/haproxy_service'
|
|
)
|
|
haproxy_configs = nodes.on_each(
|
|
'resources/haproxy_config'
|
|
)
|
|
haproxy_service_configs_http = nodes.on_each(
|
|
'resources/haproxy_service_config',
|
|
{
|
|
'listen_port': 8098,
|
|
'protocol': 'http',
|
|
}
|
|
)
|
|
haproxy_service_configs_pb = nodes.on_each(
|
|
'resources/haproxy_service_config',
|
|
{
|
|
'listen_port': 8087,
|
|
'protocol': 'tcp',
|
|
}
|
|
)
|
|
|
|
riak_services.connect_list_to_each(
|
|
haproxy_service_configs_http,
|
|
{
|
|
'riak_hostname': 'servers',
|
|
'riak_port_http': 'ports',
|
|
}
|
|
)
|
|
riak_services.connect_list_to_each(
|
|
haproxy_service_configs_pb,
|
|
{
|
|
'riak_hostname': 'servers',
|
|
'riak_port_pb': 'ports',
|
|
}
|
|
)
|
|
haproxy_service_configs_http.connect_list(
|
|
haproxy_configs,
|
|
{
|
|
'protocol': 'configs_protocols',
|
|
'listen_port': 'listen_ports',
|
|
'name': 'configs_names',
|
|
'servers': 'configs',
|
|
'ports': 'configs_ports',
|
|
}
|
|
)
|
|
haproxy_service_configs_pb.connect_list(
|
|
haproxy_configs,
|
|
{
|
|
'protocol': 'configs_protocols',
|
|
'listen_port': 'listen_ports',
|
|
'name': 'configs_names',
|
|
'servers': 'configs',
|
|
'ports': 'configs_ports',
|
|
}
|
|
)
|
|
haproxy_configs.connect_list(
|
|
haproxy_services,
|
|
{
|
|
'listen_ports': 'ports',
|
|
}
|
|
)
|
|
|
|
nodes.add_reacts('run/success', haproxy_services, 'install')
|
|
haproxy_services.add_deps('install/success', haproxy_configs, 'run')
|
|
haproxy_configs.add_reacts('run/success', haproxy_services, 'run')
|
|
haproxy_configs.add_reacts('update/success', haproxy_services, 'update')
|