Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać wartości zwracanych jednego zadania w innym zadaniu dla innego hosta w ansible?

Udało mi się rozwiązać mój problem, definiując zmienne dla nowego fikcyjnego hosta a następnie używać go w całym podręczniku z hostvarami .

Podobne rozwiązanie zostało już wspomniane w jednej z odpowiedzi w Jak ustawić rejestrację zmiennej, która będzie utrzymywała się między grami w ansible? Jednak nie zauważyłem tego, dopóki nie opublikowałem tego pytania.

Oto, co zrobiłem w zadaniach ansibla:

  • Utworzyłem fikcyjny host master_value_holder i zdefiniowane wymagane zmienne. (Tu potrzebowałem master_log_file imaster_log_Position )
  • Dostęp do zmiennych przy użyciu hostvars['master_value_holder']['master_log_file']

Zadania na Mistrzu

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

Zadania dla niewolnika

- 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

Wyjście

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 widać z powyższych danych wyjściowych, główny stan replikacji jest teraz dostępny dla obu hostów.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skonfigurować Tomcata do połączenia z MySQL?

  2. Konwersja PHP z MySql do arkusza kalkulacyjnego Excel Autosize Columns

  3. Magento Mass Import obrazów za pomocą MAGMI - obrazy wyłączone

  4. Nie można pobrać klucza podstawowego identyfikatora niestandardowego po metodzie Laravel save()

  5. Składnia MySQL i wydajność OR