使用 Ansible 安装 MySQL 可以通过以下几个步骤完成:
-
创建 Ansible playbook:使用 YAML 格式编写 Ansible playbook,指定安装 MySQL 的主机、安装时需要的变量等。
-
定义 MySQL 安装的角色:Ansible 将任务分为不同的角色,定义 MySQL 安装的角色包括下载安装包、安装 MySQL、配置 MySQL 环境、启动 MySQL 等操作。
-
运行 Ansible playbook:在目标主机上运行 Ansible playbook,Ansible 将自动完成 MySQL 的安装及配置。
以下是一个简单的 Ansible playbook,用于安装 MySQL:
---
- name: Install MySQL
hosts: db_servers
become: true
vars:
mysql_root_password: my_password
roles:
- { role: mysql }
在上面的 playbook 中,定义了一个名为 Install MySQL 的任务,使用了 mysql 角色。其中,变量 mysql_root_password 用于指定 MySQL 的 root 用户密码。在安装 mysql 角色时,Ansible 将自动下载 MySQL 安装包、安装 MySQL、配置 MySQL 环境和启动 MySQL。
以下是 mysql 角色的定义:
---
- name: Download MySQL
get_url:
url: "http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm"
dest: "{{ ansible_env.HOME }}/mysql57-community-release-el7-9.noarch.rpm"
- name: Install MySQL
yum:
name: "{{ ansible_env.HOME }}/mysql57-community-release-el7-9.noarch.rpm"
state: present
- name: Install MySQL Server
yum:
name: mysql-community-server
state: present
- name: Configure MySQL
template:
src: my.cnf.j2
dest: /etc/my.cnf
notify: Restart mysql
- name: Start MySQL
service:
name: mysqld
state: started
enabled: yes
- name: Set MySQL Root Password
mysql_user:
name: root
password: "{{ mysql_root_password }}"
update_password: on_create
- name: Reload MySQL
service:
name: mysqld
state: reloaded
在上面的 mysql 角色中,包含以下任务:
-
Download MySQL:从 MySQL 官网下载 MySQL 安装包。
-
Install MySQL:使用 yum 安装 MySQL。
-
Install MySQL Server:使用 yum 安装 MySQL 服务端。
-
Configure MySQL:使用模板文件配置 MySQL,指定 MySQL 端口、字符集等参数。
-
Start MySQL:启动 MySQL 服务。
-
Set MySQL Root Password:设置 MySQL 的 root 用户密码。
-
Reload MySQL:重新加载 MySQL 配置文件,使配置生效。
最后,在目标主机上运行 Ansible playbook,通过以下命令实现:
ansible-playbook -i inventory.ini playbook.yml
其中,inventory.ini 指定了目标主机的 IP 地址及 SSH 登录信息,playbook.yml 指定了需要运行的 Ansible playbook。
通过以上步骤,即可使用 Ansible 安装配置 MySQL。