ansible wget затем exec scripts => получить эквивалент url
мне всегда интересно, каков хороший способ заменить следующее shell
задачи с использованием " ansible way "(with get_url
, etc.):
- name: Install oh-my-zsh
shell: wget -qO - https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | bash -
или
- name: Install nodesource repo
shell: curl -sL https://deb.nodesource.com/setup_5.x | bash -
6 ответов
это сработало для меня:
- 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
@RaviTezu решение не работает, потому что файл / сценарий, который вы хотите выполнить, должен быть на машине, где вы выполняете свою игру/роль.
согласно документации здесь
локальный скрипт по пути будет перенесен на удаленный узел и затем выполнен.
Итак, один из способов сделать это-загрузить файл локально и использовать задачу, как показано ниже:
- name: execute the script.sh
script: /local/path/to/script.sh
или вы можете сделать это:
- 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/
Я бы пошел на первый метод, если вы загружаете свой собственный скрипт, второй метод более полезен в вашем случае, потому что скрипт может быть обновлен вовремя, поэтому вы уверены, что каждый раз, когда вы его выполняете, он использует последний скрипт.
для меня сработало следующее утверждение:
- name: "Execute Script"
shell: curl -sL https://rpm.nodesource.com/setup_6.x | bash -
может быть этот простой пример может помочь вам начать:
---
- 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
обратите внимание: "force=yes", который всегда будет загружать скрипт, переопределяя старый. Также обратите внимание на" changed_when", который вы можете уточнить в своем случае.
- 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
рассмотрите возможность использования
get_url
илиuri
модуль, а не работаетcurl
.
например:
- 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