hello foo bar Saba note | Ansibleのインストールと基本的な使い方

Ansibleのインストールと基本的な使い方

2019.5.23 (木)

実行環境の確認

python2で動くAnsibleですが、python3でもサポートしているようです。何かとアップデートが早い時代なので、新しいものにしておいた方がよいかもしれません。
Python 3 Support

Ansibleの基本概念

  • インベントリ(inventory)

インベントリは構成管理をする対象ノードへの接続情報を記載したもの。
デフォルトでは /etc/ansible/hosts だが、環境変数 ANSIBLE_HOSTS を設定したり、-i オプションでhostsファイルへのパスを指定可能です。

  • モジュール(module)

モジュールはユーザーを作成したり、ファイルをコピーしたりするもので、多くは冪等性が保たれたものとなります。基本モジュールをそのまま利用するだけで大抵の事ができます。自分でモジュールを作ることもできます。モジュールは-mオプションで個別に実行することも可能です。

  • プレイブック(playbook)

プレイブックは複数のモジュールを組み合わせて、WEBサーバを構築するとか、DBサーバを構築するとか、の手順を記述したものです。こちらも冪等性を保つように作ります。いわゆるAnsibleの設定ファイルというものは、YAMLで記述されたこのプレイブックになります。

Ansibleって何?

Ansible入門

  • エージェントレスな構成管理ツールと呼ばれています。「Infrastructure as a Code」なんていう文脈の中では Chef, Puppet などと並んで必ず出てくるツールの1つかと思います。
  • サーバーの設定を定義ファイルにしておいて、同じ設定を別のサーバーでもできるようにする。通常はリモートの別ホストの設定をするが、ものによっては自分自身に対しての設定も可能。(Macであれば会社のPC設定なども一度に同じ設定が可能です。)
  • 通常はSSHで通信して実行する。(のでSSHの設定が必要)
  • Python3があればOK。Python2でもできる。
  • OSを判別して実行することもできる。(If分岐みたいなやつ)
  • 非常にシンプル。学習コストが低い。
  • 処理はyamlで書く。設定自体にPythonは実際は使わない。

ということになっています。
サーバーの設定というのは、インフラ担当のエンジニアが昔は手で作っていたものでした。サーバー買ってデータセンターに格納して、ネットワーク設定してOSインストールしてミドルウエアを設定してってやってました。パーテーションがどうしたこうしたとか、HDDが壊れて交換とかraidがどうしたこうしたとか、そういうことをやっていたわけです。データセンターに行ってめちゃめちゃ冷房の効きすぎた場所で真夏なのにダウン着て作業したり、そんなことをやってました。
クラウド時代になってからそういうことは全然する必要がなくなって、クラウドサーバー自体をAPIで操作できるようになったというわけです。
Ansible自体はSSHでの通信で設定を反映するので、あらかじめ作成したインフラやVMインスタンスの上にOS以上の設定をすることが可能です。inventoryで複数のホストを指定してどこに何を設定するのかをymlファイルで設定します。それらをplay-bookで実行するというのがその姿です。


Ansible 2.8 Installation Guide