编写一名称为 mariadb.sh 的 shell 脚本,该脚本具有完成 mariadb 数据库的初始化功能(要求数据库用户名为 root,密码为 123456),通过 ansible 对应模块执行 mariadb.sh 完成对 mysql 主机组下的所有节点进行数据库初始化
时间: 2024-09-13 19:04:07 浏览: 66
要在Ansible中编写一个名为`mariadb.sh`的shell脚本来初始化MariaDB数据库,并利用ansible的mysql模块对主机组下的所有节点进行操作,首先需要创建一个基本的shell脚本,然后在Ansible playbook中引用它。这里是一个简单的shell脚本示例(假设在`/path/to/mariadb.sh`文件中):
```bash
#!/bin/bash
# mariadb.sh
# 初始化数据库配置
MYSQL_ROOT_USER="root"
MYSQL_ROOT_PASSWORD="123456"
# 初始化MariaDB服务器
mysql -p${MYSQL_ROOT_PASSWORD} < /path/to/mysql_initialization.sql
```
在这个脚本中,我们设置了root用户的密码并准备执行SQL脚本(假设`/path/to/mysql_initialization.sql`包含了初始设置和表结构等)。
接下来,在Ansible playbook中,你可以使用`command`模块运行这个shell脚本,如下所示:
```yaml
---
- name: Initialize MariaDB on all nodes
hosts: mysql_cluster
become: yes
vars:
mysql_root_password: "123456"
tasks:
- name: Execute MariaDB initialization script
command: /path/to/mariadb.sh
args:
chdir: /path/to/
creates: /path/to/mariadb_initialization.sql.out
environment:
MYSQL_ROOT_PASSWORD: "{{ mysql_root_password }}"
```
在这个playbook中,我们指定了主机组`mysql_cluster`,确保有权限执行命令(`become: yes`)。`args`部分用于指定脚本执行的目录以及记录输出文件。`environment`变量用于传递shell环境变量到执行的命令。
阅读全文