Ansible 整理的初次体验

在阅读《初次使用Ansible》的同时进行笔记。

前述
第一次使用Ansible(第一章:简介)
第一次使用Ansible(第二章:Playbook入门)
第一次使用Ansible(第三章:主机清单:描述服务器)
第一次使用Ansible(第四章:变量和事实)
第一次使用Ansible(第七章:复杂的Playbook)
第一次使用Ansible(第八章:角色:扩展Playbook)
第一次使用Ansible(第九章:加速Ansible)
第一次使用Ansible(第十章:自定义模块)

Ansible是什么?

構成管理ツール

VagrantやDocker、種々のIaaSなんかも使える

ホスト(サーバ)にエージェントをインストール必要がない(必要なのは以下のみ)

ホスト:Python2.5+ or Python2.4(simplejsonライブラリ必要)
コントロールマシン:Python2.6+

目录结构

    • 公式ドキュメントのBest Practicesにある例を

Alternative Directory Layout

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/
          :

战略规划书

    • YAML形式で記述される 設定管理スクリプト

1つ以上のPlayのリスト

    • ホストとタスクを結びつけるもの で以下を含む

設定するホストの集合
ホスト上で実行するタスクのリスト

库存文件

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

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

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

变量

在中文母语中,可使用以下方式改写:

有一些变量可以通过描述来定义,还有一些变量是由Ansible自动定义的。

主机变量

    • 各ホストに関する変数

host_vars/hostname1 で hostname1 の変数を定義

团队变量

    • 各グループに関する変数

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

事实 (jishí)

    • ホストに関する情報を保存した変数

CPUアーキテクチャ / OS / IPアドレス など

playbook実行のはじめにファクトの収集が行われる

卷筒

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

角色分工

    • あるロールが依存する1つ以上のロールを指定可

 

    指定された依存対象のロールが実行されることを保証
bannerAds