初めてのAnsible

Book description

本書はサーバーの構成管理ツールAnsibleについての総合的な入門書です。設定管理のスクリプトであるPlaybookの基礎から、オープンソースの本格的なコンテンツ管理システムのインストールについて、順を追って説明します。そしてAnsibleの高速化やカスタムモジュール、VagrantやAmazonEC2、Dockerとの連携など、Ansibleの活用に役立つ事柄をサンプルを使いながら詳述します。日本語版付録として中山幸治氏による「Ansibleを利用したプロビジョニング方法」を収録。サーバーを上手に管理したいエンジニア必携の一冊です。

Table of contents

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

Product information

  • Title: 初めてのAnsible
  • Author(s): Lorin Hochstein, Sky株式会社 玉川 竜司
  • Release date: April 2016
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873117652

You might also like

book

Python機械学習クックブック

by Chris Albon, 中田 秀基

Pythonによる機械学習を進める上で、頻繁に遭遇すると思われる200超の問題とその解決策を紹介。データ構造(ベクトル、行列、配列)、数値データ、カテゴリデータ、テキスト、画像、日時データの取り扱いといったデータ分析の基本から、特徴量抽出、次元削減、モデルの評価と選択、線形回帰、決定木、ランダムフォレスト、k-最近傍法、SVM、ナイーブベイズ、クラスタリング、ニューラルネットワーク、訓練済みモデルのセーブとロードなど、幅広い内容をカバー。巻末に日本語版付録「日本語テキストの取り扱い」を収録。「やりたいこと」「困っていること」に答えてくれる一冊です。

book

Rではじめるデータサイエンス

by Hadley Wickham, Garrett Grolemund, 黒川 利明, 大橋 真也

ggplot2、dplyrといったRを代表するパッケージやRStudioの開発で知られる「Rの神様」ハドリー・ウィッカムと、『RStudioではじめるRプログラミング入門』の著者ギャレット・グロールマンドによる、Rプログラミングを通してデータサイエンスの理解と知識を深めるための一冊。Rの機能と威力を知り尽くし、また、統計とデータサイエンス教育のプロフェッショナルでもある著者たちによるわかりやすくクリアな説明は、既存のデータサイエンス入門書とは一線を画します。データサイエンティストを目指すなら必読の一冊です。

book

ハイパフォーマンスPython

by Micha Gorelick, Ian Ozsvald, 相川 愛三

Pythonの高速化技法について一歩踏み込んだプロユースの解説書。ボトルネックの測定方法から、最適なデータ構造の使い分け、CythonやPyPyなどのコンパイラの比較、numpyなどのパッケージの使い方、マルチコアCPUの活用法、メモリ効率を劇的に改善するトライ構造や近似計算まで、シンプルな実例プログラムを用いながらわかりやすく説明します。高性能なプログラムの書き方だけでなく、高性能なシステムの作り方を総合的に学ぶことができるPythonエキスパート必携の一冊です。

book

初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド

by Jon Bodner, 武舎 広幸

イディオマティックなGo言語の解説書。構文がシンプル、静的型付け、タイプセーフでメモリセーフ、バグが入り込みにくい、並行処理が得意、実行速度が速い……これらの魅力的な特徴を生かすためには、Go言語らしい書き方を可能にする「イディオム」を学ぶ必要があります。Go言語のイディオムをマスターすれば、効率的で読みやすいコードを書けます。本書では、Go言語の基本機能を明快かつ簡潔に説明しつつ、イディオマティックなGoコードの書き方やGoプロジェクトの設計方法を解説します。読者はベテランのGo開発者のように考える術を学べます。