Exemplo n.º 1
0
Arquivo: unit.py Projeto: Tout/china
def add_to_haproxy(unit, host, iid):
    while True:
        # add it to the chef config
        output = knife_environment_show(unit.env_name)
        if util.is_noop():
            temp = "debug-knife-file.json"
            iid2privipv4(iid)
        else:
            data = json.loads(output)

            block = 'haproxy-' + unit.unit_name
            region_context = unit.region_context
            host = util.env_prefix(region_context)+unit.env_name+"-"+unit.unit_name+"-"+iid+"."+ region_context.region_config['unit_domain']
            ip = iid2privipv4(iid)

            # print("looking for override/haproxy/"+block+"/servers/ to add host:"+host)
            data['override_attributes']['haproxy'][block]["servers"].append([host, ip])

            temp = util.write_temp_file(json.dumps(data), suffix=".json")

        util.execute_shell(["knife", "environment", "from", "file", temp])

        # verify host is now in output
        output = knife_environment_show(unit.env_name)
        print >> sys.stderr, "looking for host="+host+" in output: "+str(output)
        if util.is_noop():
            return

        if host in output:
            return
        else:
            time.sleep(10)
Exemplo n.º 2
0
Arquivo: ec2.py Projeto: Tout/china
def authorize_icmp (from_addr, to_addr, icmp_types, account, region_name):
    util.execute_shell([ 'ec2-authorize', from_addr,
                         '--region', region_name,
                         '-P', 'icmp',
                         '-t', icmp_types,
                         '-u', account,
                         '-o', to_addr])
Exemplo n.º 3
0
Arquivo: ec2.py Projeto: Tout/china
def authorize_normal (from_addr, to_addr, port, protocol, account, region_name):
    # If it doesn't look like an IP address, then it's a group
    if util.is_cidr(to_addr):
        util.execute_shell([ 'ec2-authorize', from_addr,
                             '--region', region_name,
                             '-P', protocol,
                             '-p', str(port),
                             '-s', to_addr])
    else:
        util.execute_shell([ 'ec2-authorize', from_addr,
                             '--region', region_name,
                             '-P', protocol,
                             '-p', str(port),
                             '-u', account,
                             '-o', to_addr])
Exemplo n.º 4
0
    def execute(self):
        # Ejecutar un comando shell del sistema operativo

        Comandos.log.info('Execute shell command')

        (output, err) = util.execute_shell(util.join_list(' ', self.command))
        print(output)

        Comandos.log.info('Execute shell command finished')
Exemplo n.º 5
0
    def execute(self):
        # Ejecutar el comando mmls sobre un fichero

        Comandos.log.info('Execute mmls')

        destination_file = self.destination_folder + os.sep + util.get_basename(
            self.file_name)
        command = ['mmls']
        command.append(destination_file)
        (output, err) = util.execute_shell(util.join_list(' ', command))
        print(output)

        Comandos.log.info('Mmls finished')
Exemplo n.º 6
0
Arquivo: unit.py Projeto: Tout/china
def bootstrap(unit, host, iid):
    node_name = unit.group_name + "-" + iid
    region_config = unit.region_context.region_config
    # print ">>>>>bootstrap: region_context.region_config="+str(region_config)
    knife_args = ["knife", "bootstrap", host,
                  "--run-list", "role["+unit.role_name+"]",
                  "--node-name", node_name,
                  "--ssh-user", "ubuntu",
                  "-i", util.subst_homedir(region_config['KEY_DIR']) +"/"+region_config['keypair']+".pem",
                  "--sudo", "--no-host-key-verify",
                  "--environment", unit.env_name]
    util.execute_shell(knife_args)

    util.execute_shell(["ec2-create-tags", iid, "--tag", "Name=" + node_name])
    util.execute_shell(["create-cname", node_name+".unit", host+".", "86400"])

    if POST_BOOTSTRAP in unit.config:
        add_to_haproxy(unit, host, iid)
        for type in ['sg', 'asg', 'tag']:
            key = 'refresh_' + type + '_hosts'
            if key in unit.config[POST_BOOTSTRAP]:
                for group in util.to_list(unit.config[POST_BOOTSTRAP][key]):
                    util.execute_shell(["ssh-"+type+"-hosts", group, "sudo", "chef-client"])
Exemplo n.º 7
0
Arquivo: unit.py Projeto: Tout/china
def run_instance(unit, instance_number):

    config = unit.config

    region_config = unit.region_context.region_config
    region_name = unit.region_context.region

    args = ["ec2-run-instances", unit.get_ami(),
            "--instance-initiated-shutdown-behavior", "terminate",
            "--region", region_config['EC2_REGION'],
            "-g", unit.env_group_name,
            "-g", unit.group_name]

    if 'extra_groups' in config:
        for group in util.to_list(config['extra_groups']):
            args.append("-g")
            args.append(group)

    args += [ "-t", unit.get_instance_size(), "-k", unit.get_keypair() ]

    data = unit.get_user_data()
    if data is not None:
        data_file = util.write_temp_file("run_"+unit.unit_name+"_"+unit.role_name+"_userdata_", suffix=".json")
        args += [ "-f", data_file ]

    azone = unit.get_availability_zone()
    if azone is not None:
        args += [ "-z", azone]

    elif 'default_availability_zone' in region_config:
        args += [ "-z", region_config['default_availability_zone'] ]

    output = util.execute_shell(args)
    if util.is_noop():
        iid = "i-debug"
    else:
        iid = util.find_element_on_line_starting_with(output[0], "INSTANCE", 1)
    return iid
Exemplo n.º 8
0
Arquivo: unit.py Projeto: Tout/china
def add_instance(unit, instance_number, iid):
    host = None
    while True:
        host = str(util.execute_shell(["iid2hn", iid])[0]).strip()
	print host
        if util.is_noop():
            host = 'debug.host.example.com'

        # print "iid2hn returned "+host
        if host != "pending" and len(host) > 10 and len(host) < 100:
            break
        time.sleep(5)

    # "waiting for $HOST ssh to come up"
    while True:
        rval = util.execute_shell_returncode(["nc", "-z", host, "22"])
        if rval != 0:
            time.sleep(5)
        else:
            # "$HOST ready for use"
            break

    bootstrap(unit, host, iid)
Exemplo n.º 9
0
Arquivo: unit.py Projeto: Tout/china
def knife_environment_show(env_name):
    return util.execute_shell(["knife", "environment", "show", "-F", "json", env_name])[0]
Exemplo n.º 10
0
Arquivo: unit.py Projeto: Tout/china
def iid2privipv4(iid):
    output = util.execute_shell(["iid2privipv4", iid])
    return output[0].strip()
Exemplo n.º 11
0
Arquivo: ec2.py Projeto: Tout/china
def create_group (group_name, description, region_name):
    util.execute_shell([ 'ec2-create-group',  group_name,
                         '-d', description,
                         '--region', region_name ])