Q: "Как переопределить значения в ролях / общих / по умолчанию, используя значения, специфичные для хоста ?"
A: Для staging поместите переменные в каталог
inventories/staging/host_vars
Для production поместите переменные в каталог
inventories/production/host_vars
Например
$ cat inventories/production/hosts
prod-001
prod-002
prod-003
$ cat inventories/production/hosts/host_vars/prod-001
docker_version: "x.y.z"
$ cat inventories/production/hosts/host_vars/prod-002
docker_version: "x.y.z"
$ cat inventories/production/hosts/host_vars/prod-003
docker_version: "x.y.z"
Было бы более эффективно использовать групповые значения . Например,
$ cat inventories/production/hosts
[group_01]
prod-001
prod-002
prod-003
$ cat inventories/production/group_vars/group_01
docker_version: "x.y.z"
или все . Например,
$ cat inventories/production/group_vars/all
docker_version: "x.y.z"
Q: "Есть ли улучшение в структуре, которое можно сделать?"
A: Ваш случай - Альтернативный макет каталога с добычей и подготовкой инвентаря в отдельных каталогах. Необходимо настроить инвентарь . Например,
ansible-playbook -i inventories/staging/hosts site.yml
В этом случае используются переменные инвентаризации в каталогах staging / hosts / host_vars и staging / hosts / group_vars . Это можно протестировать
ansible-inventory -i inventories/staging/hosts --list
Существуют другие опции , а не улучшения в зависимости от ваших вариантов использования.
Примечания
- инвентаризации / group_vars / all бесполезно
- инвентаризации / production / host_vars / all бесполезно (постановка же)