Пример #1
0
    def setup_general(self):
        self.required_option('general-rsa-private-key')
        self.required_option('general-rsa-public-key')

        self.set('general.dont_check_certificates',
                 self.args.general_dont_check_certificates)
        self.set('general.worker_namespace',
                 self.args.general_worker_namespace)
        self.set('general.system_namespace',
                 self.args.general_system_namespace)
        self.set('general.rbac.enabled', not self.args.general_rbac_disabled)
        self.set('general.report_issue_url',
                 self.args.general_report_issue_url)
        self.set('root_url', self.args.root_url)

        Installer.check_file_exists(self.args.general_rsa_private_key)
        Installer.check_file_exists(self.args.general_rsa_public_key)

        secret = {
            "id_rsa": open(self.args.general_rsa_private_key).read(),
            "id_rsa.pub": open(self.args.general_rsa_public_key).read()
        }

        self.create_secret("infrabox-rsa", self.args.general_system_namespace,
                           secret)
Пример #2
0
    def setup_gerrit(self):
        if not self.is_master():
            return

        if not self.args.gerrit_enabled:
            return

        self.required_option('gerrit-hostname')
        self.required_option('gerrit-port')
        self.required_option('gerrit-username')
        self.required_option('gerrit-private-key')

        self.set('gerrit.enabled', True)
        self.set('gerrit.hostname', self.args.gerrit_hostname)
        self.set('gerrit.username', self.args.gerrit_username)
        self.set('gerrit.review.enabled', self.args.gerrit_review_enabled)
        self.set('gerrit.review.tag', self.args.version)
        self.set('gerrit.trigger.tag', self.args.version)
        self.set('gerrit.api.tag', self.args.version)

        Installer.check_file_exists(self.args.gerrit_private_key)

        secret = {"id_rsa": open(self.args.gerrit_private_key).read()}

        self.create_secret("infrabox-gerrit-ssh",
                           self.args.general_system_namespace, secret)
        self.create_secret("infrabox-gerrit-ssh",
                           self.args.general_worker_namespace, secret)
Пример #3
0
    def setup_gerrit(self):
        if not self.args.gerrit_enabled:
            return

        self.required_option('gerrit-hostname')
        self.required_option('gerrit-port')
        self.required_option('gerrit-username')
        self.required_option('gerrit-private-key')

        Installer.check_file_exists(self.args.gerrit_private_key)

        self.config.add('services.gerrit-trigger.image',
                        '%s/gerrit-trigger:%s' % (self.args.docker_registry, self.args.version))
        self.config.append('services.gerrit-trigger.networks', ['infrabox'])

        self.config.append('services.gerrit-trigger.environment', [
            'INFRABOX_SERVICE=gerrit-trigger',
            'INFRABOX_VERSION=%s' % self.args.version
        ])

        self.config.append('services.gerrit-trigger.environment', self.get_gerrit_env())

        gerrit_key = os.path.join(self.args.o, 'gerrit_id_rsa')
        shutil.copyfile(self.args.gerrit_private_key, gerrit_key)
        self.config.append('services.gerrit-trigger.volumes', [
            '%s:/tmp/gerrit/id_rsa' % gerrit_key,
            ])
Пример #4
0
    def setup_postgres(self):
        if not self.is_master():
            self.set('storage.migration.enabled', False)
        self.required_option('database')
        args = self.args

        if self.args.database == 'postgres':
            self.required_option('postgres-host')
            self.required_option('postgres-port')
            self.required_option('postgres-username')
            self.required_option('postgres-password')
            self.required_option('postgres-database')
            self.set('storage.postgres.enabled', True)
            self.set('storage.postgres.host', args.postgres_host)
            self.set('storage.postgres.port', args.postgres_port)
            self.set('storage.postgres.db', args.postgres_database)
            self.set('storage.cloudsql.enabled', False)

            secret = {
                "username": args.postgres_username,
                "password": args.postgres_password
            }

            self.create_secret("infrabox-postgres",
                               self.args.general_system_namespace, secret)
        elif args.database == 'cloudsql':
            self.required_option('cloudsql-instance-connection-name')
            self.required_option('cloudsql-proxy-service-account-key-file')
            self.required_option('cloudsql-proxy-username')
            self.required_option('cloudsql-proxy-password')
            self.required_option('postgres-database')

            Installer.check_file_exists(
                args.cloudsql_proxy_service_account_key_file)

            self.set('storage.postgres.enabled', False)
            self.set('storage.postgres.host', "localhost")
            self.set('storage.postgres.port', 5432)
            self.set('storage.postgres.db', args.postgres_database)
            self.set('storage.cloudsql.instance_connection_name',
                     args.cloudsql_instance_connection_name)
            self.set('storage.cloudsql.enabled', True)

            secret = {
                "username": args.cloudsql_proxy_username,
                "password": args.cloudsql_proxy_password
            }

            self.create_secret("infrabox-postgres",
                               self.args.general_system_namespace, secret)

            with open(args.cloudsql_proxy_service_account_key_file) as keyfile:
                secret = {"credentials.json": keyfile.read()}

                self.create_secret("infrabox-cloudsql-instance-credentials",
                                   self.args.general_system_namespace, secret)

        else:
            raise Exception('unknown database type')
Пример #5
0
    def setup_storage(self):
        self.required_option('storage')
        args = self.args

        if args.storage == 's3':
            self.required_option('s3-access-key')
            self.required_option('s3-secret-key')
            self.required_option('s3-region')
            self.required_option('s3-endpoint')
            self.required_option('s3-port')
            self.required_option('s3-bucket')

            self.set('storage.gcs.enabled', False)
            self.set('storage.s3.enabled', True)
            self.set('storage.s3.region', args.s3_region)
            self.set('storage.s3.endpoint', args.s3_endpoint)
            self.set('storage.s3.bucket', args.s3_bucket)
            self.set('storage.s3.port', args.s3_port)
            self.set('storage.s3.secure', args.s3_secure == 'true')

            secret = {
                "secretKey": args.s3_secret_key,
                "accessKey": args.s3_access_key
            }

            self.create_secret("infrabox-s3-credentials",
                               self.args.general_system_namespace, secret)
        elif args.storage == 'gcs':
            self.required_option('gcs-service-account-key-file')
            self.required_option('gcs-bucket')

            Installer.check_file_exists(args.gcs_service_account_key_file)

            self.set('storage.s3.enabled', False)
            self.set('storage.gcs.enabled', True)
            self.set('storage.gcs.bucket', args.gcs_bucket)

            with open(args.gcs_service_account_key_file) as keyfile:
                secret = {"gcs_service_account.json": keyfile.read()}

                self.create_secret("infrabox-gcs",
                                   self.args.general_system_namespace, secret)
        else:
            raise Exception("unknown storage")