Ansible 동적 인벤토리 JSON에서 호스트 이름을 기반으로 호스트 변수를 "렌더링"할 수 있습니까?

Ansible 동적 인벤토리 JSON에서 호스트 이름을 기반으로 호스트 변수를 "렌더링"할 수 있습니까?

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
        }
}

관련 정보