Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible:如何使用远程文件中某行上的模式/子字符串的值填充变量?_Ansible_Ansible Role - Fatal编程技术网

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语法更难一目了然地解析。也许我很奇怪。