Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвате върнати стойности на една задача в друга задача за различен хост в ansible

Успях да реша проблема си, като дефинирах променливите към нов фактичен хост и след това да го използвате в книгата с hostvars .

Подобно решение вече беше споменато в един от отговорите в Как да настроя регистър на променлива да се запази между възпроизвежданията в ansible? Въпреки това не го забелязах, докато не публикувах този въпрос.

Ето какво направих в задачите на ansible:

  • Създадох фиктивен хост master_value_holder и дефинира необходимите променливи. (Тук ми трябваше master_log_file иглавен_дневник )
  • Достъп до променливите с помощта на hostvars['master_value_holder']['master_log_file']

Задачи на 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 }}"

Задачи за 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

Изход

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]

Както можете да видите от горния изход, състоянието на главната репликация е достъпно и за двата хоста сега.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Синтаксис на SQL INSERT – изброен от СУБД

  2. Laravel / Eloquent:вложено WhereHas

  3. Вземете пътя на дървото в MySQL таблицата

  4. Laravel 5:Нарушение на ограничението за интегритет:1452 Не може да се добави или актуализира дъщерен ред:ограничение на външния ключ е неуспешно

  5. Как да коригирате неправилна стойност на низ в MySQL