我正在尝试通过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}
有人可以帮我解决问题。
答案 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
设置环境变量会为该任务设置 。也就是说,如果您希望同时设置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
如果您需要在多个任务上设置这些变量,则需要对每个任务应用相同的environment
关键字,或者在游戏中设置environment
而不是个人任务。