gpt4 book ai didi

bash - 从 bash 命令的命令输出在 Ansible 中设置环境变量

转载 作者:行者123 更新时间:2023-11-29 08:57:08 39 4
gpt4 key购买 nike

我想将 shell 命令的输出设置为 Ansible 中的环境变量。

我做了以下事情来实现它:

- name: Copy content of config.json into variable
shell: /bin/bash -l -c "cat /storage/config.json"
register: copy_config
tags: something

- name: set config
shell: "echo $TEMP_CONFIG"
environment:
TEMP_CONFIG: "{{copy_config}}"
tags: something

但是在 ansible 运行之后,当我运行以下命令时不知何故:

echo ${TEMP_CONFIG}

在我的终端中它给出了一个空的结果。

如有任何帮助,我们将不胜感激。

最佳答案

至少有两个问题:

  1. 您应该将 copy_config.stdout 作为变量传递

    - name: set config
    shell: "echo $TEMP_CONFIG"
    environment:
    TEMP_CONFIG: "{{copy_config.stdout}}"
    tags: something
  2. 您需要注册上述任务的结果,然后再次打印stdout,因此:

    - name: set config
    shell: "echo $TEMP_CONFIG"
    environment:
    TEMP_CONFIG: "{{copy_config.stdout}}"
    tags: something
    register: shell_echo

    - debug:
    var: shell_echo.stdout
  3. 您永远无法通过这种方式将变量传递给不相关的进程。因此,除非您将结果注册到一个 rc 文件中(例如 ~/.bash_profile,如果您使用 Bash,它来自交互式登录),否则其他 shell 进程将无法看到 的值TEMP_CONFIG。这就是系统的工作原理。

关于bash - 从 bash 命令的命令输出在 Ansible 中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42469836/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com