Ansibleのgeerlingguy.mysqlで、CentOS7にMySQL8.0をインストールする

カテゴリ: Ansible

Ansibleのgeerlingguy.mysqlを使って、CentOS7にMySQL8.0をインストースました。

CentOS7の場合、特に何も指定しないとMariaDBがインストールされてしまうので、pre_taskでrpmパッケージの指定といくつかの変数を書き換える必要がありました。

- hosts: db_server
  become: yes

  pre_tasks:
    - name: Install the MySQL repository.
      yum:
        name: http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm
        state: present
      when: ansible_os_family == "RedHat"

    - name: Override variables for MySQL.
      set_fact:
        mysql_daemon: mysqld
        mysql_packages: ['mysql-server']
        mysql_log_error: /var/log/mysqld.err
        mysql_syslog_tag: mysqld
        mysql_pid_file: /var/run/mysqld/mysqld.pid
      when: ansible_os_family == "RedHat" 

  roles:
    - geerlingguy.mysql

書き換えるべき変数は、geerlingguy.mysql/vars/RedHat-7.ymlの中身をみるとある程度予想がつきます。ファイルを見ると、以下のようにmariadbの記載があるので変更を行っています。

  • RedHat-7.yml
---
__mysql_daemon: mariadb
__mysql_packages:
  - mariadb
  - mariadb-server
  - mariadb-libs
  - MySQL-python
  - perl-DBD-MySQL
__mysql_slow_query_log_file: /var/log/mysql-slow.log
__mysql_log_error: /var/log/mariadb/mariadb.log
__mysql_syslog_tag: mariadb
__mysql_pid_file: /var/run/mariadb/mariadb.pid
__mysql_config_file: /etc/my.cnf
__mysql_config_include_dir: /etc/my.cnf.d
__mysql_socket: /var/lib/mysql/mysql.sock
__mysql_supports_innodb_large_prefix: true

また上記に加えて、今回のインストールではgeerlingguy.mysqlに定義されたsecure-installationを自動で行いたくなかったため、下記の行をコメントアウトしました。
- roles/geerlingguy.mysql/tasks/main.yml

# Configure MySQL.
- include_tasks: configure.yml
#- include_tasks: secure-installation.yml
- include_tasks: databases.yml
- include_tasks: users.yml
- include_tasks: replication.yml

インストールが終わると、rootの初期パスワードがmysqlのログファイルに出力されるので控えておきます。

$ sudo more /var/log/mysqld.err  | grep password
2018-11-25T12:39:05.133203Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: abc12d/?yhN?=

コマンドmysql -u root -pでmysqlサーバに接続し、控えたパスワードを入力すればMySQLへ接続できます。

$ mysql  -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.13

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。