Ansible:如何用远程文件中某行的模式/子字符串的值填充变量?

问题描述:

我有一个远程服务器上有一个文件。在该文件中的一行如下:Ansible:如何用远程文件中某行的模式/子字符串的值填充变量?

authorizationToken=<hash or empty string> 

我想设置一个变量的作用后等号该行上签字,如果有什么(这可能是一个哈希任何的是价值,或它可能是一个空字符串)。

做到这一点最简单的方法是什么?

+0

DUP https://*.com/a/44260130/2795592? –

康斯坦丁使用自定义事实链接你的解决方案,但你也可以在相同的值用一个简单的任务比如找到:

- name: get authorizationToken 
    command: > 
    awk -F= '$1 == "authorizationToken" {print $2}' /path/to/configfile 
    register: token 

现在值在后续任务token.stdout可用。

+0

哈,我们得出了同样的结论。 :) – iLikeDirt

+0

嗯,当然,虽然我在一个小时前发布了这个。既然它看起来像你采用了这个解决方案,也许你想把它标记为公认的答案? – larsks

尝试了一段时间做这个“正确”的方式,在结束后阻力最小的路径是使用shell脚本:

- name: Record autorization Token 
    shell: "cat {{ buildagent_dir }}/conf/buildAgent.properties 2>/dev/null | grep authorizationToken | cut -d '=' -f 2" 
    register: token 
+0

请注意,在任何情况下,您都不需要'cat',并且通过使用'awk'''''''' grep'和'cut'',因为您现在可以替换为单个命令,所以您可以替换用'command'命令'shell'。 – larsks

+0

我知道这并不是最有效的方法,但我通常更喜欢在编写shell命令时更加明确和可读性,并且我发现awk语法更难以一目了然地解析。也许我很奇怪。 – iLikeDirt