从清单文件中的组中提取服务器IP

时间:2016-08-05 16:25:18

标签: ansible

我有以下inventory文件:

[group_01]
g01_h01         ansible_ssh_host='10.1.0.1'
g01_h01         ansible_ssh_host='10.1.0.2'

[group_02]
g02_h01         ansible_ssh_host='10.2.0.1'
g02_h01         ansible_ssh_host='10.2.0.2'

[group_03:children]
group_01
group_02

[group_03:vars]
fst_group2={{groups['group_02'][0]}}
snd_group1={{groups['group_01'][1]}}

我希望我的playbook变量中包含以下值:

fst_group2=10.2.0.1
snd_group1=10.1.0.2

相反,我得到:

fst_group2=g02_h01
snd_group1=g01_h02

任何想法,解决方法?

1 个答案:

答案 0 :(得分:0)

确实非常奇怪的任务......无论如何,

private static final Logger log = LoggerFactory.getLogger(Application.class); public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override public void run(String... args) throws Exception { try{ RestTemplate restTemplate = new RestTemplate(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders = this.createHeaders(); ResponseEntity<String> response; response = restTemplate.exchange("<url>",HttpMethod.GET,new HttpEntity<Object>(httpHeaders),String.class); log.info(response.toString()); } catch(Exception e) { System.out.println("Exception"+e); } } private HttpHeaders createHeaders(){ HttpHeaders headers = new HttpHeaders(){ { set( "Authorization", "3ee140"); } }; return headers; } 变量 - 是一个主机列表,包括groupsg01_h01等。
为了实现您的期望,您可以使用:

g01_h02

请注意,[group_03:vars] fst_group2={{hostvars[groups['group_02'][0]]['ansible_ssh_host']}} snd_group1={{hostvars[groups['group_01'][1]]['ansible_ssh_host']}} 已被弃用,而不是ansible_ssh_host