要用脚本将gradle设置为home吗?

要用脚本将gradle设置为home吗?,gradle,ansible,environment-variables,Gradle,Ansible,Environment Variables,如何使用ansible脚本设置gradle home。我在RHEL中有一个目录gradle\u user\u home。我正在尝试使用ansible脚本将gradle home设置为此目录。但是ansible脚本说没有这样的文件或目录!下面是我的脚本 - name: Set gradle environment variable command: export GRADLE_USER_HOME={{gradle_home}} 我的vars文件: gradle_home: "/data1/d

如何使用ansible脚本设置gradle home。我在RHEL中有一个目录
gradle\u user\u home
。我正在尝试使用ansible脚本将gradle home设置为此目录。但是ansible脚本说没有这样的文件或目录!下面是我的脚本

- name: Set gradle environment variable
  command: export GRADLE_USER_HOME={{gradle_home}}
我的vars文件:

gradle_home: "/data1/deployment/gradle_user_home"

不能在单个
命令
任务中导出环境变量,因为每个
命令
任务都在其自己的shell中运行。命令完成后,环境变量将丢失

您必须使用
shell
操作

  • 设置环境变量并
  • 运行命令
  • 例如:

    - name: Run the command
      shell: >-
        export GRADLE_USER_HOME={{gradle_home}}
        my_command_which_requires_gradle_user_home
    

    首先,
    export
    不是命令(即没有
    /bin/export
    可执行文件)。它是一个内置的bash。这就是为什么你得到一个
    没有这样的文件或目录的原因。您可以在
    shell
    任务中使用它,而不是在
    命令
    任务中使用它

    其次,这不是使用Ansible设置环境变量的正确方法

    您可以在播放级别设置环境,如下所示:

    ---
    - hosts: all
      environment:
        GRADLE_USER_HOME: "{{gradle_home}}"
    
    - name: Execute gradle build
      shell: gradle build
      environment:
        GRADLE_USER_HOME: "{{gradle_home}}"
    
    或者在任务级别,如下所示:

    ---
    - hosts: all
      environment:
        GRADLE_USER_HOME: "{{gradle_home}}"
    
    - name: Execute gradle build
      shell: gradle build
      environment:
        GRADLE_USER_HOME: "{{gradle_home}}"
    

    因为没有命令
    export
    ,Ansible是完全正确的。不管怎样,你将无法做你认为你应该做的事情,因为这毫无意义。请了解Unix/Linux shell如何处理环境变量。