コード例 #1
0
 def destroy(self):
     Static.figletcyber("DESTROY CLUSTER")
     if self.settings.provision.cloud == "aws":
         self.kops.destroy_cluster()
     elif self.settings.provision.cloud == "minikube":
         self.minikube.delete()
     else:
         Static.msg_bold("No such provisioner specified in config", self.settings.provision.cloud)
         raise SystemExit(32)
コード例 #2
0
ファイル: elements.py プロジェクト: aland-zhang/cli-1
    def kubectl_install_elements(self, stage):
        name = "ELEMENTS"
        Static.figletcyber('{0} {1}'.format(name, stage.upper()))

        self.CmdKubectl.get_master_ip()
        self.CmdKubectl.get_ingress_ips()

        for element in self.settings.elements[stage]:
            self.create_stage(element)
コード例 #3
0
 def mini_hostname(self):
     Static.figletcyber("HOSTNAME")
     if self.minikube.is_minikube_in_hosts():
         # replace, exists
         self.minikube.update_minikube_in_hosts()
     else:
         # append, new
         self.minikube.add_minikube_to_hosts()
     Static.msg("/etc/hosts entry for minikube.local updated to", self.settings.master_ip)
コード例 #4
0
ファイル: cmdkops.py プロジェクト: christinataft/cli
    def destroy_cluster(self):
        name = "DESTROY CLUSTER"
        Static.figletcyber(name)

        cmd = "kops delete cluster --state={0} {1} --yes".format(
            self.settings.provision.s3_store,
            self.settings.provision.domain
        )
        Static.msg(name, "KOPS: aws")
        Cmd.local_run_realtime_continue_on_fail(name, cmd)
コード例 #5
0
 def check_alive(self):
     Static.figletcyber("STATUS")
     # not implemented
     if self.settings.provision.cloud == "aws":
         pass
     elif self.settings.provision.cloud == "minikube":
         pass
     else:
         Static.msg_bold("No such provisioner specified in config", self.settings.provision.cloud)
         raise SystemExit(32)
コード例 #6
0
ファイル: cmdkops.py プロジェクト: christinataft/cli
    def add_instance_group(self, ig):
        name = "ADD INSTANCE GROUP"
        Static.figletcyber(name)

        cmd = "kops create ig {0} --state={1} {2}".format(
            ig.name,
            self.settings.provision.s3_store,
            self.settings.provision.domain
        )
        Static.msg(name, "KOPS: aws")
        Cmd.local_run_long(name, cmd)
コード例 #7
0
 def start(self):
     Static.figletcyber("PROVISIONING")
     if self.settings.provision.cloud == "aws":
         self.kops.create_cluster()
         self.kops.update_settings()
         self.kops.provision_cluster()
     elif self.settings.provision.cloud == "minikube":
         self.minikube.config_vm_virtualbox()
         self.minikube.start()
         self.minikube.confirm_started()
     else:
         Static.msg_bold("No such provisioner specified in config", self.settings.provision.cloud)
         raise SystemExit(32)
コード例 #8
0
ファイル: cmdkops.py プロジェクト: christinataft/cli
    def create_cluster(self):
        name = "CREATE CLUSTER"
        Static.figletcyber(name)

        cmd = "kops create cluster --zones {0} --vpc {1} --dns-zone={2} --state={3} {4}".format(
            self.settings.aws_zone,
            self.settings.provision.vpc_id,
            self.settings.provision.dnszone_id,
            self.settings.provision.s3_store,
            self.settings.provision.domain
        )
        print cmd
        Static.msg(name, "KOPS: aws")
        Cmd.local_run_long(name, cmd)
コード例 #9
0
ファイル: cmdkops.py プロジェクト: christinataft/cli
    def update_cluster(self):
        name = "UPDATE CLUSTER"
        Static.figletcyber(name)

        task = "Rolling Update CLuster"
        cmd = "kops rolling-update cluster {0} --state={1} --yes -v={2} 2>&1".format(
            self.settings.provision.domain,
            self.settings.provision.s3_store,
            self.settings.provision.kops_verbosity
        )
        Static.msg(name, task)
        print cmd
        Cmd.local_run_long(name, cmd)

        self.validate_cluster()
