通过 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>