def hook_config_changed(self): local_cfg = self.local_config # Apache site files must end with .conf for a2ensite to work site_file = self.name_slug + ".conf" self.info(u'Configure Apache 2') self.template2config(local_cfg.site_template_file, join(local_cfg.sites_available_path, site_file), { u'directory': local_cfg.site_directory, u'domain': self.public_address }) self.cmd(u'a2dissite 000-default') self.cmd(u'a2ensite {0}'.format(site_file)) self.info(u'Configure CodeIgniter the PHP framework') self.storage_remount() self.api_register() infos = object2dict(self.config, include_properties=True) infos.update(object2dict(local_cfg, include_properties=True)) infos[u'proxy_ips'] = self.proxy_ips_string infos[u'medias_uri'] = local_cfg.storage_uri(path=MEDIAS_PATH) or u'' infos[u'uploads_uri'] = local_cfg.storage_uri(path=UPLOADS_PATH) or u'' self.template2config(local_cfg.general_template_file, local_cfg.general_config_file, infos) self.template2config(local_cfg.database_template_file, local_cfg.database_config_file, infos) self.template2config(local_cfg.htaccess_template_file, local_cfg.htaccess_config_file, infos) if self.storage_is_mounted: self.info(u'Symlink shared storage for the web daemon') try_symlink(local_cfg.storage_medias_path(), local_cfg.medias_path) try_symlink(local_cfg.storage_uploads_path, local_cfg.uploads_path)
def hook_config_changed(self): local_cfg = self.local_config self.info("Configure Apache 2") self.template2config( local_cfg.site_template_file, join(local_cfg.sites_available_path, self.name_slug), {"directory": local_cfg.site_directory, "domain": self.public_address}, ) self.cmd("a2dissite default") self.cmd("a2ensite {0}".format(self.name_slug)) self.info("Configure CodeIgniter the PHP framework") self.storage_remount() self.api_register() infos = object2dict(self.config, include_properties=True) infos.update(object2dict(local_cfg, include_properties=True)) infos["proxy_ips"] = self.proxy_ips_string infos["medias_uri"] = local_cfg.storage_uri(path=MEDIAS_PATH) or "" infos["uploads_uri"] = local_cfg.storage_uri(path=UPLOADS_PATH) or "" self.template2config(local_cfg.general_template_file, local_cfg.general_config_file, infos) self.template2config(local_cfg.database_template_file, local_cfg.database_config_file, infos) self.template2config(local_cfg.htaccess_template_file, local_cfg.htaccess_config_file, infos) if self.storage_is_mounted: self.info("Symlink shared storage for the web daemon") try_symlink(local_cfg.storage_medias_path(), local_cfg.medias_path) try_symlink(local_cfg.storage_uploads_path, local_cfg.uploads_path)
def hook_config_changed(self): cfg, local_cfg = self.config, self.local_config # Apache site files must end with .conf for a2ensite to work site_file = self.name_slug + ".conf" self.info(u'Start MongoDB and RabbitMQ daemons') self.cmd(u'service mongodb start', fail=False) self.cmd(u'service rabbitmq-server start', fail=False) self.info(u'Configure JuJu Service Orchestrator') juju_config_path = dirname(local_cfg.juju_config_file) rsync(local_cfg.juju_template_path, juju_config_path, **self.rsync_kwargs) chown(juju_config_path, DAEMON_USER, DAEMON_GROUP, recursive=True) self.info(u'Configure Secure Shell') rsync(local_cfg.ssh_template_path, local_cfg.ssh_config_path, **self.rsync_kwargs) chown(local_cfg.ssh_config_path, DAEMON_USER, DAEMON_GROUP, recursive=True) self.info(u'Configure Apache 2') self.template2config(local_cfg.htaccess_template_file, local_cfg.htaccess_config_file, {}) self.template2config(local_cfg.site_template_file, join(local_cfg.sites_available_path, site_file), { u'alias': self.api_alias, u'directory': local_cfg.site_directory, u'domain': self.public_address, u'wsgi': local_cfg.api_wsgi }) self.cmd(u'a2dissite 000-default') self.cmd(u'a2ensite {0}'.format(site_file)) self.info(u'Configure MongoDB Scalable NoSQL DB') with open(u'f.js', u'w', u'utf-8') as mongo_f: mongo_f.write(u"db.addUser('admin', '{0}', false);".format(cfg.mongo_admin_password)) with open(u'g.js', u'w', u'utf-8') as mongo_g: mongo_g.write(u"db.addUser('node', '{0}', false);".format(cfg.mongo_node_password)) self.cmd(u'mongo f.js') self.cmd(u'mongo orchestra f.js') self.cmd(u'mongo celery g.js') [os.remove(f) for f in (u'f.js', u'g.js')] mongo_config = ConfigObj(local_cfg.mongo_config_file) mongo_config[u'bind_ip'] = u'0.0.0.0' mongo_config[u'noauth'] = u'false' mongo_config[u'auth'] = u'true' mongo_config.write() self.configure_rabbitmq() if cfg.plugit_api_url: self.info(u'Configure PlugIt server') infos = { u'api_url': cfg.plugit_api_url, u'debug': cfg.verbose, u'base_url': cfg.plugit_base_url, u'allowed_networks': u'", "'.join(cfg.plugit_allowed_networks.split(u',')) } self.template2config(local_cfg.plugit_template_file, local_cfg.plugit_config_file, infos) self.info(u'Configure Orchestra the Orchestrator') local_cfg.verbose = cfg.verbose local_cfg.api_url = self.api_url(local=False) local_cfg.charms_release = cfg.charms_release local_cfg.node_secret = cfg.node_secret local_cfg.root_secret = cfg.root_secret local_cfg.mongo_admin_connection = self.mongo_admin_connection local_cfg.mongo_node_connection = self.mongo_node_connection local_cfg.rabbit_connection = self.rabbit_connection infos = { u'rabbit': unicode(self.rabbit_connection), u'port': unicode(27017), u'username': u'node', u'password': unicode(cfg.mongo_node_password), } self.template2config(local_cfg.celery_template_file, local_cfg.celery_config_file, infos) local_cfg.email_server = cfg.email_server local_cfg.email_tls = cfg.email_tls local_cfg.email_address = cfg.email_address local_cfg.email_username = cfg.email_username local_cfg.email_password = cfg.email_password local_cfg.plugit_api_url = cfg.plugit_api_url self.remark(u'Orchestrator successfully configured') self.info(u'Symlink charms default directory to directory for release {0}'.format(cfg.charms_release)) try_symlink(abspath(local_cfg.charms_default_path), abspath(local_cfg.charms_release_path)) self.info(u'Ensure that the Apache sites directory is owned by the right user') chown(local_cfg.sites_directory, DAEMON_USER, DAEMON_GROUP, recursive=True) self.info(u'Configure Cronjob') self.template2config(local_cfg.cronjob_template_file, '/etc/cron.d/cron_enco', {}) self.storage_remount()