コード例 #10
0
ファイル: cmdkops.py プロジェクト: christinataft/cli
    def provision_cluster(self):
        name = "PROVISION CLUSTER"
        Static.figletcyber(name)

        task = "Provision in Cloud"
        cmd = "kops update cluster {0} --state={1} --yes -v={2} 2>&1".format(
            self.settings.provision.domain,
            self.settings.provision.s3_store,
            self.settings.provision.kops_verbosity
        )
        Static.msg(name, task)
        print cmd
        Cmd.local_run_long(name, cmd)

        self.validate_cluster()
コード例 #11
0
ファイル: madcore.py プロジェクト: christinataft/cli
def main(args=None):
    description = colored(
        "Madcore CLI {0} - (c) 2016-2018 Madcore Ltd <https://madcore.ai>".
        format(get_version()),
        'white',
        attrs=['bold'])
    parser = MyParser(prog="./madcore.py", description=description)
    group = parser.add_mutually_exclusive_group()

    group.add_argument('-p',
                       '--provision',
                       dest="provision",
                       metavar=('CLUSTERFILE'),
                       help='provision based on <cllusterfile>',
                       action='store')
    group.add_argument('-c',
                       '--clusterfile',
                       dest="clusterfile",
                       metavar=('CLUSTERFILE'),
                       help='set default clusterfile to input <clusterfile>',
                       action='store')
    group.add_argument(
        '-i',
        '--init',
        dest="init",
        metavar=('SOURCE_CLUSTERFILE', 'NEW_CLUSTERFILE'),
        nargs=2,
        help=
        'initialize new yaml clusterfile using existing from template folder',
        action='store')
    group.add_argument('--destroy',
                       help='destroy infrastructure',
                       action='store_true')
    group.add_argument('--kops-update',
                       help='kops update',
                       action='store_true')
    group.add_argument('--kops-validate',
                       help='kopds validate',
                       action='store_true')
    group.add_argument('--kubectl-use-context',
                       help='kubectl use context',
                       action='store_true')
    group.add_argument('--mini-hostname',
                       help='set minikube hostname (will sudo)',
                       action='store_true')
    group.add_argument('--get-attr',
                       dest="attr",
                       help='get atribute',
                       action='store')
    group.add_argument('--install-core',
                       help='install core of Madcore',
                       action='store_true')
    group.add_argument('--install-elk',
                       help='install elk',
                       action='store_true')
    group.add_argument('--install-neo4j',
                       help='install neo4j',
                       action='store_true')
    group.add_argument('--install-kafka',
                       help='install apache kafka',
                       action='store_true')
    group.add_argument('--install-flink',
                       help='install apache flink',
                       action='store_true')
    group.add_argument('--install-scrapy',
                       help='install scrapy cluster',
                       action='store_true')
    group.add_argument('--install-scrapyrc',
                       help='install scrapy rc cluster',
                       action='store_true')
    group.add_argument('--install-tron',
                       help='install tron network',
                       action='store_true')
    group.add_argument('--install-storm',
                       help='install storm',
                       action='store_true')
    group.add_argument('--install-keycloak',
                       help='install keycloak',
                       action='store_true')
    group.add_argument('--install-cert-manager',
                       help='install cert manager',
                       action='store_true')
    group.add_argument('--install-postgresql',
                       help='install postgresql',
                       action='store_true')

    args = parser.parse_args()

    if not args.attr:
        print
        print description
        print

    args = parser.parse_args()
    sett = settings.Settings(args)

    if args.provision:
        sett.set_clusterfile()
        sett.save_settings_file()
        sett.load_clusterfile()
        prov = provision.Provision(sett)
        prov.start()
        return

    elif args.clusterfile:
        # switch happens in settings
        sett.set_clusterfile()
        sett.save_settings_file()
        sett.load_clusterfile()
        kc = cmdkubectl.CmdKubectl(sett)
        kc.use_context()
        return

    elif args.init:
        sett.initialize_new_clusterfile()
        kc = cmdkubectl.CmdKubectl(sett)
        kc.get_context()
        return

    # settings for the

    sett.set_clusterfile()
    sett.save_settings_file()
    sett.load_clusterfile()
    sett.set_zone()

    if args.destroy:
        prov = provision.Provision(sett)
        prov.destroy()

    elif args.kops_update:
        kops = cmdkops.CmdKops(sett)
        kops.update_settings()

    elif args.kops_validate:
        kops = cmdkops.CmdKops(sett)
        kops.validate_cluster()

    elif args.install_core:
        el = elements.Elements(sett)
        el.install_elements("core")

    elif args.install_elk:
        el = elements.Elements(sett)
        el.install_elements("elk")

    elif args.install_neo4j:
        el = elements.Elements(sett)
        el.install_elements("neo4j")

    elif args.install_kafka:
        el = elements.Elements(sett)
        el.install_elements("kafka")

    elif args.install_flink:
        el = elements.Elements(sett)
        el.install_elements("flink")

    elif args.install_scrapy:
        el = elements.Elements(sett)
        el.install_elements("scrapy")

    elif args.install_scrapyrc:
        el = elements.Elements(sett)
        el.install_elements("scrapyrc")

    elif args.install_storm:
        el = elements.Elements(sett)
        el.install_elements("storm")

    elif args.install_tron:
        el = elements.Elements(sett)
        el.install_elements("tron")

    elif args.install_keycloak:
        el = elements.Elements(sett)
        el.install_elements("keycloak")

    elif args.install_cert_manager:
        el = elements.Elements(sett)
        el.install_elements("certmanager")

    elif args.install_postgresql:
        el = elements.Elements(sett)
        el.install_elements("postgresql")

    elif args.kubectl_use_context:
        kc = cmdkubectl.CmdKubectl(sett)
        kc.use_context()

    elif args.mini_hostname:
        prov = provision.Provision(sett)
        prov.mini_hostname()

    elif args.attr:

        if args.attr == "domain":
            sys.stdout.write(settings.provision.domain)

    else:
        Static.figletcyber("STATUS")
        kc = cmdkubectl.CmdKubectl(sett)
        kc.get_nodes()
        kc.get_pods()
        kc.get_svc()
        kc.get_ing()
