ansible mysql5.7

冪等性のあるansibleを書きました。

今回はcentos7のymlです。 (vagrant bento/centos-7.2) centos6の場合はget mysql repoの部分のurlを6用に変更するだけで動くはず。

varsに

tmp: /tmp
mysql_root_passwd: MysqlPasswd123@#<

とか設定しておくか直接修正してください。

---

- name: install libselinux-python
  yum: name=libselinux-python

- name: selinux desabled
  selinux: state=disabled

- name: yum remove mariadb-libs
  yum: name=mariadb-libs state=absent

- name: get mysql repo
  get_url: url=http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm dest={{ tmp }}/mysql57-community-release-el7-7.noarch.rpm

- name: yum install mysql repo
  yum: name={{ tmp }}/mysql57-community-release-el7-7.noarch.rpm

- name: yum install mysql-community-server
  yum: name=mysql-community-server

- name: yum install MySQL-python
  yum: name=MySQL-python

- name: service start mysql
  service: name=mysqld enabled=yes state=started

- name: first root password
  shell: cat /var/log/mysqld.log | grep password | awk '{ print $NF }' | head -n 1
  register: mysql_passwd

- name: check mysql root password
  command: mysqlshow -uroot -p'{{ mysql_passwd.stdout }}'
  register: root_check
  ignore_errors: True

- name: set mysql root password
  command: mysql --connect-expired-password -uroot -p'{{ mysql_passwd.stdout }}' -e "set password for root@'localhost' = PASSWORD('{{ mysql_root_passwd }}')"
  when: root_check.stderr.find('denied') == -1

changedは1つ、check mysql root passwordだけです。 (selinux desabledの後にrebootしないとchangedでるかも)

commonとかのroleでlibselinux-pythonとかselinuxとかやってない場合を考えて 一応最初に入れておきました。 mariadb-libsはさくらのvpsの場合、もともと入っていたので削除しました。