一个客户拥有一本运行本地操作的剧本,在这种情况下,是针对RDS端点的sqlplus命令。
shell: "echo exit|sqlplus64 '{{db_pnyx_username}}/{{db_pnyx_password}}@//{{ host }}:{{ port }}/{{db_pnyx_service_name}}' @vhosts.sql"
在运行Ubuntu时,我很好奇如何避免由于sqlplus软件包而安装太多软件包依赖项,所以我决定尝试使用容器方式。
- name : Execute SQL
shell: "echo exit|docker run --rm --net=host -v $PWD:/tmp rubendob/sqlplus:dockerplus '{{db_pnyx_username}}/{{db_pnyx_password}}@//{{ host }}:{{ port }}/{{db_pnyx_service_name}}' @/tmp/vhosts.sql"
register: result
成功了!
但是我还想使用.profile文件中的别名快捷方式运行docker,如下所示:
alias sqlplus64='docker run --rm --net=host -v $PWD:/tmp rubendob/sqlplus:dockerplus'
Ansible总是返回错误:
"stderr": "/bin/sh: 1: sqlplus64: not found", "stderr_lines": ["/bin/sh: 1: sqlplus64: not found"], "stdout": "", "stdout_lines": []}
有什么方法可以根据最佳实践来实现?我敢打赌我在这里做很多坏事:(