Ansible抱怨说;MySQL python模块是必需的;

Ansible抱怨说;MySQL python模块是必需的;,ansible,ansible-2.x,Ansible,Ansible 2.x,我在本地机器(WSL;Ubuntu)上安装了Ansible 2.6.1: 我的目标机器正在运行Ubuntu 16.04-LTS 我正在使用此任务安装python3 mysqldb: - name: "Debian | Install Mysql Client package" apt: name: "{{ item }}" state: present with_items: - mysql-client - python3-dev

我在本地机器(WSL;Ubuntu)上安装了Ansible 2.6.1:

我的目标机器正在运行Ubuntu 16.04-LTS

我正在使用此任务安装python3 mysqldb:

 - name: "Debian | Install Mysql Client package"
   apt:
     name: "{{ item }}"
     state: present
   with_items:
     - mysql-client
     - python3-dev
     - libmysqlclient-dev
     - python3-mysqldb
   when:
     - zabbix_server_database == 'mysql'
   tags:
     - zabbix-server
     - init
     - database
此任务失败:

- name: "MySQL | Create database and import file >= 3.0"
  mysql_db:
    name: "{{ zabbix_server_dbname }}"
    encoding: "{{ zabbix_server_dbencoding }}"
    collation: "{{ zabbix_server_dbcollation }}"
    state: import
    target: "{{ ls_output_create.stdout }}"
  when:
    - zabbix_version is version_compare('3.0', '>=')
    - zabbix_database_sqlload
    - not done_file.stat.exists
  delegate_to: "{{ delegated_dbhost }}"
  tags:
    - zabbix-server
    - database
下面是失败消息:

fatal: [target_host -> target_host-db]: FAILED! => {"changed": false, "msg": "The MySQL-python module is required."}
我可以确认python3 mysqldb确实已安装:

/.                                                                             
/usr                                                                           
/usr/share                                                                     
/usr/share/doc                                                                 
/usr/share/doc/python3-mysqldb                                                 
/usr/share/doc/python3-mysqldb/changelog.Debian.gz                             
/usr/share/doc/python3-mysqldb/copyright                                       
/usr/lib                                                                       
/usr/lib/python3                                                               
/usr/lib/python3/dist-packages                                                 
/usr/lib/python3/dist-packages/mysqlclient-1.3.7.egg-info                      
/usr/lib/python3/dist-packages/mysqlclient-1.3.7.egg-info/top_level.txt        
/usr/lib/python3/dist-packages/mysqlclient-1.3.7.egg-info/PKG-INFO             
/usr/lib/python3/dist-packages/mysqlclient-1.3.7.egg-info/dependency_links.txt 
/usr/lib/python3/dist-packages/_mysql_exceptions.py                            
/usr/lib/python3/dist-packages/_mysql.cpython-35m-x86_64-linux-gnu.so          
/usr/lib/python3/dist-packages/MySQLdb                                         
/usr/lib/python3/dist-packages/MySQLdb/connections.py                          
/usr/lib/python3/dist-packages/MySQLdb/release.py                              
/usr/lib/python3/dist-packages/MySQLdb/cursors.py                              
/usr/lib/python3/dist-packages/MySQLdb/constants                               
/usr/lib/python3/dist-packages/MySQLdb/constants/ER.py                         
/usr/lib/python3/dist-packages/MySQLdb/constants/CLIENT.py                     
/usr/lib/python3/dist-packages/MySQLdb/constants/REFRESH.py                    
/usr/lib/python3/dist-packages/MySQLdb/constants/FIELD_TYPE.py                 
/usr/lib/python3/dist-packages/MySQLdb/constants/FLAG.py                       
/usr/lib/python3/dist-packages/MySQLdb/constants/__init__.py                   
/usr/lib/python3/dist-packages/MySQLdb/constants/CR.py                         
/usr/lib/python3/dist-packages/MySQLdb/converters.py                           
/usr/lib/python3/dist-packages/MySQLdb/compat.py                               
/usr/lib/python3/dist-packages/MySQLdb/__init__.py                             
/usr/lib/python3/dist-packages/MySQLdb/times.py    
我还尝试使用pip安装python包MySQL-python,但也收到了相同的错误消息

