内容紹介
インフラ構築ツールとして、Chefをしのぐ勢いで普及しつつあるAnsibleの総合入門書!
Ansibleの総合的な解説書です。基礎から、ある程度高度な実践までを一冊でカバーしています。導入的な部分が丁寧に解説されており、初級~中級のエンジニアに喜ばれる内容です。また、ソフトウェア開発者やテストエンジニアにとっても、こういった環境構築の省力化は大きなテーマであり、読者層として期待できます。
このような方におすすめ
インフラエンジニア(初級~中級)ソフト開発・テストエンジニア
目次
詳細目次
序文
訳者まえがき
はじめに
1章 イントロダクション
1.1 バージョンについて
1.2 Ansibleが役立つこと
1.3 Ansibleの動作
1.4 Ansibleがすばらしい理由
1.4.1 読みやすい構文
1.4.2 リモートホストへのインストールが不要
1.4.3 プッシュベース
1.4.4 スケールダウン
1.4.5 組み込みモジュール
1.4.6 抽象化層の薄さ
1.5 Ansibleはシンプルすぎる?
1.6 事前に必要な知識
1.7 本書で取り上げないこと
1.8 Ansibleのインストール
1.9 テスト用サーバーのセットアップ
1.9.1 Vagrantを使ったテストサーバーのセットアップ
1.9.2 テストサーバーのことをAnsibleに知らせる
1.9.3 ansible.cfgによる簡略化
1.10 今後に向けて
2章 Playbook: 始めてみよう
2.1 準備を少々
2.2 ごくシンプルなPlaybook
2.2.1 nginxの設定ファイルの指定
2.2.2 カスタムホームページの作成
2.2.3 Webserversグループの作成
2.3 Playbookの実行
2.4 PlaybookはYAMLです
2.4.1 ファイルの先頭
2.4.2 コメント
2.4.3 文字列
2.4.4 論理値
2.4.5 リスト
2.4.6 辞書
2.4.7 行の折り返し
2.5 Playbookの解剖学
2.5.1 Play
2.5.2 タスク
2.5.3 モジュール
2.5.4 まとめ
2.6 変わりはありませんか? ホストの状態の追跡
2.7 もう少しスマートに: TLSのサポート
2.7.1 TLS証明書の生成
2.7.2 変数
2.7.3 nginxの設定テンプレートの生成
2.7.4 ハンドラ
2.7.5 Playbookの実行
3章 インベントリ:サーバーの記述
3.1 インベントリファイル
3.2 準備:複数のVagrantマシン
3.3 インベントリの振る舞い型パラメータ
3.3.1 ansible_connection
3.3.2 ansible_shell_type
3.3.3 ansible_python_interpreter
3.3.4 ansible_*_interpreter
3.3.5 振る舞い型のパラメータのデフォルトの変更
3.4 グループとグループとグループ
3.4.1 サンプル:Djangoアプリケーションのデプロイ
3.4.2 エイリアスとポート
3.4.3 グループのグループ
3.4.4 番号付きホスト(ペット対牛)
3.5 ホストとグループ変数:インベントリの内部
3.6 ホストとグループ変数:ファイルへの分配
3.7 動的なインベントリ
3.7.1 動的インベントリスクリプトのインターフェース
3.7.2 動的インベントリスクリプトの作成
3.7.3 既存のインベントリスクリプト
3.8 複数ファイルへのインベントリの分割
3.9 add_hostとgroup_byによる実行時のエントリの追加
3.9.1 add_host
3.9.2 group_by
4章 変数とファクト
4.1 Playbook内での変数の定義
4.2 変数の値の表示
4.3 変数の登録
4.4 ファクト
4.4.1 サーバーに関連づけられたすべてのファクトの表示
4.4.2 一部のファクトの表示
4.4.3 任意のモジュールによるファクトの収集
4.4.4 ローカルファクト
4.5 set_factによる新しい変数の定義
4.6 組み込み変数
4.6.1 hostvars
4.6.2 inventory_hostname
4.6.3 グループ
4.7 コマンドライン上での変数の設定
4.8 優先順位
5章 Mezzanineの紹介:本書でのテスト用アプリケーション
5.1 プロダクション環境へのデプロイが複雑な理由
5.1.1 PostgreSQL : データベース
5.1.2 Gunicorn : アプリケーションサーバー
5.1.3 nginx : Webサーバー
5.1.4 Supervisor : プロセスマネージャ
6章 AnsibleによるMezzanineのデプロイ
6.1 Playbookでのタスク群のリスト化
6.2 デプロイされるファイル群の構成
6.3 変数とシークレット変数
6.4 イテレーション(with_items)を利用した複数のパッケージのインストール
6.5 タスクへのbecome節の追加
6.6 aptキャッシュの更新
6.7 Gitを使ったプロジェクトのチェックアウト
6.8 Mezzanineとその他のパッケージ群のvirtualenvへのインストール
6.9 タスク中の複雑な引数:ちょっと寄り道を
6.10 データベースとデータベースユーザーの作成
6.11 テンプレートからのlocal_settings.pyファイルの作成
6.12 django-manageコマンドの実行
6.13 アプリケーションのコンテキスト内でのカスタムPythonスクリプトの実行
6.13.1 サービス設定ファイルの設定
6.14 nginxの設定の有効化
6.15 TLS証明書のインストール
6.16 TwitterのCronジョブのインストール
6.17 完全なPlaybook
6.18 仮想マシンに対するPlaybookの実行
6.19 複数のマシンへのMezzanineのデプロイ
7章 複雑なPlaybook
7.1 コントロールマシン上でのタスクの実行
7.2 ホスト以外のマシン上でのタスクの実行
7.3 ファクトの手動収集
7.4 一度の一つのホストでの実行
7.5 1回だけの実行
7.6 おかしな動作のコマンドの扱い: changed_when及びfailed_when
7.7 ホストからのIPアドレスの取り出し
7.8 Vaultによるセンシティブなデータの暗号化
7.9 ホスト指定のパターン
7.10 実行ホストの制限
7.11 フィルタ
7.11.1 デフォルトのフィルタ
7.11.2 登録された変数のためのフィルタ
7.11.3 ファイルパスのためのフィルタ
7.11.4 独自のフィルタの作成
7.12 ルックアップ
7.12.1 ファイル
7.12.2 パイプ
7.12.3 env
7.12.4 パスワード
7.12.5 テンプレート
7.12.6 csvファイル
7.12.7 dnstxt
7.12.8 redis_kv
7.12.9 etcd
7.12.10 独自のルックアッププラグインの作成
7.13 更に複雑なループ
7.13.1 with_lines
7.13.2 with_fileglob
7.13.3 with_dict
7.13.4 ルックアッププラグインとしてのループ構造
8章 ロール:プレイブックのスケールアップ
8.1 ロールの基本構造
8.2 サンプル:データベースとMezzanineのロール
8.3 Playbooks中でのロールの利用
8.4 pre_tasksとpost_tasks
8.5 データベースのデプロイのための"database"ロール
8.6 Mezzanineのデプロイのための"mezzanine"ロール
8.7 ansible-galaxyでのロールファイルとディレクトリの作成
8.8 依存ロール
8.9 Ansible Galaxy
8.9.1 Webインターフェース
8.9.2 コマンドラインインターフェース
8.9.3 独自のロールの寄贈
9章 Ansibleの高速化
9.1 SSHマルチプレキシングとControlPersist
9.1.1 手動でのSSHマルチプレキシングの有効化
9.1.2 AnsibleでのSSHマルチプレキシングのオプション
9.2 パイプライン
9.2.1 パイプラインの有効化
9.2.2 パイプラインのためのホストの設定
9.3 ファクトのキャッシュ
9.3.1 JSONファイルをバックエンドとするファクトのキャッシュ
9.3.2 Redisをバックエンドとするファクトのキャッシュ
9.3.3 Memcachedをバックエンドとするファクトのキャッシュ
9.4 並列処理
9.5 加速モード
9.6 Fireballモード
10章 カスタムモジュール
10.1 サンプル: リモートサーバーへの接続性チェック
10.2 独自モジュールの代わりにスクリプトモジュールを使う
10.3 モジュールとしてのcan_reach
10.4 カスタムモジュールの置き場所
10.5 Ansibleによるモジュールの起動方法
10.5.1 スタンドアローンのPythonスクリプトの引数付きでの生成
(Pythonのみ)
10.5.2 ホストへのモジュールのコピー
10.5.3 ホスト上での引数ファイルの作成(Python以外のみ)
10.5.4 モジュールの呼び出し
10.6 期待される出力
10.6.1 Ansibleが求める出力変数
10.7 Pythonでのモジュールの実装
10.7.1 引数のパース
10.7.2 パラメータへのアクセス
10.7.3 AnsibleModuleヘルパークラスのインポート
10.7.4 引数のオプション
10.7.5 AnsibleModuleの初期化パラメータ
10.7.6 成功もしくは失敗を返す
10.7.7 外部コマンドの起動
10.7.8 チェックモード(DryRun)
10.8 モジュールのドキュメントの作成
10.9 モジュールのデバッグ
10.10 bashでのモジュールの実装
10.11 bashに対する代替の場所の指定
10.12 サンプルのモジュール
11章 Vagrant
11.1 Vagrantの便利な設定オプション
11.1.1 ポートフォワーディングとプライベートIPアドレス
11.1.2 Agentのフォワーディングの有効化
11.2 Ansibleプロビジョナ
11.3 プロビジョナが実行されるとき
11.4 Vagrantが生成するインベントリ
11.5 並列プロビジョニング
11.6 グループの指定
12章 Amazon EC2
12.1 用語
12.1.1 インスタンス
12.1.2 Amazon Machine Image
12.1.3 タグ
12.2 クレデンシャルの指定
12.2.1 環境変数
12.2.2 設定ファイル
12.3 必要なもの: Boto Pythonライブラリ
12.4 動的なインベントリ
12.4.1 インベントリのキャッシング
12.4.2 他の設定オプション
12.4.3 自動生成グループ
12.5 タグを持つ動的グループの定義
12.5.1 既存のリソースへのタグの適用
12.5.2 グループの良い名前
12.6 EC2 Virtual Private Cloud(VPC)とEC2 Classic
12.7 EC2のためのansible.cfgの設定
12.8 新しいインスタンスの起動
12.9 EC2の鍵ペア
12.9.1 新しい鍵の生成
12.9.2 既存の鍵のアップロード
12.10 セキュリティグループ
12.10.1 アクセス可能なIPアドレス
12.10.2 セキュリティグループのポート
12.11 最新のAMIの取得
12.12 グループへの新しいインスタンスの追加
12.13 サーバーの起動の待機
12.14 冪等性を持つインスタンスの起動方法
12.15 仕上げ
12.16 VPCの指定
12.16.1 動的なインベントリとVPC
12.17 AMIの構築
12.17.1 ec2_amiモジュールの利用
12.17.2 Packerの利用
12.18 その他のモジュール
13章 Docker
13.1 DockerとAnsibleを組み合わせるケース
13.2 Dockerアプリケーションのライフサイクル
13.3 MezzanineのDocker化
13.4 AnsibleによるDockerイメージの作成
13.4.1 Mezzanine
13.5 その他のコンテナイメージ
13.5.1 PostgreSQL
13.5.2 Memcached
13.5.3 nginx
13.5.4 証明書
13.5.5 イメージの構築
13.6 Docker化されたアプリケーションのデプロイ
13.7 データベースコンテナの起動
13.8 データベースコンテナのIPアドレスとマップされたポートの取得
13.9 データベースの起動の待機
13.9.1 データベースの初期化
13.9.2 Memcachedコンテナの起動
13.9.3 Mezzanineコンテナの起動
13.9.4 証明書コンテナの起動
13.9.5 Nginxコンテナの起動
13.10 完成したPlaybook
14章 Playbookのデバッグ
14.1 SSHの問題のデバッグ
14.2 Debugモジュール
14.3 Assertモジュール
14.4 実行前のPlaybookのチェック
14.4.1 構文チェック
14.4.2 ホストのリスト
14.4.3 タスクのリスト
14.4.4 チェックモード
14.4.5 Diff(ファイルの差分の表示)
14.5 実行するタスクの制限
14.5.1 step
14.5.2 start-at-task
14.5.3 タグ
14.6 今後に向かって
付録A SSH
A.1 ネイティブのSSH
A.2 SSHエージェント
A.3 ssh-agentの起動
A.3.1 Mac OS X
A.3.2 Linux
A.3.3 エージェントのフォワーディング
A.4 sudoとエージェントフォワーディング
A.5 ホストの鍵
付録B デフォルトの設定
付録C EC2クレデンシャルのためのIAMロールの利用
C.1 AWSマネージメントコンソール
C.2 コマンドライン
付録D Ansibleを利用したプロビジョニング方法
D.1 はじめに
D.2 Ansible以前の構成
D.3 プロビジョニング
D.3.1 リポジトリの構造
D.3.2 playbookの作成
D.3.3 テストコード
D.3.4 playbook
D.3.5 デプロイ
D.4 まとめ
付録E Ansible 2.0
E.1 Ansible 2.0の概要
E.2 新機能
E.2.1 タスクブロック
E.2.2 Execution Strategyプラグイン
E.2.3 プラグイン
付録F 用語集
付録G 参考文献
索引
続きを見る