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()
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)