Ansible 获取寄存器stdout\u行并删除空格
我正在尝试为文件分配一个输出(变量)值。另外,我想删除前面的空格值。初始命令输出如下所示 命令输出:Ansible 获取寄存器stdout\u行并删除空格,ansible,consul,Ansible,Consul,我正在尝试为文件分配一个输出(变量)值。另外,我想删除前面的空格值。初始命令输出如下所示 命令输出: # /usr/local/bin/consul acl bootstrap AccessorID: 361e72451-3709-074b-ee7c-0a2bbe019db6 SecretID: 9d4f8869-506a-121e-d01d-768495af56756 Description: Bootstrap Token (Global Manag
# /usr/local/bin/consul acl bootstrap
AccessorID: 361e72451-3709-074b-ee7c-0a2bbe019db6
SecretID: 9d4f8869-506a-121e-d01d-768495af56756
Description: Bootstrap Token (Global Management)
Local: false
Create Time: 2020-09-23 12:48:58.775483049 +0000 UTC
Policies:
00000000-0000-0000-0000-000000000001 - global-management
代码:
-名称:领事acl引导
shell:/usr/local/bin/consul acl引导
寄存器:引导
-设定事实:
秘密列表:“{bootstrap.stdout_line | map('trim')| list}”
-调试:
msg:{{item | regex_search('[^::]*$')}”
带_项:“{{secrets_list[1]}”
寄存器:密钥
-name:追加密钥
线条填充:
路径:/root/.bash\u配置文件
行:“导出领事HTTP_令牌=“{{secret\u key.stdout}}”
这是我想要的输出
export CONSUL_HTTP_TOKEN= 9d4f8869-506a-121e-d01d-768495af56756
但我得到的是
export CONSUL_HTTP_TOKEN="{'results': [{'msg': ' 9d4f8869-506a-121e-d01d-768495af56756', 'failed': False, 'changed': False, 'item': 'SecretID: 9d4f8869-506a-121e-d01d-768495af56756, 'ansible_loop_var': 'item'}], 'msg': 'All items completed', 'changed': False}"
有什么建议吗?我不会使用正则表达式来执行如此简单的拆分操作,尤其是知道Python在这些用例中工作得非常好 根据剧本:
-主机:所有
收集事实:不
变量:
引导:
标准输出线:
-'附件:361e72451-3709-074b-ee7c-0a2bbe019db6'
-'保密:9d4f8869-506a-121e-d01d-768495af56756'
-'说明:引导令牌(全局管理)'
-'本地:错误'
-“创建时间:2020-09-23 12:48:58.775483049+0000 UTC”
-“政策:”
-“00000000-0000-0000-0000-000000000001-全球管理”
任务:
-调试:
msg:“导出领事HTTP_令牌={{bootstrap.stdout_行[1].split()[1]}”
这将产生以下结果:
PLAY [all] ********************************************************************************************************
TASK [debug] ******************************************************************************************************
ok: [localhost] => {
"msg": "export CONSUL_HTTP_TOKEN=9d4f8869-506a-121e-d01d-768495af56756"
}
PLAY RECAP ********************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
更进一步,您可以选择正确的输出行 考虑到剧本
-主机:所有
收集事实:不
变量:
引导:
标准输出线:
-'附件:361e72451-3709-074b-ee7c-0a2bbe019db6'
-'保密:9d4f8869-506a-121e-d01d-768495af56756'
-'说明:引导令牌(全局管理)'
-'本地:错误'
-“创建时间:2020-09-23 12:48:58.775483049+0000 UTC”
-“政策:”
-“00000000-0000-0000-0000-000000000001-全球管理”
任务:
-调试:
msg:“导出领事HTTP_令牌={{(bootstrap.stdout_行}选择('match','SecretID:'))| first.split()[1]}”
给出了相同的概述,在所有领事acl
命令中添加了-format=json
输出。您可以通过重写剧本来使用这个JSON输出来简化这个剧本
---
-主机:本地主机
连接:本地
任务:
-名称:引导领事ACL系统
命令:/usr/local/bin/concur acl bootstrap-format=json
寄存器:引导
-名称:设置引导\u秘密\u id事实
设定事实:
bootstrap_secret_id:{{(bootstrap.stdout | from_json.SecretID}}”
-调试:
msg:“导出领事\u HTTP\u令牌={{bootstrap\u secret\u id}”
甚至比我的还要好。谢谢你@Blake。工作得很好!
$ ansible-playbook bootstrap-consul-acl.yaml
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************
ok: [localhost]
TASK [Bootstrap Consul ACL system] *********************************************************************************************************
changed: [localhost]
TASK [Set bootstrap_secret_id fact] ********************************************************************************************************
ok: [localhost]
TASK [debug] *******************************************************************************************************************************
ok: [localhost] => {
"msg": "export CONSUL_HTTP_TOKEN=954ba1c0-581f-80e9-7a1f-ebb29d364ff1"
}
PLAY RECAP *********************************************************************************************************************************
localhost : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0