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

anj*_*nji 4 ansible

我试图通过ansible playbook设置环境变量来安装带有vbisam的gnucobol.但是在执行playbook时没有设置变量.

 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}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题.

lar*_*sks 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
Run Code Online (Sandbox Code Playgroud)

我们看作输出:

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   
Run Code Online (Sandbox Code Playgroud)

正如@techraf在评论中暗示的那样,重要的是要理解使用environmenton a task 设置环境变量仅为该任务设置它们.也就是说,如果您想要 CPPFLAGS,LDFLAGS并且LD_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
Run Code Online (Sandbox Code Playgroud)

如果您需要在多个任务上设置这些变量,则需要environment对每个任务应用相同的关键字,或者environment在播放而不是单个任务上设置.

  • 嘿,-1 个人,对我如何改进这个答案有任何意见吗? (2认同)