sql >> Databasteknik >  >> RDS >> Mysql

Hur man använder returvärden för en uppgift i en annan uppgift för en annan värd i ansible

Jag kunde lösa mitt problem genom att definiera variablerna till en ny dummy-värd och sedan använda den i spelboken med hostvars .

Liknande lösning nämndes redan i ett av svaren i Hur ställer jag in register på en variabel så att den består mellan spelningar i ansible? Men jag märkte det inte förrän jag postade den här frågan.

Här är vad jag gjorde i de möjliga uppgifterna:

  • Jag har skapat en dummy-värd master_value_holder och definierade de erforderliga variablerna. (Här behövde jag master_log_file ochmaster_log_Postion )
  • Åtkomst till variablerna med hostvars['master_value_holder']['master_log_file']

Tasks on 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 }}"

Tasks for 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

Utdata

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]

Som du kan se från ovanstående utdata är huvudreplikeringsstatusen tillgänglig för båda värdarna nu.




  1. analysera resultat i MySQL via REGEX

  2. Transaktionsloggövervakning

  3. mysql JOIN, hur tolkas detta?

  4. Konvertera en IP till en Long i MySQL