web-dev-qa-db-fra.com

ansible wget then exec scripts => équivalent à get_url

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 -
14
Oliboy50

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
15
RaviTezu

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.

5
sys0dm1n

Pour moi, la déclaration suivante a fonctionné:

 - name: "Execute Script"
   Shell: curl -sL https://rpm.nodesource.com/setup_6.x | bash -
3

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
0
Arbab Nazar

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
0
ReSearchIT Eng

Envisagez d'utiliser le module get_url ou uri plutôt que d'exécuter curl.

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
0
kenorb