コード例 #12
0
ファイル: cmdkops.py プロジェクト: christinataft/cli
    def update_settings(self):
        name = "UPDATE KOPS SETTINGS"
        Static.figletcyber(name)

        # CLUSTER ====
        task = "Get Kops Cluster settings"
        cmd = "kops get cluster -oyaml --state={0} > {1}/remote.{2}".format(
            self.settings.provision.s3_store,
            self.settings.folder_user_populated,
            self.file_local_cluster)
        Static.msg(name, task)
        Cmd.local_run_long(name, cmd)

        task = "Render Cluster Template"
        Static.msg(name, task)
        self.localtemplate.generate_template(self.file_local_cluster)

        task = "Update Kops Clusters settings"
        cmd = "kops replace -f {0}/{1} --state={2}".format(
            self.settings.folder_user_populated,
            self.file_local_cluster,
            self.settings.provision.s3_store
        )
        Static.msg(name, task)
        Cmd.local_run_long(name, cmd)

        # MASTER ====
        task = "Get Kops Master settings"
        cmd = "kops get ig --name={0} master-{1} -oyaml --state={2} > {3}/remote.{4}".format(
            self.settings.provision.domain,
            self.settings.aws_zone,
            self.settings.provision.s3_store,
            self.settings.folder_user_populated,
            self.file_local_master)
        Static.msg(name, task)
        Cmd.local_run_long(name, cmd)

        task = "Render Master Template"
        Static.msg(name, task)
        self.localtemplate.generate_template(self.file_local_master)

        task = "Update Kops Master settings"
        cmd = "kops replace -f {0}/{1} --state={2}".format(
            self.settings.folder_user_populated,
            self.file_local_master,
            self.settings.provision.s3_store
        )
        Static.msg(name, task)
        Cmd.local_run_long(name, cmd)

        # INSTANCE_GROUPS ====
        for ig in self.settings.provision.instance_groups:
            single_ig = Struct(**ig)
            populated_ig_file = self.get_ig_filename(single_ig.name)

            task = "Get Kops Instance Group {0} settings".format(single_ig.name)
            cmd = "kops get ig --name={0} nodes -oyaml --state={1} > {2}/remote.{3}".format(
                self.settings.provision.domain,
                self.settings.provision.s3_store,
                self.settings.folder_user_populated,
                populated_ig_file)
            Static.msg(name, task)
            Cmd.local_run_long(name, cmd)

            task = "Render Instance Group {0} Template".format(single_ig.name)
            Static.msg(name, task)
            self.localtemplate.generate_template_node(self.file_local_nodes, populated_ig_file, single_ig)

            task = "Update Kops Instance Group {0} settings".format(single_ig.name)
            cmd = "kops replace -f {0}/{1} --state={2} --force".format(
                self.settings.folder_user_populated,
                populated_ig_file,
                self.settings.provision.s3_store
            )
            Static.msg(name, task)
            Cmd.local_run_long(name, cmd)

        print