Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sử dụng các giá trị trả về của một tác vụ trong một tác vụ khác cho một máy chủ lưu trữ khác trong ansible

Tôi đã có thể giải quyết vấn đề của mình bằng cách xác định các biến cho một máy chủ giả mới và sau đó sử dụng nó trên playbook với hostvars .

Giải pháp tương tự đã được đề cập trong một trong các câu trả lời trong Làm cách nào để đặt biến đăng ký để duy trì giữa các lần phát ở chế độ ansible? Tuy nhiên, tôi đã không nhận thấy điều đó cho đến khi tôi đăng câu hỏi này.

Đây là những gì tôi đã làm trong các nhiệm vụ có thể kiểm soát được:

  • Tôi đã tạo một máy chủ giả master_value_holder và xác định các biến cần thiết. (Ở đây tôi cần master_log_file master_log_Postion )
  • Đã truy cập các biến bằng hostvars ['master_value_holder'] ['master_log_file']

Nhiệm vụ trên 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 }}"

Nhiệm vụ dành cho nô lệ

- 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

Đầu ra

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]

Như bạn có thể thấy từ đầu ra ở trên rằng trạng thái sao chép chính hiện có sẵn cho cả hai máy chủ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel SQLSTATE [23000]:Vi phạm ràng buộc toàn vẹn:1452 Không thể thêm hoặc cập nhật một hàng con

  2. chèn dữ liệu bằng Trình kết nối mysql trong python

  3. MySQL kết hợp hai cột và thêm vào một cột mới

  4. Tra cứu người dùng trên các trường cơ sở dữ liệu được mã hóa

  5. tôi đã tạo mảng trong PHP 5.6 với [] trong PHP 7.1 gây ra lỗi nghiêm trọng