Ansible

無法使用 Ansible 命令模組執行 sqlite 語句 -和rrno2和rrn這2Errno 2沒有這樣的文件或目錄:b’sqlite3''

  • December 16, 2021

我正在嘗試在許多伺服器上執行一個簡單的查詢。我知道 100% 有問題的文件和目錄存在。

我可以執行簡單的命令,例如lspwdwhoami等,並且可以sqlite在遠端主機本身上執行命令。

劇本任務:

- 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'",.

我的語法有問題嗎?為什麼在使用 sqlite3 命令時它告訴我有“ No such file or directory”?我已經嘗試了執行檔 ( /usr/bin/sqlite3) 的絕對路徑,但我得到了同樣的錯誤。

更新我試圖根據這個答案chdir用作參數,但我得到了。我還嘗試了with的絕對路徑。這些都不起作用。Unable to change directory before execution``sqlite``/usr/bin/sqlite3

你可以看看ansiblerawshell之間有什麼區別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

引用自:https://serverfault.com/questions/1086175