forked from HPC/HPCplaybooks
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| import argparse
 | |
| import json
 | |
| import sys
 | |
| 
 | |
| 
 | |
| def get_hosts(hosts_file='/etc/hosts'):
 | |
|     '''
 | |
|     Get the hostsnames from /etc/hosts.
 | |
|     Returns: A set of hostnames.
 | |
|     '''
 | |
|     rv = []
 | |
|     with open(hosts_file, 'r') as f:
 | |
|         for line in f:
 | |
|             if line == '\n':
 | |
|                 continue
 | |
|             if line[0] == '#':
 | |
|                 continue
 | |
|             rv.append(line.split()[1])
 | |
|     rv = set(rv)
 | |
|     ignore = {'localhost', 'ip6-allnodes', 'ip6-allrouters'}
 | |
|     return rv.difference(ignore)
 | |
| 
 | |
| 
 | |
| def get_args(args_list):
 | |
|     """
 | |
|     Parse the arguments and make sure only
 | |
|     that --list or --host is given, not both.
 | |
|     """
 | |
|     parser = argparse.ArgumentParser(
 | |
|         description='ansible inventory script parsing /etc/hosts')
 | |
|     mutex_group = parser.add_mutually_exclusive_group(required=True)
 | |
|     help_list = 'list all hosts from /etc/hosts'
 | |
|     mutex_group.add_argument('--list', action='store_true', help=help_list)
 | |
|     help_host = 'display variables for a host'
 | |
|     mutex_group.add_argument('--host', help=help_host)
 | |
|     return parser.parse_args(args_list)
 | |
| 
 | |
| 
 | |
| def main(args_list):
 | |
|     """
 | |
|     Print a json list of the hosts if --list is given.
 | |
|     Does not support host vars.
 | |
|     Print an empty dictionary if --host is passed to remain valid.
 | |
|     """
 | |
|     args = get_args(args_list)
 | |
|     if args.list:
 | |
|         print(json.dumps({
 | |
|             'all': {
 | |
|                 'hosts': list(get_hosts()),
 | |
|             }
 | |
|         }))
 | |
|     if args.host:
 | |
|         print(json.dumps({}))
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main(sys.argv[1:])
 |