J'essaye de démarrer un script d'installation qui existe déjà sur l'hôte distant avec un playbook ansible. Il y a aussi quelques paramètres requis.
fatal: [myhost]: FAILED! => {"changed": true, "cmd": ["sh", "/home/user/install.sh", "--param1", "param1", "----param1", "--param1", "--param3", "param3", "--param4", "param4"], "delta": "0:00:00.002254", "end": "2019-04-17 11:27:13.063837", "msg": "non-zero return code", "rc": 2, "start": "2019-04-17 11:27:13.061583", "stderr": "/home/user/install.sh: 4: set: Illegal option -o pipefail", "stderr_lines": ["/home/user/install.sh: 4: set: Illegal option -o pipefail"], "stdout": "", "stdout_lines": []}
Mais ça ne marche pas. Lorsque j'essaye de démarrer le playbook, j'obtiens ce résultat:
- hosts: myhost become: yes gather_facts: no tasks: - name: Running an installation script command: sh /home/user/install.sh --param1 'param1' --param2 'param2' --param3 'param3' --param4 'param4'
3 Réponses :
Le script échoue avec ce message:
"stderr_lines": ["/home/user/install.sh: 4: set: Option illégale -o pipefail"]
Essayez de lire la commande à partir d'une chaîne. Voir sh .
command: sh -c "/home/user/install.sh --param1 'param1' ..."
Comme le suggère le document ( https://docs.ansible.com/ ansible / latest / modules / command_module.html ), vous pouvez utiliser une commande comme celle-ci:
- name: Running an installation script script: /home/user/install.sh --param1 param1 --param2 param2 --param3 param3 --param4 param4
Si vous avez le shabang
dans votre script, cela devrait pas de problème.
Une autre solution serait d'utiliser un script ( https://docs.ansible.com/ansible/latest/modules/script_module.html ) comme ceci:
- name: Running an installation script command: /home/user/install.sh --param1 'param1' --param2 'param2' --param3 'param3' --param4 'param4'
Laissez-moi entendre si cela aide
Vous pouvez utiliser le module shell au lieu du module de commande pour passer les arguments à votre commande linux spécifiquement pour le script ansible a un module de script
et pour les commandes Linux
comme: shell: "curl --socks5 localhost: 9000 http://www.ansible.com "
et pour plus de détails, consultez
https://docs.ansible.com/ansible/latest/modules /shell_module.html
Est l'interprète sh ou bash. Le script fonctionne-t-il également de la même manière manuellement?
avez-vous essayé d'utiliser le module shell?
L'interpréteur est sh et oui, ce script avec des paramètres fonctionne si je le démarre manuellement sur le nœud. Le module shell était une option mais j'ai trouvé une réponse sur l'utilisation de "command: sh" comme meilleure solution pour exécuter un script qui existe déjà sur le nœud. Cependant, l'option "-c" m'a aidé.