カテゴリー
Linux

【Ansible】SDKMAN! を curl を使わないでインストールするタスク

SDKMAN! のインストールは簡単!

公式ページ Installation – SDKMAN! にあるようにワンライナーで完了です。

$ curl -s "https://get.sdkman.io" | bash

これを単純に Ansible タスクで書くと次のようになります。

- name: Install SDKMAN!
  shell: curl -s "https://get.sdkman.io" | bash

ところが実行してみますと、次のような警告が出ました。

TASK [sdkman : Install SDKMAN!] ************************************************
changed: [default]
 [WARNING]: Consider using get_url or uri module rather than running curl

この警告を出ないようにしてみましたのでノートします。

Ansible の警告の内容

  • curl を使用しないで、get_url や uri モジュールを使ってね♪

警告に対処したタスクの内容

- name: Fetch SDKMAN!
  uri:
    url: https://get.sdkman.io
    return_content: yes
  register: get_sdkman_io

- name: Install SDKMAN!
  shell: "{{ get_sdkman_io.content }}"

タスクを 2 つに分け、

  1. 1 番目のタスクで curl で取得していた内容を uri モジュールを使用して変数に格納することで行い、
  2. 2 番目のタスクで変数の内容を shell モジュールで実行しています。

一時ファイルを作成しないで済ませるところが特徴でしょうか。

不満としては、command モジュールを本当は使用したかったのですけれども、エラーとなってしまいました。

どうやら 1 行が 1 つの引数と判断されてしまうようです。

でやむなく shell モジュールを使用しています。もっと良い書き方は無いものでしょうか。

おわりに

次のページが参考になりました。ありがとうございます!

以上です。

コメントを残す