Ansible 문서는 예제를 제공합니다.여기JSON 형식으로 재고를 반품하는 방법:
{
"databases" : {
"hosts" : [ "host1.example.com", "host2.example.com" ],
"vars" : {
"a" : true
}
},
"webservers" : [ "host2.example.com", "host3.example.com" ],
"atlanta" : {
"hosts" : [ "host1.example.com", "host4.example.com", "host5.example.com" ],
"vars" : {
"b" : false
},
"children": [ "marietta", "5points" ]
},
"marietta" : [ "host6.example.com" ],
"5points" : [ "host7.example.com" ]
}
아래에 추가하려면 다음을 사용하여 단일 호스트에 대한 호스트 변수를 설정할 수 있습니다.
{
# results of inventory script as above go here
# ...
"_meta" : {
"hostvars" : {
"moocow.example.com" : { "asdf" : 1234 },
"llama.example.com" : { "asdf" : 5678 },
}
}
}
이제 저는 Ansible 1.9.1을 사용하고 있으며 호스트 변수나 단일 호스트를 사용하고 싶습니다. 그러나 일부 호스트 변수는 특정 패턴을 따릅니다. 가장 눈에 띄는 패턴은 와일드카드가 짧은 호스트 이름으로 대체되는 ansible_ssh_host
패턴을 따릅니다 .*.mydomain.tld
Jinja2 템플릿으로 렌더링될 스키마를 제공하여 JSON을 단축하는 방법이 있습니까? 위 예의 일부를 조정합니다.
{
"atlanta" : {
"hosts" : [ "host1", "host4", "host5" ],
"vars" : {
"ansible_ssh_host" : "{{hostname}}.example.com",
"b" : false
}
}
아무것좋다Ansible에서 예상하는 형식이 가능합니까? 이것을 언급하는 문서를 찾지 못했습니다.
답변1
당신은 그것을 사용할 수 있습니다inventory_hostname
매직 변수이 경우.
{
"atlanta" : {
"hosts" : [ "host1", "host4", "host5" ],
"vars" : {
"ansible_ssh_host" : "{{inventory_hostname}}.example.com",
"b" : false
}
}