Ansible playbook在尝试执行mysql操作时遇到困难

问题描述 投票:0回答:1

我正在尝试执行一个简单的“SHOW DATABASES”;带有ansible playbook的命令,并在执行命令时卡住。

我尝试了不同的选择

- hosts: servers
  become: true
  vars_prompt:
    - name: "db_passw"
      prompt: "DB root password?"
  tasks:
    - name: Configure Database
      shell: |
        mysql -u root -p {{ db_passw }} < ~/sql_query.sql

- hosts: servers
  become: true
  vars_prompt:
    - name: "db_passw"
      prompt: "DB root password?"
  tasks:
    - name: Configure Database
      shell: |
        mysql -u root -p {{ db_passw }} -e "SHOW DATABASES;"

我还试着明确地输入密码作为测试

- hosts: servers
  become: true
  vars_prompt:
    - name: "db_passw"
      prompt: "DB root password?"
  tasks:
    - name: Configure Database
      shell: |
        mysql -u root -p <root_passw> -e "SHOW DATABASES;"

但它总是陷入同一点。我试图在远程机器shell中执行上面的mysql命令,它们没有问题。我还尝试在mysql之前执行其他命令并执行它们。

ansible和mysql之间有什么问题吗?

我知道Ansible有一个MySQL模块,但它的功能太有限了。

谢谢

mysql ansible
1个回答
0
投票

适合我。下面的剧本

- hosts: dbserver
  tasks:
    - command: |
        mysql -e "SHOW DATABASES;"
      register: result
    - debug:
        var: result

得到:

TASK [debug] 
ok: [dbserver] => {
    "result": {
        "changed": true, 
        "cmd": [
            "mysql", 
            "-e", 
            "SHOW DATABASES;"
        ], 
        "delta": "0:00:00.010958", 
        "end": "2019-04-04 16:19:58.359100", 
        "failed": false, 
        "rc": 0, 
        "start": "2019-04-04 16:19:58.348142", 
        "stderr": "", 
        "stderr_lines": [], 
        "stdout": 
        ...

当“变为:真”时,没有必要指定“-u root”。我没有为root设置MySQL密码。

© www.soinside.com 2019 - 2024. All rights reserved.