Я использую Ansible для создания многосерверной среды, в которой находятся два набора серверов баз данных в конфигурации «главный-подчиненный», то есть всего четыре хоста.
Мой файл инвентаря в настоящее время настроен следующим образом:
[dbmaster]
set1-db-master
set2-db-master
[dbslave]
set1-db-slave
set2-db-slave
В книгах игр я обычно использую пункты when
, чтобы различать guish между мастерами и рабами как часть общей установки. Например:
- name: Stop the Slave Database.
command: systemctl stop mysql
when: inventory_hostname in groups['dbslave']
, который отлично подходит для большинства задач. Однако сейчас у меня есть одна конкретная проблема, и я не могу придумать, как правильно ее решить. При настройке конфигурации «ведущий / ведомый» я должен иметь возможность собрать вместе 10 ie соответствующего главного и подчиненного, но их может быть больше одного!
То есть set1-db-slave
должен знать, на какого мастера он должен указывать: set1-db-master
или set2-db-master
.
Я предполагаю, что процесс будет следующим:
- сначала выясните, какую позицию занимает текущий узел в массиве
groups['dbslave']
, и - , затем используйте это для ссылки
groups.dbslave[i]
Но является ли это безопасным предположением относительно позиций массива? И даже тогда я не уверен в синтаксисе для достижения этого.