Exemple #1
0
def deactivate_nodes(cf_conn, stackname):
    ec2_conn = AWS.get_ec2_connection()

    pm_instance = utils.get_puppetmaster_instance(ec2_conn)

    if pm_instance is None:
        return

    puppetmaster_ip = pm_instance.ip_address
    print "Deactivating nodes on puppetmaster (%s)" % puppetmaster_ip

    instance_ids = set()
    resources = cf_conn.list_stack_resources(stack_name_or_id=stackname)
    for r in resources:
        if r.resource_type == "AWS::EC2::Instance":
            instance_ids.add(r.physical_resource_id)

    password = fetch_secrets("secrets/hcs-root")

    ssh_conn = SSHable(puppetmaster_ip)
    ssh_conn.connect()

    for i in ec2_conn.get_only_instances():
        if i.id in instance_ids:
            hostname = i.tags["Name"]
            print "Deactivating node: " + hostname
            streams = ssh_conn.ssh(
                "echo {0} | sudo -S puppet node clean {1}; echo {0} | sudo -S puppet node deactivate {1}".format(
                    password, hostname
                )
            )
            print streams[1].read()

    ssh_conn.disconnect()
Exemple #2
0
def print_servers():
    Row = namedtuple("Row", ["Name", "PrivateIP", "PublicIP", "Subnet", "State"])
    rows = []
    for instance in AWS.get_ec2_connection().get_only_instances():
        data = Row(
            Name=instance.tags["Name"],
            PrivateIP=instance.private_ip_address,
            PublicIP=instance.ip_address,
            Subnet=instance.subnet_id,
            State=instance.state,
        )
        rows.append(data)
    pprinttable(rows)