def install_hook(): execd_preinstall() utils.configure_source() utils.install(*packages) update_config_block('DEFAULT', public_port=cluster.determine_api_port(config["service-port"])) update_config_block('DEFAULT', admin_port=cluster.determine_api_port(config["admin-port"])) set_admin_token(config['admin-token']) # set all backends to use sql+sqlite, if they are not already by default update_config_block('sql', connection='sqlite:////var/lib/keystone/keystone.db') update_config_block('identity', driver='keystone.identity.backends.sql.Identity') update_config_block('catalog', driver='keystone.catalog.backends.sql.Catalog') update_config_block('token', driver='keystone.token.backends.sql.Token') update_config_block('ec2', driver='keystone.contrib.ec2.backends.sql.Ec2') utils.stop('keystone') execute("keystone-manage db_sync") utils.start('keystone') # ensure user + permissions for peer relations that # may be syncing data there via SSH_USER. unison.ensure_user(user=SSH_USER, group='keystone') execute("chmod -R g+wrx /var/lib/keystone/") time.sleep(5) ensure_initial_admin(config)
def upgrade_charm(): # Ensure all required packages are installed utils.install(*packages) cluster_changed() if cluster.eligible_leader(CLUSTER_RES): utils.juju_log('INFO', 'Cluster leader - ensuring endpoint configuration' ' is up to date') ensure_initial_admin(config)
def install(): pre_install_hooks() utils.install(*rabbit.PACKAGES) os.system("wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.4/rabbitmq-server_3.2.4-1_all.deb") os.system("dpkg -i rabbitmq-server_3.2.4-1_all.deb") os.system("mkdir /etc/rabbitmq/rabbitmq.conf.d") rabbit.enable_plugin("rabbitmq_management") utils.restart('rabbitmq-server') utils.expose(15672) utils.expose(5672) os.system("wget localhost:15672/cli/rabbitmqadmin") os.system("chmod +x ./rabbitmqadmin") os.system("mv rabbitmqadmin /usr/bin/") os.system("rabbitmqadmin declare exchange name=stormExchange type=topic") # ensure user + permissions for peer relations that # may be syncing data there via SSH_USER. unison.ensure_user(user=rabbit.SSH_USER, group=rabbit.RABBIT_USER) ensure_unison_rabbit_permissions()
def install(): pre_install_hooks() utils.install(*rabbit.PACKAGES) os.system( "wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.4/rabbitmq-server_3.2.4-1_all.deb" ) os.system("dpkg -i rabbitmq-server_3.2.4-1_all.deb") os.system("mkdir /etc/rabbitmq/rabbitmq.conf.d") rabbit.enable_plugin("rabbitmq_management") utils.restart('rabbitmq-server') utils.expose(15672) utils.expose(5672) os.system("wget localhost:15672/cli/rabbitmqadmin") os.system("chmod +x ./rabbitmqadmin") os.system("mv rabbitmqadmin /usr/bin/") os.system("rabbitmqadmin declare exchange name=stormExchange type=topic") # ensure user + permissions for peer relations that # may be syncing data there via SSH_USER. unison.ensure_user(user=rabbit.SSH_USER, group=rabbit.RABBIT_USER) ensure_unison_rabbit_permissions()
def install(): ceph_dir = "/etc/ceph" if not os.path.isdir(ceph_dir): os.mkdir(ceph_dir) utils.install('ceph-common')
def enable_https(port_maps, namespace, cert, key, ca_cert=None): ''' For a given number of port mappings, configures apache2 HTTPs local reverse proxying using certficates and keys provided in either configuration data (preferred) or relation data. Assumes ports are not in use (calling charm should ensure that). port_maps: dict: external to internal port mappings namespace: str: name of charm ''' def _write_if_changed(path, new_content): content = None if os.path.exists(path): with open(path, 'r') as f: content = f.read().strip() if content != new_content: with open(path, 'w') as f: f.write(new_content) return True else: return False juju_log('INFO', "Enabling HTTPS for port mappings: {}".format(port_maps)) http_restart = False if cert: cert = b64decode(cert) if key: key = b64decode(key) if ca_cert: ca_cert = b64decode(ca_cert) if not cert and not key: juju_log('ERROR', "Expected but could not find SSL certificate data, not " "configuring HTTPS!") return False install('apache2') if RELOAD_CHECK in subprocess.check_output(['a2enmod', 'ssl', 'proxy', 'proxy_http']): http_restart = True ssl_dir = os.path.join('/etc/apache2/ssl', namespace) if not os.path.exists(ssl_dir): os.makedirs(ssl_dir) if (_write_if_changed(os.path.join(ssl_dir, 'cert'), cert)): http_restart = True if (_write_if_changed(os.path.join(ssl_dir, 'key'), key)): http_restart = True os.chmod(os.path.join(ssl_dir, 'key'), 0600) install_ca_cert(ca_cert) sites_dir = '/etc/apache2/sites-available' for ext_port, int_port in port_maps.items(): juju_log('INFO', 'Creating apache2 reverse proxy vhost' ' for {}:{}'.format(ext_port, int_port)) site = "{}_{}".format(namespace, ext_port) site_path = os.path.join(sites_dir, site) with open(site_path, 'w') as fsite: context = { "ext": ext_port, "int": int_port, "namespace": namespace, "private_address": get_host_ip() } fsite.write(render_template(SITE_TEMPLATE, context)) if RELOAD_CHECK in subprocess.check_output(['a2ensite', site]): http_restart = True if http_restart: restart('apache2') return True
def install(): pre_install_hooks() utils.install(*rabbit.PACKAGES) utils.expose(5672)