Ansible 변수 범위 충돌

Ansible 변수 범위 충돌

나는안시푸르설정은 이렇게 생겼어요

inventories/
    sandbox1
    group_vars/
       all
       sandbox1
pb/
    pb1/
        run_pb1.yml

캐릭터나 기타 등등도 있는데 이 정도면 제가 해야 할 일의 요지를 파악하기에는 충분하다고 생각합니다.

변수가 있어요부자나는 그것을 정의했다인벤토리/그룹_vars/모두그리고인벤토리/group_vars/sandbox1

이제 내 문제는 내가 전화할 때마다

ansible-playbook -i inventories/sandbox1 pb/pb1/run_pb1.yml

연극의 실행 가치는부자 포함 된인벤토리/그룹_vars/모두...즉, foo는 다음에서 검색되지 않습니다.인벤토리/group_vars/sandbox1

이것이 인벤토리별 변수를 구현하는 올바른 방법입니까? 변수 변경과 같은 간단한 작업에 대해 여러 개의 플레이북을 생성하는 것을 피하고 싶습니다. 즉, "all" 파일에서 이와 같은 작업을 수행하고 싶지 않습니다.

default_foo: bar
sandbox1_foo: baz

참조하는 변수를 제외하고는 동일한 여러 플레이북이 있습니다.

내가 요청한 것을 수행할 수 있는 방법이 있나요?

답변1

호스트 변수는 그룹 변수를 대체합니다(참조:문서) 하지만 /host_vars디렉터리에 정의해야 합니다. 예를 들어 다음 설정을 사용하십시오.

.
├── group_vars
│   └── all.yml # foo: var_from_all
├── hosts
├── host_vars
│   └── host1.yml # foo: var_from_host1
└── test.yml

당신은 얻을 것이다:

$ ansible-playbook -i hosts test.yml 

PLAY [host1,host2] *************************************************************

TASK [debug] *******************************************************************
ok: [host1] => {
    "foo": "var_from_host1"
}
ok: [host2] => {
    "foo": "var_from_all"
}

관련 정보