我被难住了。我不知道该怎么办了


EDIT:我还尝试在目标机器上安装Python 2.7.x,并确保/usr/bin/Python与Python 2.7.x进行了符号链接,但仍然出现相同的错误。我用的是DJ Wasabi的角色

我想你把你的代表团搞混了。我会简化事情

选项一:在本地运行所有内容。假设可以通过网络访问数据库服务器:

- hosts: localhost
  connection: local
  tasks:
    - name: "Debian | Install Mysql Client package"
      apt:
        name: "{{ item }}"
        state: present
      with_items:
        - mysql-client
        - python3-dev
        - libmysqlclient-dev
        - python3-mysqldb
      when:
        - zabbix_server_database == 'mysql'
      tags:
        - zabbix-server
        - init
        - database

    - name: "MySQL | Create database and import file >= 3.0"
      mysql_db:
        name: "{{ zabbix_server_dbname }}"
        encoding: "{{ zabbix_server_dbencoding }}"
        collation: "{{ zabbix_server_dbcollation }}"
        state: import
        target: "{{ ls_output_create.stdout }}"
      when:
        - zabbix_version is version_compare('3.0', '>=')
        - zabbix_database_sqlload
        - not done_file.stat.exists
      tags:
        - zabbix-server
        - database
选项二:从DB服务器运行SQL命令(那么您在本地机器上不需要mysql python,但在托管mysql的远程服务器上需要python和mysql python):


我在本地机器上运行Ansible,本地机器有Python 2.7,目标机器有3.5;我忘了提到我还尝试在目标机器上安装Python 2.7,并确保我的Ansible使用的是新的Python,但我也遇到了同样的错误我提到目标机器使用的是Python 3.5.x;我还尝试安装了两种方法:
pip
apt
这里有很多选项,你应该展示整个剧本。我在清单文件中定义了
ansible\u python\u解释器:/usr/bin/python3
,以确保剧本在目标机器上使用了
python3
解释器。这能回答你的问题吗,@techraf?很抱歉造成混淆。因此,现在使用与Ansible相同的用户连接到
委派的\u dbhost
计算机,执行
/usr/bin/python3
,键入
导入MySQLdb
,然后确认已安装(或未安装)包。
- hosts: localhost
  connection: local
  tasks:
    - name: "Debian | Install Mysql Client package"
      apt:
        name: "{{ item }}"
        state: present
      with_items:
        - mysql-client
        - python3-dev
        - libmysqlclient-dev
        - python3-mysqldb
      when:
        - zabbix_server_database == 'mysql'
      tags:
        - zabbix-server
        - init
        - database

    - name: "MySQL | Create database and import file >= 3.0"
      mysql_db:
        name: "{{ zabbix_server_dbname }}"
        encoding: "{{ zabbix_server_dbencoding }}"
        collation: "{{ zabbix_server_dbcollation }}"
        state: import
        target: "{{ ls_output_create.stdout }}"
      when:
        - zabbix_version is version_compare('3.0', '>=')
        - zabbix_database_sqlload
        - not done_file.stat.exists
      tags:
        - zabbix-server
        - database
- hosts: dbserver

  tasks:
    - name: "Debian | Install Mysql Client package"
      apt:
        name: "{{ item }}"
        state: present
      with_items:
        - mysql-client
        - python3-dev
        - libmysqlclient-dev
        - python3-mysqldb
      when:
        - zabbix_server_database == 'mysql'
      tags:
        - zabbix-server
        - init
        - database

    - name: "MySQL | Create database and import file >= 3.0"
      mysql_db:
        name: "{{ zabbix_server_dbname }}"
        encoding: "{{ zabbix_server_dbencoding }}"
        collation: "{{ zabbix_server_dbcollation }}"
        state: import
        target: "{{ ls_output_create.stdout }}"
      when:
        - zabbix_version is version_compare('3.0', '>=')
        - zabbix_database_sqlload
        - not done_file.stat.exists
      tags:
        - zabbix-server
        - database