Ansible中匹配字符串和空格后的正则表达式

2024-06-01 00:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过Ansible自动打开Hashicorp vault,为此,我需要将vault初始化的标准输出通过管道传输到regex,并捕获自动生成的5个键。任何人都可以帮助regex捕获多个密钥,但只捕获密钥部分吗

解封密钥的示例:

Unseal Key 1: `vhK9/+JLLa59BOdR7SClCnuRERrEPqRk3z5yO4aCOKj0`

目前我有以下任务:

- name: extract keys
  - changed_when: no
  - set_fact:
    vault_keys: `"{{ vault_init_output.stdout | regex_findall ('unseal key', multiline=True, ignorecase=True) }}"`
  - tags:
     - vault

- debug: `msg="{{ vault_keys }}"`

然而,它捕获了完整的行,我只需要捕获的关键


Tags: keytrue示例标准管道密钥ansiblekeys
1条回答
网友
1楼 · 发布于 2024-06-01 00:22:41

解决了。以下是初始化Hashicorp vault并通过register和regexp捕获密钥/令牌的任务:

- name: Initialize the vault
  command: vault operator init
  register: vault_init_output
  environment:
    VAULT_ADDR: "http://127.0.0.1:8200"

- debug: msg="{{ vault_init_output }}"

- name: extract keys
  changed_when: no
  set_fact:
    vault_keys: "{{ vault_init_output.stdout | regex_findall ('(?<=unseal key [0-9]:\\s).*$', multiline=True, ignorecase=True) }}"
  tags:
    - vault

- debug: msg="{{ vault_keys }}"

- name: extract root token
  changed_when: no
  set_fact:
    vault_token: "{{ vault_init_output.stdout | regex_findall ('(?<=Initial Root Token:\\s).*$', multiline=True, ignorecase=True) }}"
  tags:
    - vault

- debug: msg="{{ vault_token }}"

相关问题 更多 >