おはこんばんちは!! 尾藤 a.k.a. BTO です。
cronはもうオワコンにしたいな〜と思いつつ、じゃあ何がいいんだよと思って Rundeck を試しています。 UUUM のサーバは基本 Ubuntu を使っているんですが、Rundeck 用のパッケージは用意されていないので、Rundeck のサイトから deb パッケージをダウンロードしてインストールします。 それ用に ansible の設定を書いたので、今日はそのお話です。
Rundeckがインストールされているかチェックする
- name: check if rundeck is installed command: dpkg-query -W rundeck register: rundeck_check failed_when: rundeck_check.rc > 1 changed_when: rundeck_check.rc == 1
まずは何がともあれ、Rundeck がインストールされているかどうかチェックしましょう。 パッケージがインストールされているかどうかは、dpkg-query -W で判定できます。 コマンドの実行結果は、rundeck_check に格納しています。
このコマンドは、指定されたパッケージが存在しないと、リターンコード 1 を返します。 このままではエラーで ansible が終了してしまいますので、リターンコードが 1 の場合は、failed ではなく changed になるように、changed_when で指定します。
failed_when は念のため入れてみましたが、なくてもいいと思います。
- include: install.yml when: rundeck_check.changed
rundeck_check が changed の場合に、インストールします。 そのために when で指定して、install.yml をインクルードしています。
別ファイルの yaml にしているのは、毎回 when を指定するのを防ぐためです。
Rundeck をインストールする
- name: download rundeck get_url: url={{ rundeck_url }} dest=/tmp/{{ rundeck_package_name }} - name: install rundeck sudo: true apt: deb=/tmp/{{ rundeck_package_name }}
Rundeck をインストールします。
get_url モジュールで deb パッケージを /tmp にダウンロードします。
次に apt モジュールで、ダウンロードした deb パッケージを指定して、インストールします。
ToDo
パッケージのアップグレードとかに対応してませんが、とりあえずはこれで動かしてみる。
結論
お約束
UUUMではエンジニアを募集しています。 興味のある方は、採用ページからご連絡ください。