it-swarm.com.ru

ansible wget затем exec scripts => get_url эквивалент

Мне всегда интересно, как можно заменить следующие Shell задачи «ansible way» (на get_url и т.д.):

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

Решение @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/

Я бы выбрал первый метод, если вы загружаете свой собственный скрипт, второй метод более полезен в вашем случае, потому что скрипт может обновляться вовремя, поэтому вы уверены, что каждый раз, когда вы его выполняете, он использует самый последний скрипт.

5
sys0dm1n

Для меня сработало следующее утверждение:

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

Может быть, этот базовый пример может помочь вам начать:

---
- 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», который всегда загружает скрипт, переопределяя старый…. Также обратите внимание на «change_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

Попробуйте использовать модуль 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
0
kenorb