使用ansible实现host02和host03上mysql的批量部署
时间: 2025-07-25 17:37:12 AIGC 浏览: 16
<think>我们使用Ansible Playbook来实现MySQL在host02和host03上的批量部署。假设目标主机分组为[dbservers],包含host02和host03。
步骤:
1. 编写playbook,定义目标主机组为dbservers。
2. 安装MySQL服务器软件(这里以CentOS系统为例,使用yum安装mysql-server)。
3. 启动MySQL服务并设置开机自启。
4. 配置MySQL(可选,如设置root密码、创建数据库等)。
注意:实际部署中需要根据操作系统选择不同的软件包(如Ubuntu使用mysql-server,而CentOS 7使用mariadb-server等)以及配置安全设置。
以下是一个基础示例playbook(deploy_mysql.yml):</think>### 使用Ansible在host02和host03上批量部署MySQL
#### 完整Playbook示例(保存为`deploy_mysql.yml`):
```yaml
---
- name: 在dbservers分组部署MySQL
hosts: dbservers # 目标主机组
become: yes # 使用sudo权限
vars:
mysql_root_password: "SecurePass123!" # 实际使用时替换为安全密码
mysql_version: "8.0" # 指定MySQL版本
tasks:
# 安装MySQL服务器
- name: 安装MySQL服务器
ansible.builtin.yum:
name:
- mysql-community-server
- mysql-community-client
state: present
when: ansible_os_family == "RedHat"
# 启动MySQL服务
- name: 启动并启用MySQL服务
ansible.builtin.service:
name: mysqld
state: started
enabled: yes
# 安全初始化(首次运行)
- name: 执行MySQL安全初始化
ansible.builtin.shell: |
temp_pass=$(sudo grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
mysql -u root -p"$temp_pass" --connect-expired-password -e \
"ALTER USER 'root'@'localhost' IDENTIFIED BY '{{ mysql_root_password }}'; FLUSH PRIVILEGES;"
args:
executable: /bin/bash
register: init_result
changed_when: "'ERROR' not in init_result.stderr"
failed_when: false # 忽略可能的临时密码错误
# 创建配置文件
- name: 配置MySQL
ansible.builtin.template:
src: my.cnf.j2
dest: /etc/my.cnf
notify: 重启MySQL
handlers:
- name: 重启MySQL
ansible.builtin.service:
name: mysqld
state: restarted
```
#### 配套配置文件模板(`templates/my.cnf.j2`):
```ini
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
# 安全配置
skip-name-resolve
local-infile=0
# 性能优化
innodb_buffer_pool_size = 1G
max_connections = 500
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
```
#### 执行步骤:
1. **准备环境**:
```bash
# 创建必要目录
mkdir -p playbooks/templates
```
2. **运行Playbook**:
```bash
ansible-playbook -i /etc/ansible/hosts deploy_mysql.yml
```
3. **验证部署**:
```bash
ansible dbservers -a "mysql -V"
ansible dbservers -a "systemctl status mysqld"
```
#### 关键注意事项:
1. **安全加固**:
- 使用`ansible-vault`加密`mysql_root_password`
- 部署后执行`mysql_secure_installation`等效任务
2. **多平台支持**:
```yaml
- name: Ubuntu系统安装
apt:
name:
- mysql-server
- mysql-client
state: present
when: ansible_os_family == "Debian"
```
3. **生产环境增强**:
- 添加防火墙规则
- 配置数据库备份任务
- 设置监控和告警
阅读全文
相关推荐




















