나는안시푸르설정은 이렇게 생겼어요
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"
}