我需要使用 ansible 将一些内容以 csv 格式写入文件
shell: ps -ef | grep java | awk '{print $1}'
register: username
shell: ps -ef | grep java | awk '{print $2}'
register: id
Run Code Online (Sandbox Code Playgroud)
用户名的输出将类似于:
root
admin
test_admin
Run Code Online (Sandbox Code Playgroud)
id 的输出将类似于:
1232
4343
2233
Run Code Online (Sandbox Code Playgroud)
所以我希望将其写入 csv 文件
root,1232
admin,4343
test_admin,2233
Run Code Online (Sandbox Code Playgroud)
请建议。
我有一本将在许多服务器(比如说十台)上运行的剧本。前三个任务将在远程服务器上运行。最后一个合并任务是在 localhost(Ansible 控制器)上完成的。
当我运行这个剧本时,每次都会发生合并(即:十次)。
我只想在所有服务器上完成上述所有任务后只执行一次合并任务。
---
- name: Find the location
debug:
- name: Extract details
debug:
- name: Create csv file
debug:
- name: Merge files
debug:
delegate_to: localhost
Run Code Online (Sandbox Code Playgroud) Ansible命令:
ansible all -m module-name -o -e "ansible_user=username ansible_password=password"
Run Code Online (Sandbox Code Playgroud)
给出以下错误:
主机 IP | 失败的!=> {"msg": "要使用带有密码的 'ssh' 连接类型,您必须安装 sshpass 程序"}
我有一个使用任务收集的值在 ansible 中生成的列表。在该列表中,有一些空字符串,因为某些键没有分配给它们的值。所以,我想要实现的是将该列表分配给一个新列表,但没有那些空值。
list1: [
"a",
"b",
"",
"7",
""
]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法,但似乎不起作用:
set_fact:
list2: "{{ list1 1 | rejectattr('') |list }}"
Run Code Online (Sandbox Code Playgroud)
有没有人能够指出我做错了什么并为我的问题提供解决方案?
Ansible version: 2.9.1
我需要从 ansible 循环中的列表中跳过值 null。我正在使用 when 条件,仍然打印空值。下面是我的剧本:
- hosts: localhost
vars:
show:
- read
- write
- null
- test
val: []
tasks:
- name: Fact
set_fact:
val: "{{val+[item]}}"
loop: "{{show}}"
when: item != "null"
- name: Print
debug:
msg: "{{val}}"
Run Code Online (Sandbox Code Playgroud)
输出:
TASK [Print] ***
ok: [localhost] => {
"msg": [
"read",
"write",
null,
"test"
]
}
Run Code Online (Sandbox Code Playgroud)
请指教。