具有更新PATH的Ansible运行命令

时间:2014-09-09 16:28:33

标签: variables environment ansible

我正在做以下事情:

  tasks:
- name: Output env vars
  shell: echo $PATH $ANDROID_HOME > path.txt
  environment:
    ANDROID_HOME: "/home/{{ deploy_user }}/android-sdk-linux"
    PATH: "{{ ansible_env.ANDROID_HOME }} /tools:/platform-tools:{{ ansible_env.PATH }}"

服务器上的输出是:

$ less path.txt
 {{ ansible_env.ANDROID_HOME }}/tools:/platform-tools:{{ ansible_env.PATH }} /home/azureuser/android-sdk-linux}}

似乎字符串没有插值。

与任务完全相同的剧本:

  tasks:
- name: Output $PATH
  shell: echo $PATH $ANDROID_HOME > path.txt
  environment:
    ANDROID_HOME: "/home/{{ deploy_user }}/android-sdk-linux"
    PATH: "/tools:/platform-tools:{{ ansible_env.PATH }}"

给出

$ less path.txt
  /tools:/platform-tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games /home/azureuser/android-sdk-linux

这就是我的预期。

1 个答案:

答案 0 :(得分:4)

在你的情况下你不能使用未定义的变量

  

路径:" {{ansible_env.ANDROID_HOME}} / tools:/ platform-tools:{{ansible_env.PATH}}"

我想你没有" ANDROID_HOME"远程节点上的变量,因此不解释所有行。

您需要替换" {{ansible_env.ANDROID_HOME}}" by" {{ANDROID_HOME}}"或使用其他逻辑。