【发布时间】:2017-08-17 16:43:02
【问题描述】:
我的问题是 ansible 和解析标准输出。我需要从 ansible play 中捕获 stdout 并将此输出解析为 stdout 中的特定子字符串并保存到 var 中。我的具体用例如下
- shell: "vault.sh --keystore EAP_HOME/vault/vault.keystore |
--keystore-password vault22 --alias vault --vault-block |
vb --attribute password --sec-attr 0penS3sam3 --enc-dir |
EAP_HOME/vault/ --iteration 120 --salt 1234abcd"
register: results
become: true
这会生成带有以下行的输出,目标是捕获 jboss vault 生成的屏蔽密钥并将其保存在 ansible var 中,以便我可以使用它来配置standalone.xml 模板:
vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"/>
我需要一种可能使用正则表达式解析此字符串的方法,并使用 set_facts 模块或任何其他 ansible 模块将“MASK-5dOaAVafCSd”子字符串保存到 ansible var 中。
目前我的代码是这样的
#example stdout
results: vault-option name=\"KEYSTORE_PASSWORD\" value=\"MASK-5dOaAVafCSd\"/>
- name: JBOSS_VAULT:define keystore password masked value variable
set_fact:
masked_value: |
"{{ results.stdout |
regex_replace('^.+(MASK-.+?)\\.+','\\\1') }}"
此代码将 masked_value 定义为 results.stdout,而不是预期的捕获组。
【问题讨论】:
-
请重新表述您的问题,这绝对不清楚。你需要运行一个完整的剧本并解析它的输出吗?或者在 playbook 中运行一些命令并只使用该命令的输出?
-
你好康斯坦丁,基本上我想将 MASK-5dOaAVafCSd 存储到一个变量中。
标签: regex string ansible stdout