如何在ansible playbook中设置环境变量

时间:2017-10-09 10:46:06

标签: ansible

我正在尝试通过ansible playbook设置环境变量来安装带有vbisam的gnucobol。但是在执行剧本时,这些变量没有被设置。

 name: Setting variables for CPPFLAGS
 shell: "echo $CPPFLAGS"
 environment:
  CPPFLAGS: -I/opt/vbisam-2.0/include

 name: Setting variables for LDFLAGS
 shell: "echo $LDFLAGS"
 environment:
  LDFLAGS: -L/opt/vbisam-2.0/lib

 name: Setting variables for LD_LIBRARY_PATH
 shell: "echo $LD_LIBRARY_PATH"
 environment:
  LD_LIBRARY_PATH: /opt/vbisam-2.0/lib:${LD_LIBRARY_PATH}

有人可以帮我解决问题。

1 个答案:

答案 0 :(得分:7)

您的环境变量肯定已经设置好了。您现有的任务不包含任何验证的尝试,所以让我们添加一个。例如,如果我们运行这个剧本:

- hosts: localhost
  tasks:
    -  name: Setting variables for CPPFLAGS
       shell: "echo $CPPFLAGS"
       environment:
         CPPFLAGS: -I/opt/vbisam-2.0/include
       register: cppflags

    - debug:
        var: cppflags.stdout

我们看作输出:

PLAY [localhost] *******************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************
ok: [localhost]

TASK [Setting variables for CPPFLAGS] **********************************************************************************************************
changed: [localhost]

TASK [debug] ***********************************************************************************************************************************
ok: [localhost] => {
    "cppflags.stdout": "-I/opt/vbisam-2.0/include"
}

PLAY RECAP *************************************************************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0   

正如@techraf在评论中暗示的那样,重要的是要了解在任务中使用environment设置环境变量会为该任务设置 。也就是说,如果您希望同时设置CPPFLAGSLDFLAGSLD_LIBRARY_PATH,则需要执行以下操作:

    -  name: Setting variables for CPPFLAGS
       shell: "echo $CPPFLAGS"
       environment:
         CPPFLAGS: -I/opt/vbisam-2.0/include
         LDFLAGS: -L/opt/vbisam-2.0/lib
         LD_LIBRARY_PATH: /opt/vbisam-2.0/include
       register: cppflags

如果您需要在多个任务上设置这些变量,则需要对每个任务应用相同的environment关键字,或者在游戏中设置environment而不是个人任务。