Ansible - 读取文件、提取特定行、提取列并分配给变量
Ansible - Read a file, extract specific line, extract a column and assign to variable
我需要一些帮助来从文件中提取特定行,然后提取列,将其分配给一个变量,然后在下一个任务中使用该变量。
我在 confluent broker 服务器上有这种格式的文件
Save the key. It cannot be retrieved later.
+------------+----------------------------------------------+
| Enc Key | omykeyvaluecontinuousstringgoeshereandmakelong= |
+------------+----------------------------------------------+
我正在尝试编写 Ansible 任务,该任务将读取第三行,然后将密钥提取到一个变量中,我需要将该变量导出为任务中的环境变量。在下一个任务中,我将执行一个融合命令作为 shell 命令。
我试过类似下面的方法,但它不起作用 - 我收到错误
vars:
ansible_ssh_extra_args: "-o StrictHostKeyChecking=no"
ansible_host_key_checking: false
contents: "{{ lookup('file', '/etc/kafka/info.txt') }}"
contents2: "{{ lookup('file', '/etc/kafka/info.txt').splitlines() }}"
- name: set fact
set_fact:
extract_key: "{{ contents.split('\n')[2] }}"
- name: Display output
debug: msg="{{ extract_key }}"
然后从extract_key变量中提取键值
我怎样才能做到这一点?
谢谢
下面的任务完成工作
- set_fact:
extract_key: "{{ contents.split('\n').2.split('|').2|trim }}"
给予
extract_key: omykeyvaluecontinuousstringgoeshereandmakelong=
如果只有文本行是固定的,您可以使用此过滤器:
- name: capturing Key
shell: echo {{ contents }} | head -3 | tail -1 | sed 's/|/\n/g' | sed -n 3p
register: extract_key
- name: Display output
debug: msg="{{ extract_key.stdout }}"
这个returnsomykeyvaluecontinuousstringgoeshereandmakelong=
我需要一些帮助来从文件中提取特定行,然后提取列,将其分配给一个变量,然后在下一个任务中使用该变量。
我在 confluent broker 服务器上有这种格式的文件
Save the key. It cannot be retrieved later.
+------------+----------------------------------------------+
| Enc Key | omykeyvaluecontinuousstringgoeshereandmakelong= |
+------------+----------------------------------------------+
我正在尝试编写 Ansible 任务,该任务将读取第三行,然后将密钥提取到一个变量中,我需要将该变量导出为任务中的环境变量。在下一个任务中,我将执行一个融合命令作为 shell 命令。
我试过类似下面的方法,但它不起作用 - 我收到错误
vars:
ansible_ssh_extra_args: "-o StrictHostKeyChecking=no"
ansible_host_key_checking: false
contents: "{{ lookup('file', '/etc/kafka/info.txt') }}"
contents2: "{{ lookup('file', '/etc/kafka/info.txt').splitlines() }}"
- name: set fact
set_fact:
extract_key: "{{ contents.split('\n')[2] }}"
- name: Display output
debug: msg="{{ extract_key }}"
然后从extract_key变量中提取键值
我怎样才能做到这一点?
谢谢
下面的任务完成工作
- set_fact:
extract_key: "{{ contents.split('\n').2.split('|').2|trim }}"
给予
extract_key: omykeyvaluecontinuousstringgoeshereandmakelong=
如果只有文本行是固定的,您可以使用此过滤器:
- name: capturing Key
shell: echo {{ contents }} | head -3 | tail -1 | sed 's/|/\n/g' | sed -n 3p
register: extract_key
- name: Display output
debug: msg="{{ extract_key.stdout }}"
这个returnsomykeyvaluecontinuousstringgoeshereandmakelong=