Adding Initial openstack plugins
This is a first working version of the installer, there is a lot more to be added, for example a lot more can be paramatarized
This commit is contained in:
75
plugins/glance_200.py
Normal file
75
plugins/glance_200.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Installs and configures Glance
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-Glance"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/glance.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Glance configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "glance-host",
|
||||
"USAGE" : "Hostname of the Glance server",
|
||||
"PROMPT" : "Hostname of the Glance server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_GLANCE_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "GLANCE",
|
||||
"DESCRIPTION" : "Glance Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
glancesteps = [
|
||||
{'title': 'Creating Galnce Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Glance", [], [], glancesteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_glance.pp"%controller.CONF['CONFIG_GLANCE_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
99
plugins/keystone_100.py
Normal file
99
plugins/keystone_100.py
Normal file
@@ -0,0 +1,99 @@
|
||||
"""
|
||||
Installs and configures Keystone
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-Keystone"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/keystone.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Keystone configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "keystone-host",
|
||||
"USAGE" : "Hostname of the Keystone server",
|
||||
"PROMPT" : "Hostname of the Keystone server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_KEYSTONE_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
{"CMD_OPTION" : "keystone-admin-token",
|
||||
"USAGE" : "Keystone Admin Token",
|
||||
"PROMPT" : "Keystone Admin Token",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validateStringNotEmpty,
|
||||
"DEFAULT_VALUE" : uuid.uuid4().hex,
|
||||
"MASK_INPUT" : True,
|
||||
"LOOSE_VALIDATION": False,
|
||||
"CONF_NAME" : "CONFIG_KEYSTONE_ADMINTOKEN",
|
||||
"USE_DEFAULT" : True,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
{"CMD_OPTION" : "keystone-admin-passwd",
|
||||
"USAGE" : "Keystone Admin Password",
|
||||
"PROMPT" : "Keystone Admin Password",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validateStringNotEmpty,
|
||||
"DEFAULT_VALUE" : uuid.uuid4().hex[:6],
|
||||
"MASK_INPUT" : True,
|
||||
"LOOSE_VALIDATION": False,
|
||||
"CONF_NAME" : "CONFIG_KEYSTONE_ADMINPASSWD",
|
||||
"USE_DEFAULT" : True,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "KEYSTONE",
|
||||
"DESCRIPTION" : "Keystone Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
keystonesteps = [
|
||||
{'title': 'Creating Keystone Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Keystone", [], [], keystonesteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_keystone.pp"%controller.CONF['CONFIG_KEYSTONE_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
98
plugins/mysql_001.py
Normal file
98
plugins/mysql_001.py
Normal file
@@ -0,0 +1,98 @@
|
||||
"""
|
||||
Installs and configures MySQL
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-MySQL"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/mysql.pp'
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding MySQL Openstack configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "mysql-host",
|
||||
"USAGE" : "Hostname of the MySQL server",
|
||||
"PROMPT" : "Hostname of the MySQL server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_MYSQL_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
{"CMD_OPTION" : "mysql-user",
|
||||
"USAGE" : "Username of the MySQL admin user",
|
||||
"PROMPT" : "Username of the MySQL admin user",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validateStringNotEmpty,
|
||||
"DEFAULT_VALUE" : "root",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": False,
|
||||
"CONF_NAME" : "CONFIG_MYSQL_USER",
|
||||
"USE_DEFAULT" : True,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
{"CMD_OPTION" : "mysql-pw",
|
||||
"USAGE" : "Password for the MySQL admin user",
|
||||
"PROMPT" : "Password for the MySQL admin user",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : lambda a,b: True,
|
||||
"DEFAULT_VALUE" : "",
|
||||
"MASK_INPUT" : True,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_MYSQL_PW",
|
||||
"USE_DEFAULT" : True,
|
||||
"NEED_CONFIRM" : True,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "MYSQL",
|
||||
"DESCRIPTION" : "MySQL Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
mysqlsteps = [
|
||||
{'title': 'Create MySQL Manifest',
|
||||
'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing MySQL", [], [], mysqlsteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_mysql.pp"%controller.CONF['CONFIG_MYSQL_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
75
plugins/nova_api_310.py
Normal file
75
plugins/nova_api_310.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Installs and configures nova api
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-NOVAAPI"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/nova_api.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Nova API configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "novaapi-host",
|
||||
"USAGE" : "Hostname of the Nova API server",
|
||||
"PROMPT" : "Hostname of the Nova API server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_NOVAAPI_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "NOVAAPI",
|
||||
"DESCRIPTION" : "NOVAAPI Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
novaapisteps = [
|
||||
{'title': 'Creating Nova API Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Nova API", [], [], novaapisteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_api_nova.pp"%controller.CONF['CONFIG_NOVAAPI_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
75
plugins/nova_cert_320.py
Normal file
75
plugins/nova_cert_320.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Installs and configures nova cert
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-NOVACERT"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/nova_cert.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Nova CERT configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "novacert-host",
|
||||
"USAGE" : "Hostname of the Nova CERT server",
|
||||
"PROMPT" : "Hostname of the Nova CERT server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_NOVACERT_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "NOVACERT",
|
||||
"DESCRIPTION" : "NOVACERT Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
novacertsteps = [
|
||||
{'title': 'Creating Nova CERT Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Nova CERT", [], [], novacertsteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_nova.pp"%controller.CONF['CONFIG_NOVACERT_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
63
plugins/nova_common_390.py
Normal file
63
plugins/nova_common_390.py
Normal file
@@ -0,0 +1,63 @@
|
||||
"""
|
||||
Installs and configures nova common
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-NOVACOMMON"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/nova_common.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Nova Common configuration")
|
||||
paramsList = [
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "NOVACOMMON",
|
||||
"DESCRIPTION" : "NOVACOMMON Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
novacommonsteps = [
|
||||
{'title': 'Creating Nova Common Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Nova Common", [], [], novacommonsteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
|
||||
for manifestfile in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
if manifestfile.endswith("_nova.pp"):
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
|
||||
89
plugins/nova_compute_330.py
Normal file
89
plugins/nova_compute_330.py
Normal file
@@ -0,0 +1,89 @@
|
||||
"""
|
||||
Installs and configures nova compute
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-NOVACOMPUTE"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/nova_compute.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Nova Compute configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "novacompute-hosts",
|
||||
"USAGE" : "Hostname of the Nova Compute servers (commma seperated)",
|
||||
"PROMPT" : "Hostname of the Nova Compute server (commma seperated)",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validateMultiPing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_NOVACOMPUTE_HOSTS",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
{"CMD_OPTION" : "libvirt-type",
|
||||
"USAGE" : "Libvirt Type to use",
|
||||
"PROMPT" : "Libvirt Type to use",
|
||||
"OPTION_LIST" : ["qemu", "kvm"],
|
||||
"VALIDATION_FUNC" : validate.validateOptions,
|
||||
"DEFAULT_VALUE" : "kvm",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": False,
|
||||
"CONF_NAME" : "CONFIG_LIBVIRT_TYPE",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "NOVACOMPUTE",
|
||||
"DESCRIPTION" : "Nova Compute Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
novacomputesteps = [
|
||||
{'title': 'Creating Nova Compute Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Nova Compute", [], [], novacomputesteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
|
||||
for host in controller.CONF["CONFIG_NOVACOMPUTE_HOSTS"].split(","):
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_nova.pp"%host.strip())
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
75
plugins/nova_network_340.py
Normal file
75
plugins/nova_network_340.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Installs and configures nova network
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-NOVANETWORK"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/nova_network.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Nova NETWORK configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "novanetwork-host",
|
||||
"USAGE" : "Hostname of the Nova Network server",
|
||||
"PROMPT" : "Hostname of the Nova Network server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_NOVANETWORK_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "NOVANETWORK",
|
||||
"DESCRIPTION" : "Nova Network Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
novanetworksteps = [
|
||||
{'title': 'Creating Nova Network Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Nova Network", [], [], novanetworksteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_nova.pp"%controller.CONF['CONFIG_NOVANETWORK_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
75
plugins/nova_sched_350.py
Normal file
75
plugins/nova_sched_350.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Installs and configures nova sched
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-NOVASCHED"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/nova_sched.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Nova Sched configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "novasched-host",
|
||||
"USAGE" : "Hostname of the Nova Sched server",
|
||||
"PROMPT" : "Hostname of the Nova Sched server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_NOVASCHED_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "NOVASCHED",
|
||||
"DESCRIPTION" : "NOVASCHED Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
novaschedsteps = [
|
||||
{'title': 'Creating Nova Sched Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Nova Sched", [], [], novaschedsteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_nova.pp"%controller.CONF['CONFIG_NOVASCHED_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
75
plugins/nova_volume_360.py
Normal file
75
plugins/nova_volume_360.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Installs and configures nova volume
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-NOVAVOLUME"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/nova_volume.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Nova VOLUME configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "novavolume-host",
|
||||
"USAGE" : "Hostname of the Nova Volume server",
|
||||
"PROMPT" : "Hostname of the Nova Volume server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_NOVAVOLUME_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "NOVAVOLUME",
|
||||
"DESCRIPTION" : "NOVAVOLUME Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
novavolumesteps = [
|
||||
{'title': 'Creating Nova Volume Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing Nova Volume", [], [], novavolumesteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_nova.pp"%controller.CONF['CONFIG_NOVAVOLUME_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
75
plugins/openstack_client_400.py
Normal file
75
plugins/openstack_client_400.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Installs and configures an openstack client
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-CLIENT"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/openstack_client.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack client configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "osclient-host",
|
||||
"USAGE" : "Hostname of the OpenStack client",
|
||||
"PROMPT" : "Hostname of the OpenStack client",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_OSCLIENT_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "NOVACLIENT",
|
||||
"DESCRIPTION" : "NOVACLIENT Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
osclientsteps = [
|
||||
{'title': 'Creating OS Client Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing OpenStack Client", [], [], osclientsteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_osclient.pp"%controller.CONF['CONFIG_OSCLIENT_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
124
plugins/puppet_950.py
Normal file
124
plugins/puppet_950.py
Normal file
@@ -0,0 +1,124 @@
|
||||
"""
|
||||
Installs and configures puppet
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OSPUPPET"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPETDIR = "puppet"
|
||||
MODULEDIR = os.path.join(PUPPETDIR, "modules")
|
||||
MANIFESTDIR = os.path.join(PUPPETDIR, "manifests")
|
||||
PUPPET_MODULES = [
|
||||
('https://github.com/puppetlabs/puppetlabs-glance.git', 'glance'),
|
||||
('https://github.com/puppetlabs/puppetlabs-horizon.git', 'horizon'),
|
||||
('https://github.com/puppetlabs/puppetlabs-keystone.git', 'keystone'),
|
||||
('https://github.com/puppetlabs/puppetlabs-nova.git', 'nova'),
|
||||
('https://github.com/puppetlabs/puppetlabs-openstack.git', 'openstack'),
|
||||
('https://github.com/puppetlabs/puppetlabs-stdlib.git', 'stdlib'),
|
||||
('https://github.com/puppetlabs/puppetlabs-sysctl.git', 'sysctl'),
|
||||
('https://github.com/puppetlabs/puppetlabs-mysql.git', 'mysql'),
|
||||
('https://github.com/puppetlabs/puppetlabs-concat.git', 'concat'),
|
||||
('https://github.com/puppetlabs/puppetlabs-create_resources.git', 'create_resources'),
|
||||
('https://github.com/puppetlabs/puppetlabs-firewall.git', 'firewall'),
|
||||
('https://github.com/saz/puppet-memcached.git', 'memcached'),
|
||||
('https://github.com/derekhiggins/puppet-qpid.git', 'qpid'),
|
||||
('https://github.com/derekhiggins/puppet-vlan.git', 'vlan')
|
||||
]
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack Puppet configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "remove-puppetmodules",
|
||||
"USAGE" : "Causes the Puppet modules to be removed (if present), and as a result re-cloned from git",
|
||||
"PROMPT" : "Should we remove the Puppet modules",
|
||||
"OPTION_LIST" : ["yes", "no"],
|
||||
"VALIDATION_FUNC" : validate.validateOptions,
|
||||
"DEFAULT_VALUE" : "no",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_PUPPET_REMOVEMODULES",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "PUPPET",
|
||||
"DESCRIPTION" : "Puppet Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
puppetpresteps = [
|
||||
{'title': 'Clean Up', 'functions':[runCleanup]},
|
||||
]
|
||||
controller.insertSequenceBeforeSequence("Initial Steps", "Clean Up", [], [], puppetpresteps)
|
||||
|
||||
puppetsteps = [
|
||||
{'title': 'Getting Puppet modules', 'functions':[getPuppetModules]},
|
||||
{'title': 'Installing Puppet', 'functions':[installpuppet]},
|
||||
{'title': 'Copying Puppet modules/manifests', 'functions':[copyPuppetModules]},
|
||||
{'title': 'Applying Puppet manifests', 'functions':[applyPuppetManifest]},
|
||||
]
|
||||
controller.addSequence("Puppet", [], [], puppetsteps)
|
||||
|
||||
controller.CONF.setdefault('CONFIG_MANIFESTFILES', [])
|
||||
|
||||
def runCleanup():
|
||||
localserver = utils.ScriptRunner()
|
||||
localserver.append("rm -rf %s/*pp"%MANIFESTDIR)
|
||||
if controller.CONF["CONFIG_PUPPET_REMOVEMODULES"] == 'yes':
|
||||
localserver.append("rm -rf %s"%MODULEDIR)
|
||||
localserver.execute()
|
||||
|
||||
def getPuppetModules():
|
||||
localserver = utils.ScriptRunner()
|
||||
|
||||
localserver.append('mkdir -p %s'%MODULEDIR)
|
||||
for repository, directory in PUPPET_MODULES:
|
||||
directory = os.path.join(MODULEDIR, directory)
|
||||
localserver.append('[ -d %s ] || git clone %s %s'%(directory, repository, directory))
|
||||
localserver.execute()
|
||||
|
||||
def installpuppet():
|
||||
for hostname in utils.gethostlist(controller.CONF):
|
||||
server = utils.ScriptRunner(hostname)
|
||||
server.append("rpm -q puppet || yum install -y puppet")
|
||||
server.execute()
|
||||
|
||||
def copyPuppetModules():
|
||||
server = utils.ScriptRunner()
|
||||
for hostname in utils.gethostlist(controller.CONF):
|
||||
server.append("tar -czf - puppet/manifests puppet/modules | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@%s tar -C /etc -xzf -"%(hostname))
|
||||
server.execute()
|
||||
|
||||
def applyPuppetManifest():
|
||||
print
|
||||
for manifest in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
for hostname in utils.gethostlist(controller.CONF):
|
||||
if "/%s_"%hostname not in manifest: continue
|
||||
|
||||
print "Applying "+ manifest
|
||||
server = utils.ScriptRunner(hostname)
|
||||
server.append("puppet apply /etc/puppet/manifests/%s"%os.path.split(manifest)[1])
|
||||
server.execute()
|
||||
|
||||
75
plugins/qpid_002.py
Normal file
75
plugins/qpid_002.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Installs and configures qpid
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-QPID"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
PUPPET_MANIFEST_DIR = 'puppet/manifests'
|
||||
PUPPET_MANIFEST_TEMPLATE = 'puppet/templates/qpid.pp'
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding Openstack QPID configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "qpid-host",
|
||||
"USAGE" : "Hostname of the QPID server",
|
||||
"PROMPT" : "Hostname of the QPID server",
|
||||
"OPTION_LIST" : [],
|
||||
"VALIDATION_FUNC" : validate.validatePing,
|
||||
"DEFAULT_VALUE" : "localhost",
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": True,
|
||||
"CONF_NAME" : "CONFIG_QPID_HOST",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "QPIDLANCE",
|
||||
"DESCRIPTION" : "QPID Config paramaters",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
qpidsteps = [
|
||||
{'title': 'Creating QPID Manifest', 'functions':[createmanifest]}
|
||||
]
|
||||
controller.addSequence("Installing QPID", [], [], qpidsteps)
|
||||
|
||||
def createmanifest():
|
||||
with open(PUPPET_MANIFEST_TEMPLATE) as fp:
|
||||
manifestdata = fp.read()
|
||||
manifestdata = manifestdata%controller.CONF
|
||||
|
||||
if not os.path.exists(PUPPET_MANIFEST_DIR):
|
||||
os.mkdir(PUPPET_MANIFEST_DIR)
|
||||
manifestfile = os.path.join(PUPPET_MANIFEST_DIR, "%s_qpid.pp"%controller.CONF['CONFIG_QPID_HOST'])
|
||||
if manifestfile not in controller.CONF['CONFIG_MANIFESTFILES']:
|
||||
controller.CONF['CONFIG_MANIFESTFILES'].append(manifestfile)
|
||||
|
||||
with open(manifestfile, 'a') as fp:
|
||||
fp.write("\n")
|
||||
fp.write(manifestdata)
|
||||
|
||||
59
plugins/serverprep_901.py
Normal file
59
plugins/serverprep_901.py
Normal file
@@ -0,0 +1,59 @@
|
||||
"""
|
||||
prepare server
|
||||
"""
|
||||
|
||||
import glob
|
||||
import logging
|
||||
import os
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-SERVERPREPARE"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding SERVERPREPARE KEY configuration")
|
||||
conf_params = {"SERVERPREPARE": [
|
||||
]
|
||||
}
|
||||
|
||||
conf_groups = [
|
||||
{ "GROUP_NAME" : "SERVERPREPARE",
|
||||
"DESCRIPTION" : "Server Prepare Configs ",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True},
|
||||
]
|
||||
|
||||
for group in conf_groups:
|
||||
paramList = conf_params[group["GROUP_NAME"]]
|
||||
controller.addGroup(group, paramList)
|
||||
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
preparesteps = [
|
||||
{'title': 'Installing EPEL', 'functions':[installepel]}
|
||||
]
|
||||
controller.addSequence("Prepare Server", [], [], preparesteps)
|
||||
|
||||
|
||||
def installepel():
|
||||
for hostname in utils.gethostlist(controller.CONF):
|
||||
server = utils.ScriptRunner(hostname)
|
||||
|
||||
server.append("rpm -q epel-release-6-7 || rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm")
|
||||
server.append("setenforce 0")
|
||||
server.execute()
|
||||
|
||||
70
plugins/sshkeys_900.py
Normal file
70
plugins/sshkeys_900.py
Normal file
@@ -0,0 +1,70 @@
|
||||
"""
|
||||
Installs and configures ssh keys
|
||||
"""
|
||||
|
||||
import glob
|
||||
import logging
|
||||
import os
|
||||
|
||||
import engine_validators as validate
|
||||
import basedefs
|
||||
import common_utils as utils
|
||||
|
||||
# Controller object will be initialized from main flow
|
||||
controller = None
|
||||
|
||||
# Plugin name
|
||||
PLUGIN_NAME = "OS-SSHKEYS"
|
||||
PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE)
|
||||
|
||||
logging.debug("plugin %s loaded", __name__)
|
||||
|
||||
def initConfig(controllerObject):
|
||||
global controller
|
||||
controller = controllerObject
|
||||
logging.debug("Adding SSH KEY configuration")
|
||||
paramsList = [
|
||||
{"CMD_OPTION" : "ssh-public-key",
|
||||
"USAGE" : "Public key to install on servers",
|
||||
"PROMPT" : "Public key to install on servers",
|
||||
"OPTION_LIST" : glob.glob(os.path.join(os.environ["HOME"], ".ssh/*.pub")),
|
||||
"VALIDATION_FUNC" : validate.validateFile,
|
||||
"DEFAULT_VALUE" : (glob.glob(os.path.join(os.environ["HOME"], ".ssh/*.pub"))+[""])[0],
|
||||
"MASK_INPUT" : False,
|
||||
"LOOSE_VALIDATION": False,
|
||||
"CONF_NAME" : "CONFIG_SSH_KEY",
|
||||
"USE_DEFAULT" : False,
|
||||
"NEED_CONFIRM" : False,
|
||||
"CONDITION" : False },
|
||||
]
|
||||
|
||||
groupDict = { "GROUP_NAME" : "SSHKEY",
|
||||
"DESCRIPTION" : "SSH Configs ",
|
||||
"PRE_CONDITION" : utils.returnYes,
|
||||
"PRE_CONDITION_MATCH" : "yes",
|
||||
"POST_CONDITION" : False,
|
||||
"POST_CONDITION_MATCH" : True}
|
||||
|
||||
controller.addGroup(groupDict, paramsList)
|
||||
|
||||
|
||||
def initSequences(controller):
|
||||
puppetsteps = [
|
||||
{'title': 'Setting Up ssh keys',
|
||||
'functions':[installKeys]}
|
||||
]
|
||||
controller.addSequence("ssh key setup", [], [], puppetsteps)
|
||||
|
||||
def installKeys():
|
||||
|
||||
with open(controller.CONF["CONFIG_SSH_KEY"]) as fp:
|
||||
sshkeydata = fp.read().strip()
|
||||
|
||||
for hostname in utils.gethostlist(controller.CONF):
|
||||
server = utils.ScriptRunner(hostname)
|
||||
|
||||
server.append("mkdir -p ~/.ssh")
|
||||
server.append("grep '%s' ~/.ssh/authorized_keys > /dev/null 2>&1 || echo %s > ~/.ssh/authorized_keys"%(sshkeydata, sshkeydata))
|
||||
server.append("restorecon -r ~/.ssh")
|
||||
server.execute()
|
||||
|
||||
25
puppet/templates/glance.pp
Normal file
25
puppet/templates/glance.pp
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
|
||||
class {"glance::api":
|
||||
auth_host => "%(CONFIG_KEYSTONE_HOST)s",
|
||||
keystone_tenant => "services",
|
||||
keystone_user => "glance",
|
||||
keystone_password => "glance_password",
|
||||
}
|
||||
|
||||
class { 'glance::backend::file': }
|
||||
|
||||
class {"glance::registry":
|
||||
auth_host => "%(CONFIG_KEYSTONE_HOST)s",
|
||||
keystone_tenant => "services",
|
||||
keystone_user => "glance",
|
||||
keystone_password => "glance_password",
|
||||
sql_connection => "mysql://glance:glance_default_password@%(CONFIG_MYSQL_HOST)s/glance"
|
||||
}
|
||||
|
||||
firewall { '001 glance incomming':
|
||||
proto => 'tcp',
|
||||
dport => ['9292'],
|
||||
action => 'accept',
|
||||
}
|
||||
|
||||
45
puppet/templates/keystone.pp
Normal file
45
puppet/templates/keystone.pp
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
class {"keystone":
|
||||
admin_token => "%(CONFIG_KEYSTONE_ADMINTOKEN)s"
|
||||
}
|
||||
|
||||
class {"keystone::config::mysql":
|
||||
host => "%(CONFIG_MYSQL_HOST)s"
|
||||
}
|
||||
|
||||
class {"keystone::roles::admin":
|
||||
email => "test@test.com",
|
||||
password => "%(CONFIG_KEYSTONE_ADMINPASSWD)s",
|
||||
admin_tenant => "admin"
|
||||
}
|
||||
|
||||
class {"openstack::auth_file":
|
||||
admin_password => "%(CONFIG_KEYSTONE_ADMINPASSWD)s",
|
||||
admin_tenant => "admin",
|
||||
keystone_admin_token => $ksadmintoken
|
||||
}
|
||||
|
||||
class {"keystone::endpoint":
|
||||
public_address => "%(CONFIG_KEYSTONE_HOST)s",
|
||||
admin_address => "%(CONFIG_KEYSTONE_HOST)s",
|
||||
internal_address => "%(CONFIG_KEYSTONE_HOST)s",
|
||||
}
|
||||
|
||||
class {"glance::keystone::auth":
|
||||
public_address => "%(CONFIG_GLANCE_HOST)s",
|
||||
admin_address => "%(CONFIG_GLANCE_HOST)s",
|
||||
internal_address => "%(CONFIG_GLANCE_HOST)s",
|
||||
}
|
||||
|
||||
class {"nova::keystone::auth":
|
||||
public_address => "%(CONFIG_NOVAAPI_HOST)s",
|
||||
admin_address => "%(CONFIG_NOVAAPI_HOST)s",
|
||||
internal_address => "%(CONFIG_NOVAAPI_HOST)s",
|
||||
}
|
||||
|
||||
firewall { '001 keystone incomming':
|
||||
proto => 'tcp',
|
||||
dport => ['5000', '35357'],
|
||||
action => 'accept',
|
||||
}
|
||||
|
||||
24
puppet/templates/mysql.pp
Normal file
24
puppet/templates/mysql.pp
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
class {"mysql::server":
|
||||
config_hash => {bind_address => "0.0.0.0"}
|
||||
}
|
||||
|
||||
class {"keystone::db::mysql":
|
||||
allowed_hosts => "%%",
|
||||
}
|
||||
|
||||
class {"glance::db::mysql":
|
||||
allowed_hosts => "%%",
|
||||
password => "glance_default_password",
|
||||
}
|
||||
|
||||
class {"nova::db::mysql":
|
||||
allowed_hosts => "%%",
|
||||
password => "nova_password",
|
||||
}
|
||||
|
||||
firewall { '001 mysql incomming':
|
||||
proto => 'tcp',
|
||||
dport => ['3306'],
|
||||
action => 'accept',
|
||||
}
|
||||
19
puppet/templates/nova_api.pp
Normal file
19
puppet/templates/nova_api.pp
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
require 'keystone::python'
|
||||
class {"nova::api":
|
||||
enabled => true,
|
||||
auth_host => "%(CONFIG_KEYSTONE_HOST)s",
|
||||
admin_password => "nova_password",
|
||||
}
|
||||
|
||||
# the notify in the nova:api class doesn't work, so need to set these ones
|
||||
# TODO : figure this out
|
||||
Package<| title == 'nova-common' |> ~> Exec['initial-db-sync']
|
||||
Package<| title == 'nova-common' |> ~> File['/etc/nova/api-paste.ini']
|
||||
|
||||
|
||||
firewall { '001 novaapi incomming':
|
||||
proto => 'tcp',
|
||||
dport => ['8773', '8774', '8776'],
|
||||
action => 'accept',
|
||||
}
|
||||
4
puppet/templates/nova_cert.pp
Normal file
4
puppet/templates/nova_cert.pp
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
class {"nova::cert":
|
||||
enabled => true,
|
||||
}
|
||||
10
puppet/templates/nova_common.pp
Normal file
10
puppet/templates/nova_common.pp
Normal file
@@ -0,0 +1,10 @@
|
||||
nova_config{
|
||||
"metadata_host": value => "%(CONFIG_NOVAAPI_HOST)s";
|
||||
"qpid_hostname": value => "%(CONFIG_QPID_HOST)s";
|
||||
"rpc_backend": value => "nova.rpc.impl_qpid";
|
||||
}
|
||||
|
||||
class {"nova":
|
||||
glance_api_servers => "%(CONFIG_GLANCE_HOST)s:9292",
|
||||
sql_connection => "mysql://nova:nova_password@%(CONFIG_MYSQL_HOST)s/nova",
|
||||
}
|
||||
26
puppet/templates/nova_compute.pp
Normal file
26
puppet/templates/nova_compute.pp
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
nova_config{
|
||||
#"flat_interface": value => "eth0";
|
||||
"network_host": value => "%(CONFIG_NOVANETWORK_HOST)s";
|
||||
"libvirt_inject_partition": value => "-1";
|
||||
}
|
||||
|
||||
class {"nova::compute":
|
||||
enabled => true,
|
||||
}
|
||||
|
||||
class { 'nova::compute::libvirt':
|
||||
libvirt_type => "%(CONFIG_LIBVIRT_TYPE)s",
|
||||
}
|
||||
|
||||
if "%(CONFIG_LIBVIRT_TYPE)s" == "qemu" {
|
||||
file { "/usr/bin/qemu-system-x86_64":
|
||||
ensure => link,
|
||||
target => "/usr/libexec/qemu-kvm",
|
||||
}
|
||||
}
|
||||
|
||||
class {"vlan":
|
||||
interface => "em1",
|
||||
vlan => "16"
|
||||
}
|
||||
9
puppet/templates/nova_network.pp
Normal file
9
puppet/templates/nova_network.pp
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
class {"nova::network":
|
||||
enabled => true,
|
||||
private_interface => 'eth0',
|
||||
public_interface => 'eth0',
|
||||
fixed_range => '192.168.11.0/24',
|
||||
floating_range => '192.168.13.0/24'
|
||||
}
|
||||
|
||||
3
puppet/templates/nova_sched.pp
Normal file
3
puppet/templates/nova_sched.pp
Normal file
@@ -0,0 +1,3 @@
|
||||
class {"nova::scheduler":
|
||||
enabled => true,
|
||||
}
|
||||
12
puppet/templates/nova_volume.pp
Normal file
12
puppet/templates/nova_volume.pp
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
class {"nova::volume":
|
||||
enabled => true,
|
||||
}
|
||||
|
||||
class {"nova::volume::iscsi":}
|
||||
|
||||
firewall { '001 volume incomming':
|
||||
proto => 'tcp',
|
||||
dport => ['3260'],
|
||||
action => 'accept',
|
||||
}
|
||||
14
puppet/templates/openstack_client.pp
Normal file
14
puppet/templates/openstack_client.pp
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
package {"clientlibs":
|
||||
name => ["python-novaclient", "python-keystoneclient", "openstack-glance"]
|
||||
}
|
||||
|
||||
file {"/root/keystonerc_admin":
|
||||
ensure => "present",
|
||||
content => "export OS_USERNAME=admin
|
||||
export OS_TENANT_NAME=admin
|
||||
export OS_PASSWORD=%(CONFIG_KEYSTONE_ADMINPASSWD)s
|
||||
export OS_AUTH_URL=http://%(CONFIG_KEYSTONE_HOST)s:35357/v2.0/
|
||||
export PS1=\"[\\u@\\h \\W(keystone_admin)]\$ \"
|
||||
"
|
||||
}
|
||||
11
puppet/templates/qpid.pp
Normal file
11
puppet/templates/qpid.pp
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
class {"qpid::server":
|
||||
auth => "no"
|
||||
}
|
||||
|
||||
firewall { '001 qpid incomming':
|
||||
proto => 'tcp',
|
||||
dport => ['5672'],
|
||||
action => 'accept',
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user