Вот сам плейбук.
- hosts: 10.1.9.53
vars:
MySQL_root_pass: вашпарольдляmysql
tasks:
- name: Set MySQL root password before installing
debconf: name='mysql-server' question='mysql-server/root_password' value='{{MySQL_root_pass | quote}}' vtype='password'
- name: Confirm MySQL root password before installing
debconf: name='mysql-server' question='mysql-server/root_password_again' value='{{MySQL_root_pass | quote}}' vtype='password'
- name: Add Percona apt signing key
apt_key: keyserver=keys.gnupg.net id=1C4CBDCDCD2EFD2A state=present
- name: Add Percona repository
apt_repository: repo='deb https://repo.percona.com/apt jessie main' state=present
- name: Add Percona source repository
apt_repository: repo='deb-src https://repo.percona.com/apt jessie main' state=present
- name: Update apt cache
apt: update_cache=yes
- name: Install Percona XtraDB Cluster server
apt: pkg={{ item }}
state=present
with_items:
- percona-xtradb-cluster-full-56
- percona-xtradb-cluster-56
- rsync
- ntp
- ntpdate
- python-mysqldb
- xinetd
- git
- iptables-persistent
- xtrabackup
- percona-toolkit
- name: Open the correct IPTables ports
lineinfile: dest=/etc/iptables/rules.v4
regexp="^-A INPUT -p {{item.protocol}} -m {{item.protocol}} --dport $
line="-A INPUT -p {{item.protocol}} -m {{item.protocol}} --dport {{i$
insertafter="^:OUTPUT ACCEPT \[\d*:\d*\]$"
with_items:
- { protocol: tcp, port: 4567 }
- { protocol: tcp, port: 4568 }
- { protocol: tcp, port: 22 }
- { protocol: tcp, port: 80 }
- { protocol: tcp, port: 3306 }
- { protocol: tcp, port: 464 }
- { protocol: tcp, port: 444 }
- { protocol: udp, port: 4567 }
- { protocol: udp, port: 4568 }
- { protocol: udp, port: 22 }
- { protocol: udp, port: 80 }
- { protocol: udp, port: 3306 }
- { protocol: udp, port: 464 }
- { protocol: udp, port: 444 }
notify:
- restart iptables
- shell: iptables-save >/etc/iptables/rules.v4
- name: add a string to the new file
lineinfile: dest=/etc/fstab
regexp=''
insertafter=EOF
line='tmpfs /var/mysql tmpfs size=8G 0'
- name: Craete Folder /var/mysql
file: path=/var/mysql owner=mysql group=mysql mode=0755 state=directory
- name: Create Folder /var/mysql_m/
file: path=/var/mysql_m owner=mysql group=mysql mode=0755 state=directory
- name: Create Folder /var/mysql_m/log
file: path=/var/mysql_m/log owner=mysql group=mysql mode=0755 state=directory
- name: Create Folder /var/mysql_m/bin
file: path=/var/mysql_m/bin owner=mysql group=mysql mode=0755 state=directory
- name: Create Folder /var/mysql_m/relay
file: path=/var/mysql_m/relay owner=mysql group=mysql mode=0755 state=directory
- shell: mount -a
- name: Create Mysql configuration file
template: src=/etc/ansible/files/percona53.cnf dest=/etc/mysql/my.cnf
notify:
- name: Update mysql root password for all root accounts
mysql_user: name=root host={{ item }} password={{ MySQL_root_pass }}
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
- shell: mount -a
args:
executable: /bin/bash
- name: install xinetd
apt: name=xinetd state=present
- name: install rsync
apt: name=rsync state=present
- name: Copy file clustercheck to host
copy: src=/etc/ansible/files/clustercheck dest=/usr/bin owner=root group=root mode="u+rwx"
- name: Copy file clustercheck to host
copy: src=/etc/ansible/files/mysqlchk dest=/etc/xinetd.d owner=root group=root mode="u+rwx"
- name: add a string to the new file
lineinfile: dest=/etc/services
regexp=''
insertafter=EOF
line='mysqlchk 9200/tcp'
- service: name=xinetd state=stopped
- service: name=xinetd state=started
- service: name=mysql state=stopped
Как мы видим в процессе установке нам понадобиться конфиг , который лежит в каталоге /etc/ansible/files. Скачать его percona-test.cnf здесь и положить в каталог, указанный в playbook’e.