Je me demande toujours quel est le bon moyen de remplacer les tâches Shell
suivantes par la méthode "ansible" (avec get_url
, etc.):
- name: Install oh-my-zsh
Shell: wget -qO - https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | bash -
ou
- name: Install nodesource repo
Shell: curl -sL https://deb.nodesource.com/setup_5.x | bash -
Cela a fonctionné pour moi:
- name: Download zsh installer
get_url: url=https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh dest=/tmp/zsh-installer.sh
- name: Execute the zsh-installer.sh
Shell: /tmp/zsh-installer.sh
- name: Remove the zsh-installer.sh
file: path=/tmp/zsh-installer.sh state=absent
La solution @RaviTezu ne fonctionne pas car le fichier/script que vous souhaitez exécuter doit être sur la machine sur laquelle vous exécutez votre lecture/rôle.
Selon la documentation ici
Le script local sur chemin sera transféré au nœud distant, puis exécuté.
Donc, une façon de le faire est de télécharger le fichier localement et d’utiliser une tâche comme celle décrite ci-dessous:
- name: execute the script.sh
script: /local/path/to/script.sh
Ou vous pouvez faire ceci:
- name: download setup_5.x file to tmp dir
get_url:
url: https://deb.nodesource.com/setup_5.x
dest: /tmp/
mode: 0755
- name: execute setup_5.x script
Shell: setup_5.x
args:
chdir: /tmp/
J'irais pour la première méthode si vous téléchargez votre propre script, la deuxième méthode est plus utile dans votre cas car le script peut être mis à jour à temps pour que vous soyez sûr que chaque fois que vous l'exécutez, il utilise le dernier script.
Pour moi, la déclaration suivante a fonctionné:
- name: "Execute Script"
Shell: curl -sL https://rpm.nodesource.com/setup_6.x | bash -
Peut-être que cet exemple de base peut vous aider à démarrer:
---
- name: Installing Zsh and git
apt: pkg=zsh,git state=latest
register: installation
- name: Backing up existing ~/.zshrc
Shell: if [ -f ~/.zshrc ]; then mv ~/.zshrc{,.orig}; fi
when: installation|success
Sudo: no
- name: Cloning oh-my-zsh
git:
repo=https://github.com/robbyrussell/oh-my-zsh
dest=~/.oh-my-zsh
when: installation|success
register: cloning
Sudo: no
- name: Creating new ~/.zshrc
copy:
src=~/.oh-my-zsh/templates/zshrc.zsh-template
dest=~/.zshrc
when: cloning|success
Sudo: no
Notez le: "force = yes", qui téléchargera toujours le script, en remplaçant l'ancien. . Notez également le "modified_when" que vous pouvez affiner selon votre cas.
- name: 'Download {{ helm.install_script_url }}'
environment:
http_proxy: '{{proxy_env.http_proxy | default ("") }}'
https_proxy: '{{proxy_env.https_proxy | default ("") }}'
no_proxy: '{{proxy_env.no_proxy | default ("") }}'
get_url: url={{ helm.install_script_url | default ("") }} dest=/tmp/helm_install_script force=yes mode="0755"
when: helm.install_script_url is defined
tags:
- helm_x
- name: Run {{ helm.install_script_url }}
environment:
http_proxy: '{{proxy_env.http_proxy | default ("") }}'
https_proxy: '{{proxy_env.https_proxy | default ("") }}'
no_proxy: '{{proxy_env.no_proxy | default ("") }}'
command: "/tmp/helm_install_script"
register: command_result
changed_when: "'is up-to-date' not in command_result.stdout"
when: helm.install_script_url is defined
args:
chdir: /tmp/
tags:
- helm_x
Envisagez d'utiliser le module
get_url
ouuri
plutôt que d'exécutercurl
.
Par exemple:
- name: Download setup_8.x script
get_url: url=https://deb.nodesource.com/setup_8.x dest=/opt mode=755
- name: Setup Node.js
command: /opt/setup_8.x
- name: Install Node.js (JavaScript run-time environment)
apt: name=nodejs state=present