【问题标题】:Regex after matched string and white space in AnsibleAnsible中匹配字符串和空格后的正则表达式
【发布时间】:2020-05-04 17:44:29
【问题描述】:

我正在尝试通过 Ansible 自动解封 Hashicorp 保险库,为此我需要将保险柜初始化的标准输出通过管道传输到正则表达式并捕获自动生成的 5 个密钥。任何人都可以协助正则表达式捕获多个键,但只是关键部分?

开封键示例:

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 }}"`

但是它捕获了整行,我只需要捕获键。

【问题讨论】:

标签: python regex ansible


【解决方案1】:

解决了。以下是初始化 Hashicorp 保险库并通过寄存器和正则表达式捕获密钥/令牌的任务:

- 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 }}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-28
    • 2023-03-13
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多