通过 maxscale 在 mariadb 上创建数据库的 Ansible 剧本
Ansible playbook to create database on mariadb via maxscale
我有一个由 maxscale 管理的 3 节点 mariadb 集群 (P-S-S)。我创建的以下剧本可以通过直接连接到我的 mariadb Primary 来创建数据库(我在我的清单中传递了我的 mariadb Primary ip)。但我想连接到我的 maxscale 并在我的 mariadb 主节点上创建数据库。我试图在我的清单中传递 maxscale ip,希望它能连接到 maxscale 并在我的主节点上创建数据库,但它一直失败。
---
- hosts: mysql
become: yes
vars:
mysql_root_password: test_password
tasks:
- name: create new database
mysql_db:
name: ansible_db
state: present
login_user: test_user
login_password: "{{ mysql_root_password }}"
login_unix_socket: /var/lib/mysql/mysql.sock
我的库存:
[mysql]
10.XXX.XX.XXX ansible_user=ssh_user ansible_pass=ssh_passwd ansible_become=yes ansible_become_method=su
尝试通过 maxscale 创建时出错:
Exception message: (2003, \"Can't connect to MySQL server on 'localhost' ([Errno 2] No such file or directory)\")
我们必须在 Maxscale 服务器中使用连接到 Mariadb 的连接字符串是:
mysql -u<db_user> -p<db_password> -h<ip of maxscale server> -P<port no of readwrite split listener>
这可以使用 mysql_db
模块在 ansible 中复制:
---
- hosts: mysql
vars:
mysql_root_password: <db_password>
tasks:
- name: create new database
mysql_db:
login_user: <db_user_name>
login_password: "{{ mysql_root_password }}"
login_host: <ip of maxscale server>
login_port: <port no of readwrite split listener>
name: <database name>
state: present
delegate_to: <ip of maxscale server>
我有一个由 maxscale 管理的 3 节点 mariadb 集群 (P-S-S)。我创建的以下剧本可以通过直接连接到我的 mariadb Primary 来创建数据库(我在我的清单中传递了我的 mariadb Primary ip)。但我想连接到我的 maxscale 并在我的 mariadb 主节点上创建数据库。我试图在我的清单中传递 maxscale ip,希望它能连接到 maxscale 并在我的主节点上创建数据库,但它一直失败。
---
- hosts: mysql
become: yes
vars:
mysql_root_password: test_password
tasks:
- name: create new database
mysql_db:
name: ansible_db
state: present
login_user: test_user
login_password: "{{ mysql_root_password }}"
login_unix_socket: /var/lib/mysql/mysql.sock
我的库存:
[mysql]
10.XXX.XX.XXX ansible_user=ssh_user ansible_pass=ssh_passwd ansible_become=yes ansible_become_method=su
尝试通过 maxscale 创建时出错:
Exception message: (2003, \"Can't connect to MySQL server on 'localhost' ([Errno 2] No such file or directory)\")
我们必须在 Maxscale 服务器中使用连接到 Mariadb 的连接字符串是:
mysql -u<db_user> -p<db_password> -h<ip of maxscale server> -P<port no of readwrite split listener>
这可以使用 mysql_db
模块在 ansible 中复制:
---
- hosts: mysql
vars:
mysql_root_password: <db_password>
tasks:
- name: create new database
mysql_db:
login_user: <db_user_name>
login_password: "{{ mysql_root_password }}"
login_host: <ip of maxscale server>
login_port: <port no of readwrite split listener>
name: <database name>
state: present
delegate_to: <ip of maxscale server>