SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

LINEフロントエンドレンジャーのWeb開発術

フロントエンド開発環境構築のためのAnsible入門

LINEフロントエンドレンジャーのWeb開発術 第7回

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

Ansibleのインストール

 本記事では主にOSX(yosemite)における環境構築を目的として、Homebrewがインストール済みであることを前提に進めます。その他の環境で導入する場合は、Ansibleの公式ドキュメントを参照してください。

$ brew install ansible
$ ansible --version
  ansible 1.9.1
  configured module search path = None

AnsibleでHello World

 それでは、早速Ansibleを使ってタスクを実行します。まず、Ansibleの実行には、タスクの実行対象サーバーの一覧を定義したinventory fileが必要です。ローカルマシンに対して実行する場合においても、ansibleコマンドの実行時に必要となるため、自身を表す127.0.0.1を記述したhostsファイルを作成します。

$ echo 127.0.0.1 > hosts

 次に、ping moduleを使って自身に対してタスクの実行が正常に行われるかを確認します。-iは、inventoryの略ですが、先ほど作成したhostsファイルへのパスと、定義された実行対象サーバーを指定します。また、--connection=localはssh接続を行わず、そのままローカルで実行させるためのオプションです。-mには実行するAnsibleのModuleの名前を渡します。

$ ansible -i hosts 127.0.0.1 -m ping --connection=local
127.0.0.1 | success >> {
    "changed": false,
    "ping": "pong"
}

 ModuleとはAnsible上でタスクを定義する上で基本となるライブラリの一群です。標準でさまざまなModuleが含まれており、基本的にはそれらを使うことになりますが、必要に応じて独自に拡張することも可能です。

 サンプルで使用されていた、ping moduleは対象のサーバーとの通信を確認するModuleですが、他にもhomebrew moduleを使うとbrew install ~に該当するコマンドを実行できます。このように、AndibleではすべてのタスクがModuleを経由して実行されることになります。標準モジュールについては、公式ドキュメントのModule Indexから一覧を確認することができます。

Playbookと基本構成

 タスクの定義は、Playbookと呼ばれるyaml形式のファイルに記述します。タスクはroleという単位に分割可能ですが、再利用性を考慮し、roleは極力他のroleとの依存関係を持たせないようにします。GitHubリポジトリにPlaybookの公式サンプルがありますので、はじめはそれらに倣うと良いでしょう。

 一般的なPlaybookの構成は以下のとおりです。

root
 │ hosts
 │ site.yml
 ├─ group_vars
 │    {group name}
 └─ roles
     └─ {role name}
         ├─ files
         │    {file name}
         ├─ handlers
         │    main.yml
         ├─ tasks
         │    main.yml
         └─ templates
              {template name}
ディレクトリ/ファイル 説明
hosts 実行対象サーバーの定義ファイル。複数のマシンをグループにわけて定義します。
site.yml サーバーに実行させるroleを定義します。
group_vars グループ変数の定義ファイルの格納ディレクトリ。hosts内で定義されたグループごとに別々の変数を定義します。
roles/handlers 起動コマンドなどを定義するファイルの格納ディレクトリ。例えばMySQLのrestartコマンドなどはここで定義します。
roles/tasks メインタスクを定義するファイルの格納ディレクトリ。
roles/files システムで使用される静的なファイルの格納ディレクトリ。packageのrepファイルやconfigのファイルを格納します。
roles/templates システムで使用される動的に書きかわるファイルの格納ディレクトリ。taskの実行結果やgroup_varsの値によってconfigを書き換える必要がある場合に利用します。

次のページ
Playbookを作成する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
LINEフロントエンドレンジャーのWeb開発術連載記事一覧

もっと読む

この記事の著者

川崎 康平(LINE株式会社)(カワサキ コウヘイ)

デジタルマーケティングの代理店にて、プロダクトサイトのインタラクションやデジタルサイネージの制作に携わった後、現在はLINE株式会社のJavaScriptエンジニアとして、Webサービスの開発を担当。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8954 2015/10/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング