我正在尝试更新一些.sql文件,并在命令行中使用sed成功,但无法从ansible使其正常工作。
该命令类似于:
我的目标是将ENGINE
替换为<script type="text/javascript" src="/assest/js/main.js"></script>
<link rel="stylesheet" type="text/css" href="/assest/css/styles.css">
,因为它们是较旧的.sql转储。除非有直接在MySQL中进行处理的方法-我无法导入它们。
错误 任务执行期间发生了异常。要查看完整的回溯,请使用-vvv。错误是:OSError:[Errno 2]没有这样的文件或目录:'/ home / jesse / Desktop / playbooks / cd / tmp / Ratings_DB'
似乎我没有以某种方式重定向到正确的目录。
答案 0 :(得分:0)
您不必制作'cd',您可以直接引用文件名。另外,最好使用'become = true'而不是sudo:
---
- name: pb
hosts: localhost
become: true
tasks:
- name: replace in sql files
shell: sed -i 's/TYPE/ENGINE/' /tmp/*.sql
以以下方式运行剧本:
$ ansible-playbook pb.yml -e“ ansible_sudo_pass = 1234”
答案 1 :(得分:0)
最好使用 replace 或 lineinfile 模块而不是通用的 sed 。
例如
- replace:
path: /etc/hosts
regexp: '(\s+)old\.host\.name(\s+.*)?$'
replace: '\1new.host.name\2'
backup: yes