我试图用ansible剧本来执行一个简单的"SHOW DATABASES;“命令,但在执行该命令时却卡住了。
我试过不同的方法
- 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模块,但是它的功能太有限了。
谢谢
发布于 2019-04-04 22:27:46
这对我很有效。下面的剧本
- 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":
...当“变成: true”时,不需要指定"-u根“。我还没有为根用户设置MySQL密码。
https://stackoverflow.com/questions/55517825
复制相似问题