MySQL 通过使用Ansible编写一个可重复使用且不会影响已经安装的MySQL的MySQL安装Playbook


<!–

–>

MySQL 通过使用Ansible编写一个可重复使用且不会影响已经安装的MySQL的MySQL安装Playbook

如果您是一名 DBA或开发人员,那么您肯定熟悉使用Ansible和。Ansible是一个自动化工具,而MySQL则是一种流行的关系型数据库。在本文中,我们将通过使用Ansible编写一个可重复使用且不会影响已经安装的MySQL的MySQL安装Playbook。

阅读更多:

开始

首先,我们需要确保Ansible已安装在我们的系统中。然后,我们需要在我们的Ansible主机上安装MySQL仓库。这可以通过以下Playbook完成:

(adsbygoogle = window.adsbygoogle || []).push({});

---
- name: Install MySQL Repo
  hosts: mysql
  become: yes
  tasks:
    - name: Install dependencies
      yum:
        name: "{{ item }}"
        state: present
      with_items:
        - epel-release
        - https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

安装MySQL

接下来,我们需要编写一个Ansible MySQL安装Playbook,该Playbook在干净的CentOS 7实例上安装MySQL。

---
- name: Install MySQL
  hosts: mysql
  become: yes
  vars:
    mysql_admin_password: "mysqladminpassword"
    mysql_root_password: "mysqlrootpassword"
  tasks:
    - name: Install MySQL Server
      yum:
        name: mysql-community-server
        state: present
    - name: Start MySQL Service
      service:
        name: mysqld
        state: started
    - name: Set MySQL root password
      mysql_user:
        name: root
        password: "{{ mysql_root_password }}"
        login_user: root
        login_password: ""
        login_unix_socket: /var/run/mysqld/mysqld.sock
        host_all: yes
        check_implicit_admin: yes
    - name: Secure MySQL Installation
      mysql_secure_installation:
        login_password: "{{ mysql_root_password }}"
        login_user: root
        mysqladmin: /usr/bin/mysqladmin
        default_file: /etc/my.cnf
        validate_certs: False
        change_root_password: False
        remove_anonymous_users: True
        disallow_root_login_remotely: True
        remove_test_database: True
        create_test_database: False
    - name: Create MySQL Admin User
      mysql_user:
        name: admin
        host: "{{ item }}"
        password: "{{ mysql_admin_password }}"
        login_user: root
        login_password: "{{ mysql_root_password }}"
        state: present
      with_items:
        - '127.0.0.1'
        - '::1'
        - 'localhost'
    - name: Set MySQL Remote Access
      mysql_user:
        name: admin
        host: '%'
        password: "{{ mysql_admin_password }}"
        login_user: root
        login_password: "{{ mysql_root_password }}"
        state: present
    - name: Reload MySQL Service
      service:
        name: mysqld
        state: reloaded

使用Playbook

要运行此Playbook,请使用以下命令:

ansible-playbook -i inventory.ini mysql.yml

使用您自己的MySQL管理员和根密码更改“mysql_root_password”和“mysql_admin_password”变量。

总结

在本文中,我们成功编写了一个可以自动化安装MySQL并可以多次使用而不影响先前安装的MySQL的Ansible Playbook。尽管这只是一个简单的示例,但这个概念可以扩展到更复杂的Playbook中,以管理大型MySQL部署。