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