我只是从大量数据中获取了一个样本,我希望从变量中读取这些数据并将其转储到文件中。
cat junk.txt
{:,:"(s):"}}
垃圾中的这些数据不在我的控制范围内,而是作为数据库脚本执行的输出。
下面是我尝试将 junk.txt 中的数据转储到日志文件 github.out 中,并且在整个游戏过程中,垃圾数据应该不断附加到 github.out 中,这是我无法实现的。
---
- name: "Play 1-Find the details here"
hosts: localhost
gather_facts: no
tasks:
- name: Read junk file
raw: "cat {{ playbook_dir }}/junk.txt"
register: junkdata
# - name: Dump data to file
# raw: echo "{{ junkdata.stdout }}" >> "{{ playbook_dir }}/outputjunk.txt"
- name: Direct script execution in Standard logs for GitHub actions (TXTstdout)
ansible.builtin.copy:
content: ">> TXT SUCCESS OUTPUT1- {{ junkdata.stdout }}"
dest: "{{ playbook_dir }}/github.out"
force: no
- name: Direct script execution in Standard logs for GitHub actions (TXTstdout)
ansible.builtin.copy:
content: ">> TXT SUCCESS OUTPUT2- {{ junkdata.stdout }}"
dest: "{{ playbook_dir }}/github.out"
force: no
如果取消注释将内容重定向到日志文件,则注释部分会出现以下错误:
任务[将数据转储到文件]
2023 年 11 月 27 日星期一 10:21:22 -0600 (0:00:00.035)
0:00:00.087 ******致命:[localhost]:失败! => {“已更改”:true,“msg”:“非零 返回代码", "rc": 1, "stderr": "/bin/sh: -c: 第 0 行: 语法错误 接近意外的令牌
echo “{:,:”(s):”}}' ", "stderr_lines": ["/bin/sh: -c: 第 0 行:语法 意外令牌附近出现错误('\n/bin/sh: -c: line 0:
echo "{:,:"(s):"}}'"], "stdout": "", "stdout_lines": []}('", "/bin/sh: -c: line 0:
因此,我决定使用
copy
模块将数据转储到它所做的文件中。
但我希望每个内容都继续附加到 github.out,但事实并非如此。
预期/期望的输出:
$ cat github.out
>> TXT SUCCESS OUTPUT1- {:,:"(s):"}}
>> TXT SUCCESS OUTPUT2- {:,:"(s):"}}
电流输出:
$ cat github.out
>> TXT SUCCESS OUTPUT1- {:,:"(s):"}}
如果 github.out 在上次运行中存在,则不会附加任何内容。
你能推荐一下吗?
引用如下原始模块来修复第一个错误:
raw: "echo {{ junkdata.stdout }} >> {{ playbook_dir }}/outputjunk.txt"
copy
模块覆盖内容。所以使用 lineinfile
代替,并带有循环
喜欢:
- name: Direct script execution in Standard logs for GitHub actions (TXTstdout)
loop:
- ">> TXT SUCCESS OUTPUT1- {{ junkdata.stdout }}"
- ">> TXT SUCCESS OUTPUT2- {{ junkdata.stdout }}"
ansible.builtin.lineinfile:
path: "{{ playbook_dir }}/github.out"
create: true
line: "{{ item }}"
$ cat github.out
>> TXT SUCCESS OUTPUT1- {:,:"(s):"}}
>> TXT SUCCESS OUTPUT2- {:,:"(s):"}}