web-dev-qa-db-ja.com

ansible wget then exec scripts => get_urlと同等

「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 -
19
Oliboy50

これは私のために働いた:

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

@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番目の方法はより便利です。実行するたびに最新のスクリプトが使用されます。

6
sys0dm1n

私にとっては、次のステートメントが機能しました:

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

get_url または uricurlを実行するのではなくモジュール。

例えば:

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

この基本的な例を参考にしてください:

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

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