Heat auto-discovery, keero-linux-keys -> keero-keys
This commit is contained in:
@@ -22,42 +22,43 @@ log = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def task_received(task, message_id):
|
def task_received(task, message_id):
|
||||||
with rabbitmq.RmqClient() as rmqclient:
|
with rabbitmq.RmqClient() as rmqclient:
|
||||||
log.info('Starting processing task {0}: {1}'.format(
|
try:
|
||||||
message_id, anyjson.dumps(task)))
|
log.info('Starting processing task {0}: {1}'.format(
|
||||||
reporter = reporting.Reporter(rmqclient, message_id, task['id'])
|
message_id, anyjson.dumps(task)))
|
||||||
|
reporter = reporting.Reporter(rmqclient, message_id, task['id'])
|
||||||
|
|
||||||
command_dispatcher = CommandDispatcher(
|
command_dispatcher = CommandDispatcher(
|
||||||
task['id'], rmqclient, task['token'], task['tenant_id'])
|
task['id'], rmqclient, task['token'], task['tenant_id'])
|
||||||
workflows = []
|
workflows = []
|
||||||
for path in glob.glob("data/workflows/*.xml"):
|
for path in glob.glob("data/workflows/*.xml"):
|
||||||
log.debug('Loading XML {0}'.format(path))
|
log.debug('Loading XML {0}'.format(path))
|
||||||
workflow = Workflow(path, task, command_dispatcher, config,
|
workflow = Workflow(path, task, command_dispatcher, config,
|
||||||
reporter)
|
reporter)
|
||||||
workflows.append(workflow)
|
workflows.append(workflow)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
result = False
|
result = False
|
||||||
for workflow in workflows:
|
for workflow in workflows:
|
||||||
if workflow.execute():
|
if workflow.execute():
|
||||||
result = True
|
result = True
|
||||||
if not result:
|
if not result:
|
||||||
|
break
|
||||||
|
if not command_dispatcher.execute_pending():
|
||||||
break
|
break
|
||||||
if not command_dispatcher.execute_pending():
|
except Exception as ex:
|
||||||
|
log.exception(ex)
|
||||||
break
|
break
|
||||||
except Exception as ex:
|
|
||||||
log.exception(ex)
|
|
||||||
break
|
|
||||||
|
|
||||||
command_dispatcher.close()
|
command_dispatcher.close()
|
||||||
|
finally:
|
||||||
|
del task['token']
|
||||||
|
result_msg = rabbitmq.Message()
|
||||||
|
result_msg.body = task
|
||||||
|
result_msg.id = message_id
|
||||||
|
|
||||||
del task['token']
|
rmqclient.send(message=result_msg, key='task-results')
|
||||||
result_msg = rabbitmq.Message()
|
|
||||||
result_msg.body = task
|
|
||||||
result_msg.id = message_id
|
|
||||||
|
|
||||||
rmqclient.send(message=result_msg, key='task-results')
|
|
||||||
log.info('Finished processing task {0}. Result = {1}'.format(
|
log.info('Finished processing task {0}. Result = {1}'.format(
|
||||||
message_id, anyjson.dumps(task)))
|
message_id, anyjson.dumps(task)))
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
import anyjson
|
import anyjson
|
||||||
import eventlet
|
import eventlet
|
||||||
|
|
||||||
|
import jsonpath
|
||||||
from conductor.openstack.common import log as logging
|
from conductor.openstack.common import log as logging
|
||||||
import conductor.helpers
|
import conductor.helpers
|
||||||
from command import CommandBase
|
from command import CommandBase
|
||||||
@@ -20,13 +21,18 @@ class HeatExecutor(CommandBase):
|
|||||||
self._stack = 'e' + stack
|
self._stack = 'e' + stack
|
||||||
settings = conductor.config.CONF.heat
|
settings = conductor.config.CONF.heat
|
||||||
|
|
||||||
client = ksclient.Client(endpoint=settings.keystone)
|
client = ksclient.Client(endpoint=settings.auth_url)
|
||||||
scoped_token = client.tokens.authenticate(
|
auth_data = client.tokens.authenticate(
|
||||||
tenant_id=tenant_id,
|
tenant_id=tenant_id,
|
||||||
token=token).id
|
token=token)
|
||||||
|
|
||||||
self._heat_client = Client('1', settings.url,
|
scoped_token = auth_data.id
|
||||||
token_only=True, token=scoped_token)
|
|
||||||
|
heat_url = jsonpath.jsonpath(auth_data.serviceCatalog,
|
||||||
|
"$[?(@.name == 'heat')].endpoints[0].publicURL")[0]
|
||||||
|
|
||||||
|
self._heat_client = Client('1', heat_url,
|
||||||
|
token_only=True, token=scoped_token)
|
||||||
|
|
||||||
def execute(self, command, callback, **kwargs):
|
def execute(self, command, callback, **kwargs):
|
||||||
log.debug('Got command {0} on stack {1}'.format(command, self._stack))
|
log.debug('Got command {0} on stack {1}'.format(command, self._stack))
|
||||||
|
@@ -46,8 +46,7 @@ rabbit_opts = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
heat_opts = [
|
heat_opts = [
|
||||||
cfg.StrOpt('url'),
|
cfg.StrOpt('auth_url'),
|
||||||
cfg.StrOpt('keystone')
|
|
||||||
]
|
]
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
@@ -1,29 +1,29 @@
|
|||||||
import xml_code_engine
|
import xml_code_engine
|
||||||
|
|
||||||
from openstack.common import log as logging
|
from openstack.common import log as logging
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def send_command(engine, context, body, template, service, host, mappings=None,
|
def send_command(engine, context, body, template, service, host, mappings=None,
|
||||||
result=None, **kwargs):
|
result=None, **kwargs):
|
||||||
if not mappings:
|
if not mappings:
|
||||||
mappings = {}
|
mappings = {}
|
||||||
command_dispatcher = context['/commandDispatcher']
|
command_dispatcher = context['/commandDispatcher']
|
||||||
|
|
||||||
def callback(result_value):
|
def callback(result_value):
|
||||||
log.info(
|
log.info(
|
||||||
'Received result from {3} for {0}: {1}. Body is {2}'.format(
|
'Received result from {2} for {0}: {1}'.format(
|
||||||
template, result_value, body, host))
|
template, result_value, host))
|
||||||
if result is not None:
|
if result is not None:
|
||||||
context[result] = result_value['Result']
|
context[result] = result_value['Result']
|
||||||
|
|
||||||
success_handler = body.find('success')
|
success_handler = body.find('success')
|
||||||
if success_handler is not None:
|
if success_handler is not None:
|
||||||
engine.evaluate_content(success_handler, context)
|
engine.evaluate_content(success_handler, context)
|
||||||
|
|
||||||
command_dispatcher.execute(
|
command_dispatcher.execute(
|
||||||
name='agent', template=template, mappings=mappings,
|
name='agent', template=template, mappings=mappings,
|
||||||
host=host, service=service, callback=callback)
|
host=host, service=service, callback=callback)
|
||||||
|
|
||||||
|
|
||||||
xml_code_engine.XmlCodeEngine.register_function(send_command, "send-command")
|
xml_code_engine.XmlCodeEngine.register_function(send_command, "send-command")
|
@@ -1,222 +1,222 @@
|
|||||||
<workflow>
|
<workflow>
|
||||||
<rule match="$.services.activeDirectories[?(@.domain)].units[?(not @.isMaster)]">
|
<rule match="$.services.activeDirectories[?(@.domain)].units[?(not @.isMaster)]">
|
||||||
<set path="domain">
|
<set path="domain">
|
||||||
<select path="::domain"/>
|
<select path="::domain"/>
|
||||||
</set>
|
</set>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$.services.activeDirectories[*].units[?(@.state.hostname and not @.state.instanceName)]">
|
<rule match="$.services.activeDirectories[*].units[?(@.state.hostname and not @.state.instanceName)]">
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Creating instance <select path="name"/></parameter>
|
<parameter name="text">Creating instance <select path="name"/></parameter>
|
||||||
</report>
|
</report>
|
||||||
<update-cf-stack template="Windows">
|
<update-cf-stack template="Windows">
|
||||||
<parameter name="mappings">
|
<parameter name="mappings">
|
||||||
<map>
|
<map>
|
||||||
<mapping name="instanceName">AD-<select path="::id"/>-<select path="name"/></mapping>
|
<mapping name="instanceName">AD-<select path="::id"/>-<select path="name"/></mapping>
|
||||||
<mapping name="userData">
|
<mapping name="userData">
|
||||||
<prepare-user-data>
|
<prepare-user-data>
|
||||||
<parameter name="hostname"><select path="state.hostname"/></parameter>
|
<parameter name="hostname"><select path="state.hostname"/></parameter>
|
||||||
<parameter name="unit"><select path="name"/></parameter>
|
<parameter name="unit"><select path="name"/></parameter>
|
||||||
<parameter name="service"><select path="::id"/></parameter>
|
<parameter name="service"><select path="::id"/></parameter>
|
||||||
</prepare-user-data>
|
</prepare-user-data>
|
||||||
</mapping>
|
</mapping>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="arguments">
|
<parameter name="arguments">
|
||||||
<map>
|
<map>
|
||||||
<argument name="KeyName">keero-linux-keys</argument>
|
<argument name="KeyName">keero-keys</argument>
|
||||||
<argument name="InstanceType">m1.medium</argument>
|
<argument name="InstanceType">m1.medium</argument>
|
||||||
<argument name="ImageName">ws-2012-full</argument>
|
<argument name="ImageName">ws-2012-full</argument>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
||||||
<success>
|
<success>
|
||||||
<set path="state.instanceName"><select path="name"/></set>
|
<set path="state.instanceName"><select path="name"/></set>
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Instance <select path="name"/> created</parameter>
|
<parameter name="text">Instance <select path="name"/> created</parameter>
|
||||||
</report>
|
</report>
|
||||||
</success>
|
</success>
|
||||||
</update-cf-stack>
|
</update-cf-stack>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$.services.activeDirectories[*].units[?(@.state.instanceName and @.adminPassword and @.adminPassword != @.state.adminPassword)]">
|
<rule match="$.services.activeDirectories[*].units[?(@.state.instanceName and @.adminPassword and @.adminPassword != @.state.adminPassword)]">
|
||||||
<send-command template="SetPassword">
|
<send-command template="SetPassword">
|
||||||
<parameter name="host">
|
<parameter name="host">
|
||||||
<select path="name"/>
|
<select path="name"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="service">
|
<parameter name="service">
|
||||||
<select path="::id"/>
|
<select path="::id"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="mappings">
|
<parameter name="mappings">
|
||||||
<map>
|
<map>
|
||||||
<mapping name="adminPassword">
|
<mapping name="adminPassword">
|
||||||
<select path="adminPassword"/>
|
<select path="adminPassword"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
<success>
|
<success>
|
||||||
<set path="state.adminPassword">
|
<set path="state.adminPassword">
|
||||||
<select path="adminPassword"/>
|
<select path="adminPassword"/>
|
||||||
</set>
|
</set>
|
||||||
</success>
|
</success>
|
||||||
</send-command>
|
</send-command>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$.services.activeDirectories[?(@.adminPassword and @.adminPassword != @.state.domainAdminPassword)].units[?(@.state.instanceName and @.isMaster)]">
|
<rule match="$.services.activeDirectories[?(@.adminPassword and @.adminPassword != @.state.domainAdminPassword)].units[?(@.state.instanceName and @.isMaster)]">
|
||||||
<send-command template="SetPassword">
|
<send-command template="SetPassword">
|
||||||
<parameter name="host">
|
<parameter name="host">
|
||||||
<select path="name"/>
|
<select path="name"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="service">
|
<parameter name="service">
|
||||||
<select path="::id"/>
|
<select path="::id"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="mappings">
|
<parameter name="mappings">
|
||||||
<map>
|
<map>
|
||||||
<mapping name="adminPassword">
|
<mapping name="adminPassword">
|
||||||
<select path="::adminPassword"/>
|
<select path="::adminPassword"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
<success>
|
<success>
|
||||||
<set path="::state.domainAdminPassword">
|
<set path="::state.domainAdminPassword">
|
||||||
<select path="::adminPassword"/>
|
<select path="::adminPassword"/>
|
||||||
</set>
|
</set>
|
||||||
</success>
|
</success>
|
||||||
</send-command>
|
</send-command>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$.services.activeDirectories[?(@.state.primaryDc is None)].units[?(@.state.instanceName and @.isMaster)]">
|
<rule match="$.services.activeDirectories[?(@.state.primaryDc is None)].units[?(@.state.instanceName and @.isMaster)]">
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Creating Primary Domain Controller on unit <select path="name"/></parameter>
|
<parameter name="text">Creating Primary Domain Controller on unit <select path="name"/></parameter>
|
||||||
</report>
|
</report>
|
||||||
<send-command template="CreatePrimaryDC">
|
<send-command template="CreatePrimaryDC">
|
||||||
<parameter name="host">
|
<parameter name="host">
|
||||||
<select path="name"/>
|
<select path="name"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="service">
|
<parameter name="service">
|
||||||
<select path="::id"/>
|
<select path="::id"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="mappings">
|
<parameter name="mappings">
|
||||||
<map>
|
<map>
|
||||||
<mapping name="domain">
|
<mapping name="domain">
|
||||||
<select path="::domain"/>
|
<select path="::domain"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
<mapping name="recoveryPassword">
|
<mapping name="recoveryPassword">
|
||||||
<select path="recoveryPassword"/>
|
<select path="recoveryPassword"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
<success>
|
<success>
|
||||||
<set path="::state.primaryDc"><select path="name"/></set>
|
<set path="::state.primaryDc"><select path="name"/></set>
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Primary Domain Controller created</parameter>
|
<parameter name="text">Primary Domain Controller created</parameter>
|
||||||
</report>
|
</report>
|
||||||
</success>
|
</success>
|
||||||
</send-command>
|
</send-command>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$.services.activeDirectories[?(@.state.primaryDc and not @.state.primaryDcIp)].units[?(@.state.instanceName and @.isMaster)]">
|
<rule match="$.services.activeDirectories[?(@.state.primaryDc and not @.state.primaryDcIp)].units[?(@.state.instanceName and @.isMaster)]">
|
||||||
<send-command template="AskDnsIp" result="ip">
|
<send-command template="AskDnsIp" result="ip">
|
||||||
<parameter name="host">
|
<parameter name="host">
|
||||||
<select path="name"/>
|
<select path="name"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="service">
|
<parameter name="service">
|
||||||
<select path="::id"/>
|
<select path="::id"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<success>
|
<success>
|
||||||
<set path="::state.primaryDcIp">
|
<set path="::state.primaryDcIp">
|
||||||
<select source="ip" path="0.Result.0"/>
|
<select source="ip" path="0.Result.0"/>
|
||||||
</set>
|
</set>
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">DNS IP = <select source="ip" path="0.Result.0"/></parameter>
|
<parameter name="text">DNS IP = <select source="ip" path="0.Result.0"/></parameter>
|
||||||
</report>
|
</report>
|
||||||
</success>
|
</success>
|
||||||
</send-command>
|
</send-command>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$..units[?(@.state.instanceName and @.domain and @.domain != @.state.domain)]">
|
<rule match="$..units[?(@.state.instanceName and @.domain and @.domain != @.state.domain)]">
|
||||||
<set path="#unit">
|
<set path="#unit">
|
||||||
<select/>
|
<select/>
|
||||||
</set>
|
</set>
|
||||||
<set path="#service">
|
<set path="#service">
|
||||||
<select path="::"/>
|
<select path="::"/>
|
||||||
</set>
|
</set>
|
||||||
<rule>
|
<rule>
|
||||||
<parameter name="match">/$.services.activeDirectories[?(@.domain == '<select path="domain"/>' and @.state.primaryDcIp)]</parameter>
|
<parameter name="match">/$.services.activeDirectories[?(@.domain == '<select path="domain"/>' and @.state.primaryDcIp)]</parameter>
|
||||||
|
|
||||||
<send-command template="JoinDomain">
|
<send-command template="JoinDomain">
|
||||||
<parameter name="host">
|
<parameter name="host">
|
||||||
<select path="name" source="unit"/>
|
<select path="name" source="unit"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="service">
|
<parameter name="service">
|
||||||
<select path="id" source="service"/>
|
<select path="id" source="service"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="mappings">
|
<parameter name="mappings">
|
||||||
<map>
|
<map>
|
||||||
<mapping name="domain">
|
<mapping name="domain">
|
||||||
<select path="domain"/>
|
<select path="domain"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
<mapping name="domainPassword">
|
<mapping name="domainPassword">
|
||||||
<select path="adminPassword"/>
|
<select path="adminPassword"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
<mapping name="dnsIp">
|
<mapping name="dnsIp">
|
||||||
<select path="state.primaryDcIp"/>
|
<select path="state.primaryDcIp"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
||||||
<success>
|
<success>
|
||||||
<set path="state.domain" target="unit">
|
<set path="state.domain" target="unit">
|
||||||
<select path="domain"/>
|
<select path="domain"/>
|
||||||
</set>
|
</set>
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id" source="unit"/></parameter>
|
<parameter name="id"><select path="id" source="unit"/></parameter>
|
||||||
<parameter name="text">Unit <select path="name" source="unit"/> has joined domain <select path="domain"/></parameter>
|
<parameter name="text">Unit <select path="name" source="unit"/> has joined domain <select path="domain"/></parameter>
|
||||||
</report>
|
</report>
|
||||||
</success>
|
</success>
|
||||||
</send-command>
|
</send-command>
|
||||||
</rule>
|
</rule>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
|
|
||||||
<rule match="$.services.activeDirectories[*].units[?(@.state.domain and not @.isMaster and not @.state.installed)]">
|
<rule match="$.services.activeDirectories[*].units[?(@.state.domain and not @.isMaster and not @.state.installed)]">
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Creating Secondary Domain Controller on unit <select path="name"/></parameter>
|
<parameter name="text">Creating Secondary Domain Controller on unit <select path="name"/></parameter>
|
||||||
</report>
|
</report>
|
||||||
<send-command template="CreateSecondaryDC">
|
<send-command template="CreateSecondaryDC">
|
||||||
<parameter name="host">
|
<parameter name="host">
|
||||||
<select path="name"/>
|
<select path="name"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="service">
|
<parameter name="service">
|
||||||
<select path="::id"/>
|
<select path="::id"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="mappings">
|
<parameter name="mappings">
|
||||||
<map>
|
<map>
|
||||||
<mapping name="recoveryPassword">
|
<mapping name="recoveryPassword">
|
||||||
<select path="recoveryPassword"/>
|
<select path="recoveryPassword"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
<mapping name="domainPassword">
|
<mapping name="domainPassword">
|
||||||
<select path="::adminPassword"/>
|
<select path="::adminPassword"/>
|
||||||
</mapping>
|
</mapping>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
<success>
|
<success>
|
||||||
<set path="state.installed"><true/></set>
|
<set path="state.installed"><true/></set>
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Secondary Domain Controller created</parameter>
|
<parameter name="text">Secondary Domain Controller created</parameter>
|
||||||
</report>
|
</report>
|
||||||
<report entity="service">
|
<report entity="service">
|
||||||
<parameter name="id"><select path="::id"/></parameter>
|
<parameter name="id"><select path="::id"/></parameter>
|
||||||
<parameter name="text">Domain <select path="::domain"/> created</parameter>
|
<parameter name="text">Domain <select path="::domain"/> created</parameter>
|
||||||
</report>
|
</report>
|
||||||
</success>
|
</success>
|
||||||
</send-command>
|
</send-command>
|
||||||
</rule>
|
</rule>
|
||||||
</workflow>
|
</workflow>
|
@@ -1,65 +1,65 @@
|
|||||||
<workflow>
|
<workflow>
|
||||||
<rule match="$.services.webServers[?(@.domain)].units[*]">
|
<rule match="$.services.webServers[?(@.domain)].units[*]">
|
||||||
<set path="domain">
|
<set path="domain">
|
||||||
<select path="::domain"/>
|
<select path="::domain"/>
|
||||||
</set>
|
</set>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$.services.webServers[*].units[?(@.state.hostname and not @.state.instanceName)]">
|
<rule match="$.services.webServers[*].units[?(@.state.hostname and not @.state.instanceName)]">
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Creating instance <select path="name"/></parameter>
|
<parameter name="text">Creating instance <select path="name"/></parameter>
|
||||||
</report>
|
</report>
|
||||||
<update-cf-stack template="Windows">
|
<update-cf-stack template="Windows">
|
||||||
<parameter name="mappings">
|
<parameter name="mappings">
|
||||||
<map>
|
<map>
|
||||||
<mapping name="instanceName">WS-<select path="::id"/>-<select path="name"/></mapping>
|
<mapping name="instanceName">WS-<select path="::id"/>-<select path="name"/></mapping>
|
||||||
<mapping name="userData">
|
<mapping name="userData">
|
||||||
<prepare-user-data>
|
<prepare-user-data>
|
||||||
<parameter name="hostname"><select path="state.hostname"/></parameter>
|
<parameter name="hostname"><select path="state.hostname"/></parameter>
|
||||||
<parameter name="unit"><select path="name"/></parameter>
|
<parameter name="unit"><select path="name"/></parameter>
|
||||||
<parameter name="service"><select path="::id"/></parameter>
|
<parameter name="service"><select path="::id"/></parameter>
|
||||||
</prepare-user-data>
|
</prepare-user-data>
|
||||||
</mapping>
|
</mapping>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="arguments">
|
<parameter name="arguments">
|
||||||
<map>
|
<map>
|
||||||
<argument name="KeyName">keero-linux-keys</argument>
|
<argument name="KeyName">keero-keys</argument>
|
||||||
<argument name="InstanceType">m1.medium</argument>
|
<argument name="InstanceType">m1.medium</argument>
|
||||||
<argument name="ImageName">ws-2012-full</argument>
|
<argument name="ImageName">ws-2012-full</argument>
|
||||||
</map>
|
</map>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
||||||
<success>
|
<success>
|
||||||
<set path="state.instanceName"><select path="name"/></set>
|
<set path="state.instanceName"><select path="name"/></set>
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Instance <select path="name"/> created</parameter>
|
<parameter name="text">Instance <select path="name"/> created</parameter>
|
||||||
</report>
|
</report>
|
||||||
</success>
|
</success>
|
||||||
</update-cf-stack>
|
</update-cf-stack>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$.services.webServers[*].units[?(@.state.instanceName and not @.state.iisInstalled)]">
|
<rule match="$.services.webServers[*].units[?(@.state.instanceName and not @.state.iisInstalled)]">
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">Creating IIS Web Server on unit <select path="name"/></parameter>
|
<parameter name="text">Creating IIS Web Server on unit <select path="name"/></parameter>
|
||||||
</report>
|
</report>
|
||||||
<send-command template="InstallIIS">
|
<send-command template="InstallIIS">
|
||||||
<parameter name="host">
|
<parameter name="host">
|
||||||
<select path="name"/>
|
<select path="name"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="service">
|
<parameter name="service">
|
||||||
<select path="::id"/>
|
<select path="::id"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<success>
|
<success>
|
||||||
<set path="state.iisInstalled"><true/></set>
|
<set path="state.iisInstalled"><true/></set>
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
<parameter name="text">IIS <select path="name"/> has started</parameter>
|
<parameter name="text">IIS <select path="name"/> has started</parameter>
|
||||||
</report>
|
</report>
|
||||||
</success>
|
</success>
|
||||||
</send-command>
|
</send-command>
|
||||||
</rule>
|
</rule>
|
||||||
</workflow>
|
</workflow>
|
@@ -4,8 +4,7 @@ debug=True
|
|||||||
verbose=True
|
verbose=True
|
||||||
|
|
||||||
[heat]
|
[heat]
|
||||||
url = http://172.18.124.101:8004/v1/16eb78cbb688459c8308d89678bcef50
|
auth_url = http://172.18.124.101:5000/v2.0
|
||||||
keystone = http://172.18.124.101:5000/v2.0
|
|
||||||
|
|
||||||
[rabbitmq]
|
[rabbitmq]
|
||||||
host = 172.18.124.101
|
host = 172.18.124.101
|
||||||
|
Reference in New Issue
Block a user