2017-09-18 2 views
-1

Comment régler gradle home en utilisant le script ansible. J'ai un répertoire gradle_user_home dans RHEL. J'essaye de mettre gradle à la maison à ce répertoire avec le script d'ansible. Mais le script ansible dit pas un tel fichier ou répertoire! Voici mon script.script ansible pour mettre gradle à la maison?

- name: Set gradle environment variable 
    command: export GRADLE_USER_HOME={{gradle_home}} 

Mon fichier vars:

gradle_home: "/data1/deployment/gradle_user_home" 
+0

Parce qu'il n'y a pas de commande 'export' et Ansible est tout à fait raison. Indépendamment de cela, vous ne serez pas capable de faire ce que vous pensez que vous devriez faire, parce que cela n'a aucun sens. Apprenez comment fonctionnent les shells Unix/Linux en ce qui concerne les variables d'environnement. – techraf

Répondre

1

Tout d'abord, export est pas une commande (par exemple il n'y a pas exécutable /bin/export). C'est un bash intégré. C'est pourquoi vous obtenez un no such file or directory. Vous pouvez l'utiliser dans une tâche shell, pas dans une tâche command. Deuxièmement, ce n'est pas la bonne façon de définir les variables d'environnement avec Ansible.

Vous pouvez définir l'environnement au niveau de jeu comme celui-ci:

--- 
- hosts: all 
    environment: 
    GRADLE_USER_HOME: "{{gradle_home}}" 

Ou au niveau des tâches comme ceci:

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

Vous ne pouvez pas exporter une variable d'environnement dans une seule tâche command, car chaque tâche command est exécuté dans sa propre coquille. Une fois la commande terminée, la variable d'environnement est perdue.

Vous devez utiliser l'action shell à

  1. la variable d'environnement et
  2. exécuter la commande.

Exemple:

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