Ansibleを勉強しているという話

久しぶりの投稿です。1年数ヶ月という忙しい期間から脱し、ようやっとブログ再開のめどが立ちました。さて、タイトルにも書いた通り、最近KUJIRAはAnsibleを勉強しております。なのでそのことについて今日は書きます。

Ansibleは、Python製のサーバ構築自動化フレームワークです。学習しようと思った理由は、案件の兼ね合いだったり、個人的に環境構築をコードで管理したかったというのがあります。同じようなコンセプトのフレームワークとしてchefやpuppetがありますが以下の理由でAnsibleにしました。

  • chef勉強しようと思ったけどrubyに抵抗があった
  • chefだとデプロイ先のサーバにもエージェントを入れないといけなかった(今は違うと思うけど)
  • chefとpuppetの環境定義の記述方法がちょっとう〜んってなった(好みの問題でディスっている訳ではありません)
  • 個人的にすんなり入れた

とまぁ、ほとんど好みや興味だけなんですが、根っこがpythonということもあり、やっている人は世界にはそれなりにいるようです。人気は?というとGoogle Trendsで調べると全然chefやpuppetに勝てませんが、それでも使い方が簡単なので自分はおすすめしたいです。

で、今日は何話すの?ということでインストール方法、プロジェクトが抱える今後の課題みたいなものをつらつらと書いていこうかなと思います。

■Ansibleのインストール方法

Ansibleのインストール方法にはいくつか方法があります。詳細はこちらを参照してください。大きく分けるとOSの種類ごとに分かれています。

  • Linuxの場合
    • ディストリビューションのパッケージ管理システムで入れることができます。CentOSなどのRedhat系ならyumで、UbuntuなどのDebian系ならapt-getでそれぞれ入れられます。
  • Macの場合
    • brewでインストールできます
  • その他
    • pipで入れる方法があります。(Linuxで入れるにしてもMacで入れるにしてもこっちの方がメジャー)

●実際に入れてみる

注意:Ubuntu16ではデフォルトでPython3が入っていますが、Ansible2.2の段階ではPython3のサポートはされていません。そのためPython2.7を使用してください。

Linuxに入れる

CentOSの場合

CentOSを始めRedhat系列のLinuxにはyumが入っているのでそれを使います。

# yum -y install ansible
Ubuntuの場合

Ubuntuを始めDebian系のLinuxにはapt-getが入っているのでそれを使います。Ubuntuの標準リポジトリにはAnsibleは含まれていません。なので、ppaリポジトリからダウンロードするようにします。

# apt-get install software-properties-common
# apt-add-repository ppa:ansible/ansible
# apt-get update
# apt-get install ansible

Macに入れる

Macにはbrewというパッケージ管理アプリケーションがあるためをれを使います。

$ brew install ansible

pipで入れる

もっともメジャーな入れ方です。というかこの方法を覚えておけばMacでもLinuxでも同じ手順でできます。

大まかな手順は

  • python pipをインストールする(pipのインストールについては外部のサイトを参照してください。余裕があったら書きます)
  • pipコマンドを以下のように実行しansibleをインストールする
# pip install ansible

とまぁ、適当に書きましたがインストールは結構簡単でした。実際にCentOS、Ubuntu、Macに入れましたが依存関係もアプリ側で全部吸収してくれるのでストレスフリーです。ビバパッケージ管理ソフト!

ということでインストール方法は以上。

■プロジェクトが抱える課題

プロジェクトが抱える問題として今一番ホットなのはPython3対応かと思います。Ubuntu16ではデフォルトのPythonのバージョンが3になっているので現行のAnsibleでは動きません。理由はPython2.7で組まれているからです。

これは利用している側も開発側も結構頭の痛い内容です。早く対応されるといいなぁと思っています(お前も何かしろよという説もありますが・・・)

最後にAnsibleのサイトとGithubのURLを貼っておきます

Ansible: https://www.ansible.com/
Github: https://github.com/ansible/ansible

と適当に概要を話したところで今日はここまで。