課題
Ubuntuでコマンドのセットアップを行いたいが、そのコマンドはデフォルトのaptリポジトリに入っておらず、自身でダウンロードしてPATHに配置する必要がある。Ansibleではどのように実現できるか。
解決策
ansible.builtin.get_urlモジュールを利用する。これは指定のURLからファイルをダウンロードするためのモジュールである。URL、配置パス、所有者や権限の設定を行うことができる。また環境変数として設定されているプロキシの利用有無の切り替え等も可能。
実際に筆者が作成した、get_urlを利用するplaybookを示す。このplaybookではyqをセットアップする。
- name: install yq main process hosts: all gather_facts: yes become: yes environment: http_proxy: "{{ proxy_setting }}" https_proxy: "{{ proxy_setting }}" vars: ARCH: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}" tasks: - name: install yq get_url: url: "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_{{ ARCH }}" dest: /usr/local/bin/yq owner: root group: root mode: o=rwx,g=rx,o=rx use_proxy: "{{ 'true' if proxy_setting != '' else 'false' }}"
所感
このツールをAnsibleのコア機能の一部として提供してくれるのはありがたい。wgetやcurlを使っても良いが、やはりそのときの環境や設定に依存してしまい面倒であるからだ。特にプロキシ設定に関して、playbook上から明示的に指示できるので、会社イントラ内での運用にも便利である。