无法使用 Ansible 命令模块执行 sqlite 语句 - [Errno 2] 没有这样的文件或目录:b'sqlite3'”

无法使用 Ansible 命令模块执行 sqlite 语句 - [Errno 2] 没有这样的文件或目录:b'sqlite3'”

我正在尝试在多台服务器上运行一个简单的查询。我 100% 确定相关文件和目录存在。

我可以执行简单的命令,例如ls,,,等等,并且我可以在远程主机本身上运行该命令。pwdwhoamisqlite

剧本任务:

- name: Do a test SELECT statement
  become: yes
  become_user: root
  command: sqlite3 /usr/local/share/sqlite/dbfile.sqlite3 "SELECT * FROM db WHERE hostname="{{ db_server_prompt }}""
  register: query_result

- debug: var=query_result.stdout_lines

我收到的错误是"msg": "[Errno 2] No such file or directory: b'sqlite3'",

我的语法有问题吗?为什么No such file or directory使用 sqlite3 命令时会告诉我有“ ”?我尝试了可执行文件的绝对路径 ( /usr/bin/sqlite3),但还是出现同样的错误。

更新我试图用chdir作为论据这个答案,但我得到了Unable to change directory before execution。我还尝试了绝对路径sqlite/usr/bin/sqlite3这些都不起作用。

答案1

你可以看看rawansible和shell之间有什么区别command并尝试以下操作

- name: Do a test SELECT statement
  become: yes
  become_user: root
  shell:
    cmd: /usr/bin/sqlite3 /usr/local/share/sqlite/dbfile.sqlite3 "SELECT * FROM db WHERE hostname={{ db_server_prompt }}"
  register: query_result

- name: Show query result
  debug: 
    var: query_result.stdout_lines

答案2

我遇到了类似的问题,但是涉及 ifquery ifquery -l", "msg": "[Errno 2] No such file or directory:。

问题是这ifquery需要 root 权限,而我在运行我的剧本时并没有请求 root 权限。

要以 root 身份运行剧本,只需使用-b带有 的选项ansible-playbook,或添加become=True到您的 ansible.cfg 中。

相关内容