ansible wget then exec scripts => get_url equivalent

前端 未结 6 918
慢半拍i
慢半拍i 2020-12-09 09:00

I always wonder what is the good way to replace the following shell tasks using the \"ansible way\" (with get_url, etc.):

- name: I         


        
相关标签:
6条回答
  • 2020-12-09 09:04

    This worked for me:

      - 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
    
    0 讨论(0)
  • 2020-12-09 09:05

    For me, the following statement worked:

     - name: "Execute Script"
       shell: curl -sL https://rpm.nodesource.com/setup_6.x | bash -
    
    0 讨论(0)
  • 2020-12-09 09:13

    @RaviTezu solution doesn't work because the file/script that you wish to execute must be on the machine where you execute your play/role.

    As per the documentation here

    The local script at path will be transferred to the remote node and then executed.

    So one way to do it is by downloading the file locally and using a task like below:

    - name: execute the script.sh
      script: /local/path/to/script.sh
    

    Or you can do this:

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

    I would go for the first method if you are uploading your own script, the second method is more useful in your case because the script might gets updated in time so you are sure each time you execute it it uses the latest script.

    0 讨论(0)
  • 2020-12-09 09:14

    Note the: "force=yes", which will always download the script, overriding the old one. Also note the "changed_when", which you can refine per your case.

      - 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 讨论(0)
  • 2020-12-09 09:22

    May be this basic example can help you to start:

    ---
    - 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 讨论(0)
  • 2020-12-09 09:26

    Consider using the get_url or uri module rather than running curl.

    For example:

    - 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 讨论(0)
提交回复
热议问题