LoginSignup
2
4

More than 5 years have passed since last update.

初めてのAnsible 整理

Posted at

「初めてのAnsible」を読み進めながらのメモ

前掲
初めてのAnsible(1章:イントロダクション)
初めてのAnsible(2章:Playbook:始めてみよう)
初めてのAnsible(3章:インベントリ:サーバーの記述)
初めてのAnsible(4章:変数とファクト)
初めてのAnsible(7章:複雑なPlaybook)
初めてのAnsible(8章:ロール:プレイブックのスケールアップ)
初めてのAnsible(9章:Ansibleの高速化)
初めてのAnsible(10章:カスタムモジュール)

Ansibleとは

  • 構成管理ツール
    • VagrantやDocker、種々のIaaSなんかも使える
  • ホスト(サーバ)にエージェントをインストール必要がない(必要なのは以下のみ)
    • ホスト:Python2.5+ or Python2.4(simplejsonライブラリ必要)
    • コントロールマシン:Python2.6+

ディレクトリ構成

playbooks/
├── inventories/
│    ├── production/
│    │   ├── hosts.yml            # production環境のインベントリファイル
│    │   ├── group_vars/          # production環境のグループ変数設定ファイル群
│    |   |    ├── group1
│    |   |    └── group2
│    │   └── host_vars/           # production環境のホスト変数ファイル群
│    |        ├── hostname1
│    |        └── hostname2
│    └── staging/
│        ├── hosts.yml            # staging環境のインベントリファイル
│        ├── group_vars/          # staging環境のグループ変数ファイル群
│        |    ├── group1
│        |    └── group2
│        └── host_vars/           # staging環境のホスト変数ファイル群
│             ├── hostname1
│             └── hostname2
├── library/                      # カスタムモジュール
├── filter_plugins/               # フィルタープラグイン
├── site.yml                      # マスターplaybook
├── webservers.yml                # webserver層のplaybook
├── dbservers.yml                 # dbserver層のplaybook
└── roles/                        # ロールファイル群
     ├── common/                  # commonロールファイル群
     |    ├── tasks/              # タスク群
     |    |    └── main.yml
     |    ├── handlers/           # ハンドラ群
     |    |    └── main.yml
     |    ├── templates/          # テンプレートファイル群
     |    |    └── ntp.conf.j2
     |    ├── files/              # アップロードファイル群
     |    |    ├── bar.txt
     |    |    └── foo.txt
     |    ├── vars/               # オーバーライドすべきでない変数群
     |    |    └── main.yml
     |    ├── defaults/           # オーバーライドできるデフォルトの変数群
     |    |    └── main.yml
     |    └── meta/               # 依存ロール設定ファイル
     |         └── main.yml
     ├── webtier/
     |    :
     ├── monitoring/
     |    :
     └── fooapp/
          :

Playbook

  • YAML形式で記述される 設定管理スクリプト
  • 1つ以上のPlayのリスト

Play

  • ホストとタスクを結びつけるもの で以下を含む
    • 設定するホストの集合
    • ホスト上で実行するタスクのリスト

インベントリファイル

  • インベントリ : Ansibleの知るホスト群

  • インベントリファイルにはホスト群を記述

    • ホストのグループを定義可能
    • AWS EC2 など動的にインベントリを設定することも可能

変数

記述することで定義できる変数と、Ansibleが定義してくれる変数がある

ホスト変数

  • 各ホストに関する変数
  • host_vars/hostname1 で hostname1 の変数を定義

グループ変数

  • 各グループに関する変数
  • group_vars/group1 で group1 に属するホストに変数を定義
  • グループの積集合に対して変数を定義する、なども可能

ファクト

  • ホストに関する情報を保存した変数
    • CPUアーキテクチャ / OS / IPアドレス など
  • playbook実行のはじめにファクトの収集が行われる

ロール

  • playbookを分割・再利用するための仕組み

依存ロール

  • あるロールが依存する1つ以上のロールを指定可
  • 指定された依存対象のロールが実行されることを保証
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4