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

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

我做了以下工作来实现它:

- 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}

在我的终端,它给出了一个空的结果.

任何帮助,将不胜感激.

至少有两个问题:

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

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

>您需要注册上述任务的结果,然后再次打印标准输出,所以:

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

- debug:
    var: shell_echo.stdout

>您永远无法以这种方式将变量传递给不相关的流程.因此,除非您在rc文件注册结果(如〜/ .bash_profile,如果您使用Bash,这是在交互式登录获取的),否则其他shell进程将无法看到TEMP_CONFIG的值.这就是系统的工作原理.

相关文章

普通模式 >G 增加当前行到文档末尾处的缩紧层级 $ 移动到本行的末尾 . 相当于一个...
原文连接: https://spacevim.org/cn/layers/lang/elixir/ 模块简介 功能特性 启用模块 快捷键 语言专属...
原文连接: https://spacevim.org/cn/layers/lang/dart/ 模块简介 功能特性 依赖安装及启用模块 启用模...
 =   赋值操作符,可以用于算术和字符串赋值 +        加法计算     -        减法运算...
1.根据包名来查看指定的APP指定数据 adb shell "top | grep com.xxx.xxx" 由于这样打印出来的数...
ctrl+F 向下翻页 ctrl+B 向下翻页 u 取消最近一次操作 U 取消当前行的操作 ZZ 保存当前内容并退出 gg 跳...