मैं चर को एक नए डमी होस्ट . में परिभाषित करके अपनी समस्या का समाधान करने में सक्षम था और फिर hostvars . के साथ प्लेबुक में इसका उपयोग करना ।
इसी तरह के समाधान का उल्लेख मैं एक वेरिएबल रजिस्टर कैसे सेट कर सकता हूं जो एन्सिबल में नाटकों के बीच बना रहे? हालाँकि मैंने इस पर तब तक ध्यान नहीं दिया जब तक मैंने यह प्रश्न पोस्ट नहीं किया।
उत्तरदायी कार्यों में मैंने जो किया वह यहां दिया गया है:
- मैंने एक डमी होस्ट बनाया है master_value_holder और परिभाषित आवश्यक चर। (यहाँ मुझे चाहिए master_log_file औरमास्टर_लॉग_पोस्टियन )
- वेरिएबल को hostvars['master_value_holder']['master_log_file'] का इस्तेमाल करके एक्सेस किया
मास्टर पर कार्य
- 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 }}"
दास के लिए कार्य
- 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
आउटपुट
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]
जैसा कि आप उपरोक्त आउटपुट से देख सकते हैं कि मास्टर प्रतिकृति स्थिति अब दोनों मेजबानों के लिए उपलब्ध है।