Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2018/01/27 (Sat)

CentOS7.4にMySQL5.6をAnsibleでインストール

|  CentOS7.4にMySQL5.6をAnsibleでインストール - ひとり開発日記。 を含むブックマーク はてなブックマーク -  CentOS7.4にMySQL5.6をAnsibleでインストール - ひとり開発日記。

はいな、これ*12018年版です。

当然、あれから年月を経て、色々便利になっているのですよね。

  • CentOSは7がメインになった
  • Vagrantでup/reload時にプロビジョニング出来るようになった
  • MySQLは、5.6はほとんど枯れた存在になった*2

またひとり開発をやりたいな、って思った時、手持ちのWindows7機で、Vagrant/Virtualbox/CentOS7/MySQL5.6を使って、ローカル開発環境を作ろうかと思ったら、思いの外大変だったので、以下に記します。


環境

C:\workspace\vagrant>dir /b
my.cnf.j2
playbook.yml
Vagrantfile
  • Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.define "server_db" do |node|
    node.vm.box = "centos/7"
    node.vm.network "private_network", ip:"192.168.33.12"
    node.vm.synced_folder ".", "/vagrant"
  end

  config.vm.provision "ansible_local" do |ansible|
    ansible.playbook = "playbook.yml"
  end

  config.vm.provider "virtualbox" do |v|
    v.gui = true
  end

end
  • playbook.yml
- hosts: all
  remote_user: vagrant
  become: yes
  vars:
    mysql_root_password: rootpassword1
    mysql_user_password: dbpassword1
    mysql_user_name: dbuser
    mysql_db: sampledb

  tasks:
    - name: yum update all
      yum: name=* state=latest

    - name: install MySQL-python/libselinux-python/yum-utils
      yum: name="{{ item }}" state=present
      with_items:
        - MySQL-python
        - libselinux-python
        - yum-utils

    - name: add MySQL Yum Repository
      yum:
        name: https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
        state: present
   
    - name: disable mysql57-community
      command: yum-config-manager --disable mysql57-community

    - name: enable mysql56-community
      command: yum-config-manager --enable mysql56-community
 
    - name: install MySQL
      yum: name="{{ item }}" state=present
      with_items:
        - mysql-community-server
        - mysql-community-client
        - mysql-community-common
        - mysql-community-libs

    - name: /root/.my.cnf by template
      template: src=my.cnf.j2 dest=/root/.my.cnf owner=root group=root mode=0600

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

    - name: root password changed
      mysql_user: name=root password={{ mysql_root_password }} host_all=yes check_implicit_admin=yes

    - name: dbuser created
      mysql_user: name={{ mysql_user_name }} password={{ mysql_user_password }} host={{ item }} priv=*.*:ALL,GRANT state=present
      with_items:
        - localhost
        - '%'

    - name: create mysql database
      mysql_db: name={{ mysql_db }} state=present
  • my.conf.j2
[client]
user=root
password={{ mysql_root_password }}

以下、ハマりどころ

*1g:program:id:halflite:20151014:provisioning_mysql_server

*2:それ故に知見が貯まって、ハマりにくく、調べればすぐ解が見つかる

トラックバック - http://program.g.hatena.ne.jp/halflite/20180127