Ansible:如何使用远程文件中某行上的模式/子字符串的值填充变量?
我有一个远程服务器,上面有一个文件。该文件中的一行如下所示:Ansible:如何使用远程文件中某行上的模式/子字符串的值填充变量?,ansible,ansible-role,Ansible,Ansible Role,我有一个远程服务器,上面有一个文件。该文件中的一行如下所示: authorizationToken=<hash or empty string> 我想将角色中的变量设置为该行等号后面的值,如果有的话,它可能是散列,也可能是空字符串 最不可怕的方法是什么?Konstantin使用自定义事实将您链接到解决方案,但您也可以使用以下简单任务获得相同的值: - name: get authorizationToken command: > awk -F= '$1 == "a
authorizationToken=<hash or empty string>
我想将角色中的变量设置为该行等号后面的值,如果有的话,它可能是散列,也可能是空字符串
最不可怕的方法是什么?Konstantin使用自定义事实将您链接到解决方案,但您也可以使用以下简单任务获得相同的值:
- name: get authorizationToken
command: >
awk -F= '$1 == "authorizationToken" {print $2}' /path/to/configfile
register: token
现在,该值可作为token.stdout在后续任务中使用。在尝试了一段时间以正确的方式执行此操作后,最后阻力最小的路径是使用shell脚本:
- name: Record autorization Token
shell: "cat {{ buildagent_dir }}/conf/buildAgent.properties 2>/dev/null | grep authorizationToken | cut -d '=' -f 2"
register: token
杜普?哈,我们得出了相同的结论:当然,虽然我在一小时前贴了这个。由于您似乎采用了此解决方案,也许您想将此标记为已接受的答案?请注意,您在任何情况下都不需要cat,并且通过使用awk,您可以同时替换grep和cut,并且由于您现在只使用一个命令,您可以用command替换shell。我知道这不是最有效的方式,但在编写shell命令时,我通常更喜欢明确性和可读性,而不是效率,而且我发现awk语法更难一目了然地解析。也许我很奇怪。