Регулярное выражение после сопоставленной строки и пробела в Ansible - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь автоматизировать раскрытие хранилища Hashicorp через Ansible, и для этого мне нужно передать стандартный вывод инициализации Vault для регулярного выражения и перехватить 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 }}"`

Однако он захватывает всю строку, и мне нужны только захваченные ключи.

1 Ответ

0 голосов
/ 05 мая 2020

решил это. Ниже приведены задачи по инициализации хранилища 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 }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...