Ich konnte mein Problem lösen, indem ich die Variablen auf einen neuen Dummy-Host definierte und es dann im gesamten Playbook mit hostvars zu verwenden .
Eine ähnliche Lösung wurde bereits in einer der Antworten in Wie setze ich das Register einer Variablen so, dass sie zwischen den Plays in Ansible bestehen bleibt? Ich habe es jedoch nicht bemerkt, bis ich diese Frage gepostet habe.
Folgendes habe ich in den Ansible-Aufgaben gemacht:
- Ich habe einen Dummy-Host master_value_holder erstellt und die erforderlichen Variablen definiert. (Hier brauchte ich master_log_file undmaster_log_Position )
- Zugriff auf die Variablen mit hostvars['master_value_holder']['master_log_file']
Aufgaben am Meister
- 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 }}"
Aufgaben für Sklaven
- 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
Ausgabe
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]
Wie Sie der obigen Ausgabe entnehmen können, ist der Master-Replikationsstatus jetzt für beide Hosts verfügbar.