最近、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