Ansible mysql_*モジュールは、最初の起動時にエラーを表示します。

Ansible mysql_*モジュールは、最初の起動時にエラーを表示します。

以下は、システムを更新し、mysql-serverをインストールし、バインディングを変更し、「mysql_secure_installation」の手順を実行する必要があるymlファイルです。

---
# tasks file for deploy_db
- name: Update repos
  apt:
    name: "*"
    state: latest
    update_cache: yes

- name: Install mysql
  apt:
    name:
    - mysql-server
    - python-pymysql
    - python-apt
    state: latest

- name: Autostart mysql
  service:
    name: mysql
    enabled: yes

- name: Change mysql default binding
  replace:
    path: /etc/mysql/mysql.conf.d/mysqld.cnf
    regexp: '127.0.0.1'
    replace: '0.0.0.0'

- name: Reboot after initial update
  reboot:

- name: Remove the test database
  mysql_db:
    login_unix_socket: /var/run/mysqld/mysqld.sock
    name: test
    state: absent

- name: Remove anonymous user
  mysql_user:
    login_unix_socket: /var/run/mysqld/mysqld.sock
    name: ''
    state: absent

この yml を初めて使用すると、Ansible にエラーが表示されます。

TASK [deploy_db : Remove the test database] ********************************************************************************************************************
fatal: [db]: FAILED! => {"changed": false, "msg": "The PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) module is required."}

同じファイルを2番目に再生すると、すべてがうまく機能します。

私は何が間違っていましたか? 「テストデータベースの削除」操作に必要な「python-pymysql」は前の手順でインストールされており、再起動するとすべてが機能するはずですが、そうではありません!

答え1

ああ、正しい質問は答えの半分です。 :-) タスクを修正しましたが、今はすべてうまくいきます。

  - name: Install mysql
  apt:
    name:
    - mysql-server
    - python-pymysql
    - python3-pymysql
    - python-apt
    - python3-apt
  state: latest

関連情報