Podařilo se mi vyřešit můj problém definováním proměnných do nového fiktivního hostitele a poté jej použít v příručce s hostvars .
Podobné řešení již bylo zmíněno v jedné z odpovědí v Jak nastavím registraci proměnné tak, aby mezi přehráními v ansible přetrvávala? Nevšiml jsem si toho, dokud jsem neposlal tuto otázku.
Zde je to, co jsem udělal v ansible úlohách:
- Vytvořil jsem fiktivního hostitele master_value_holder a definovat požadované proměnné. (Zde jsem potřeboval master_log_file amaster_log_Postion )
- Přístup k proměnným pomocí hostvars['master_value_holder']['master_log_file']
Úkoly na Master
- name: Mysql - Check master replication status.
mysql_replication: mode=getmaster
register: master
- name: "Add master return values to a dummy host"
add_host:
name: "master_value_holder"
master_log_file: "{{ master.File }}"
master_log_pos: "{{ master.Position }}"
Úkoly pro Slave
- name: Mysql - Displaying master replication status
debug: msg="Master Bin Log File is {{ hostvars['master_value_holder']['master_log_file'] }} and Master Bin Log Position is {{ hostvars['master_value_holder']['master_log_pos'] }}"
- name: Mysql - Configure replication on the slave.
mysql_replication:
mode: changemaster
master_host: "{{ replication_master }}"
master_user: "{{ replication_user }}"
master_password: "{{ replication_pass }}"
master_log_file: "{{ hostvars['master_value_holder']['master_log_file'] }}"
master_log_pos: "{{ hostvars['master_value_holder']['master_log_pos'] }}"
when: ansible_eth0.ipv4.address != replication_master and not slave.Slave_SQL_Running
Výstup
TASK [Mysql_Base : Mysql - Check master replication status.] ****************
skipping: [stagmysql02]
ok: [stagmysql01]
TASK [AZ-Mysql_Base : Add master return values to a dummy host] ****************
changed: [stagmysql01]
TASK [AZ-Mysql_Base : Mysql - Displaying master replication status] ************
ok: [stagmysql01] => {
"msg": "Master Bin Log File is mysql-bin.000001 and Master Bin Log Position is 154"
}
ok: [stagmysql02] => {
"msg": "Master Bin Log File is mysql-bin.000001 and Master Bin Log Position is 154"
}
TASK [AZ-Mysql_Base : Mysql - Configure replication on the slave.] *************
skipping: [stagmysql01]
skipping: [stagmysql02]
Jak můžete vidět z výše uvedeného výstupu, stav hlavní replikace je nyní dostupný pro oba hostitele.