Ansibleでシェルをダウンロードして実行、または展開
例1: lazydockerのシェルをダウンロードして実行
lazydockerというTUIのインストール処理をPlaybookに書く場合、ansible.builtin.get_url、ansible.builtin.shellモジュールを使う
シェルをcurlでダウンロードして部分はansible.builtin.get_url
シェルを実行する部分はansible.builtin.shell、またはansible.builtin.commandを使う
$ curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash
↓
code:ubuntu.yml
---
- name: Download install shell
ansible.builtin.get_url:
url: https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh
dest: /tmp
mode: '0755'
- name: execute install shell
ansible.builtin.shell:
cmd: ./install_update_linux.sh
chdir: /tmp
例2: lazygit(Ubuntu版)をダウンロードしてインストール
lazygitのインストール処理ではcurlを使ってインストールするようになっている
$ LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K^"*')
$ curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
$ tar xf lazygit.tar.gz lazygit
$ sudo install lazygit /usr/local/bin
こういうときは変数に格納して、ansible.builtin.unarchiveで解凍して配置する
Ansibleで変数を使う→Ansible Registered variable
code:ubuntu.yml
---
- name: set LAZYGIT_VERSION
ansible.builtin.shell: >
curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K^"*'
register: LAZYGIT_VERSION
- name: Download and extract lazygit.tar.gz
ansible.builtin.unarchive:
src: 'https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_{{ LAZYGIT_VERSION.stdout }}_Linux_x86_64.tar.gz'
dest: /usr/local/bin
remote_src: yes
become: yes
確認用
Q. Ansibleでシェルをダウンロードして実行
関連
curl
#Ansible