「ansible way」(get_url
など)を使用して、次のShell
タスクを置き換える良い方法は何だろうといつも思っています。
- 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 -
これは私のために働いた:
- 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ソリューションは機能しません。実行するファイル/スクリプトは、プレイ/ロールを実行するマシン上にある必要があるためです。
ドキュメントによると here
Pathのローカルスクリプトがリモートノードに転送され、実行されます。
そのための1つの方法は、ファイルをローカルにダウンロードし、次のようなタスクを使用することです。
- 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/
独自のスクリプトをアップロードする場合は最初の方法を使用しますが、スクリプトは時間内に更新される可能性があるため、2番目の方法はより便利です。実行するたびに最新のスクリプトが使用されます。
私にとっては、次のステートメントが機能しました:
- 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