16 Nov 2014, 15:32

Ansible、ソースインストールする際のPalybookの書き方

最近、Ansibleを使い始めたのだが、yumやapt-getでインストールできるものはいいけど、
どうしてもソースインストールが必要な場合がある。

ソースインストールを行う際のPlaybookの書き方と注意点をまとめた。

まず、あたりまえだが、ソースインストールを行うには以下のフローを踏まなければいけな。
1. ソースファイルの取得(tarで固められていると仮定)
2. tarファイルの解凍
3. 解答してできたディレクトリへ移動
4. configure
5. make
6. make install

また、Ansibleでは何回もPlaybookを実行していくため、
すでにインストールされている場合は、インストールをスキップする必要がある。
yumやapt-getで管理されていれば上記を心配することはないのだが、やはりソースインストールだとこの壁がある。
※パッケージ化しろよ!というツッコミは禁止

今回は例として、ubuntu13にemacsをソースインストールするのを例としてみた。

環境

【Ansible実行側】
さくらVPSの1G
OS: Centos 7
IPアドレス:192.168.33.1

【設定対象側】
上記さくらVPS上にたてたVagrantの仮想サーバ
OS: Ubuntu 13.10
IPアドレス:192.168.33.100

Playbook

以下playbookの例。

---
- hosts: 192.168.33.100
  user: vagrant
  sudo: yes

  vars:
    src_dir: /usr/local/src
    emacs_ver: emacs-23.4

  tasks:
   ## emacsのソースファイルを取得済みか確認
   - name: check exist emacs source file
     command: ls -l {{src_dir}}/{{emacs_ver}}.tar.gz
     ignore_errors: True
     register: result1

   ## emacsのソースファイル取得。ただし、すでに取得済みならスキップ
   - name: get emacs source file
     command: chdir={{src_dir}} wget http://mirror.jre655.com/GNU/emacs/{{emacs_ver}}.tar.gz
     when: result1|failed

   ## emacsのソースインストールを解凍
   - name: get emacs source file
     command: chdir={{src_dir}} tar xvf {{emacs_ver}}.tar.gz
     when: result1|failed

   ## emacsがインストールされているか確認
   #  確認基準はemacsコマンドのpathが通っているかで判断した
   - name: check emacs install
     command: which emacs
     ignore_errors: True
     register: result2

   ## emacsのインストール。ただしすでにemacsがインストールされいたらスキップ
   - name: expand emacs src
     command: chdir={{src_dir}} tar xvf {{emacs_ver}}.tar.gz
     when: result2|failed

   - name: comfigure emacs
     command: chdir={{src_dir}}/{{emacs_ver}} ./configure
     when: result2|failed

   - name: make emacs
     command: chdir={{src_dir}}/{{emacs_ver}} make
     when: result2|failed

   - name: install emacs
     command: chdir={{src_dir}}/{{emacs_ver}} make install
     when: result2|failed
 

このエントリーをはてなブックマークに追加