Ik heb mijn probleem kunnen oplossen door de variabelen te definiëren voor een nieuwe dummy-host en het vervolgens in het hele playbook te gebruiken met hostvars .
Een vergelijkbare oplossing werd al genoemd in een van de antwoorden in Hoe stel ik een registervariabele in om te blijven bestaan tussen spelen in ansible? Ik merkte het echter pas toen ik deze vraag plaatste.
Dit is wat ik deed in de ansible-taken:
- Ik heb een dummy-host gemaakt master_value_holder en gedefinieerde vereiste variabelen. (Hier had ik master_log_file nodig enmaster_log_Postion )
- Toegang tot de variabelen met hostvars['master_value_holder']['master_log_file']
Taken op 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 }}"
Taken voor slaaf
- 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
Uitvoer
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]
Zoals je aan de bovenstaande uitvoer kunt zien, is de masterreplicatiestatus nu beschikbaar voor beide hosts.