構成管理とAnsibleインストール編

構成管理 とは

前回Ansibleを利用する場合の言語yamlの重要性を説明いたしましたが、良く耳にする構成管理とは何なんでしょうか。

Infrastructure as Code

昔ながらのサーバー構築では、物理サーバーを調達して担当エンジニアが手順書に従ってミドルウェアをインストールする作業でした。

AWSを代表とするクラウドの台頭により、以前とは比較にならない程のスピード・台数でのサーバー構築 が可能のなりました。

そのような背景には「Infrastructure as Code」というキーワードから成り立っています。

構成管理は、大きく以下の 3 つのレイヤーで説明されることがあります。

サーバー・プロビジョニング

1.Bootstrapping: OS のプロビジョニング

AWS

Configuration: システム構成のプロビジョニング

→Chef、Puppet、Ansible などの構成管理ツール

Orchestration: アプリケーションのプロビジョニング

Capistrano、Fabirc などのデプロイツール

インストール〜基本操作

今回はインストール方法を説明いたします。 Ansibleをインストールする場合、Vagrant環境で構築したほうがよいでしょう。

Vagrantのインストール方法は下記を参考にしてください。

Vagrantインストール方法

Ansible をインストール

まずは Ansible をインストールしましょう。 Ansible 2.0 をインストールするため、pip を使ってインストールします。

なお、Ansible の実行には python が必要ですが、今回構築した実行環境には既にインストールされているため、インストール作業は不要です。


[vagrant]$ sudo yum install gcc python-devel -y [vagrant]$ curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python [vagrant]$ curl https://bootstrap.pypa.io/get-pip.py -o - | sudo python [vagrant]$ sudo pip install ansible


ansible --version を実行し、2.0 がインストールされていることを確認してください。


[vagrant]$ ansible --version ansible 2.0.0.2 config file = configured module search path = Default w/o overrides


inventory ファイルを作成する

Ansible の実行対象サーバーを定義した inventory ファイルを作成します。 inventory ファイルは ini 形式で作成します。

/etc/ansible/hosts に作成すると、実行時に自動的に読み込まれるのでそちらに作成しましょう。


[vagrant]$ sudo mkdir -p /etc/ansible [vagrant]$ sudo vi /etc/ansible/hosts


ファイルの中身には、事前に配布された EC2 インスタンスのパブリック IP アドレスを記載します。


xx.xx.xx.xx


ansible コマンド

ansible コマンドを使って、簡単なシェルをサーバー上で実行してみましょう。


[vagrant]$ ansible all -m command -a "uptime" -u ec2-user --private-key machiiro-tools.pem xx.xx.xx.xx | SUCCESS | rc=0 >> 07:41:19 up 34 min, 1 user, load average: 0.00, 0.01, 0.05


・all を指定したことで、inventory ファイルに記載された全サーバーが対象となります

・all の代わりに IP アドレスを指定すると、対象サーバーのみに対して実行されます ・-m でモジュールを指定します。詳細は別章で説明します

・-a で実行シェルを指定します ・-u で実行ユーザーを指定します ・--private-key で SSH 秘密鍵を指定します

ansible.cfg ファイルを作成する

毎回 --private-key を指定するのは煩雑なので、Ansible 設定ファイル ansible.cfg を作成しましょう。


[vagrant]$ sudo vi /etc/ansible/ansible.cfg



[defaults] private_key_file=./machiiro-tools.pem


--private-key を指定せずに、ansible-playbook が実行可能なことを確認してください。


[vagrant]$ ansible all -m command -a "uptime" -u ec2-user xx.xx.xx.xx | SUCCESS | rc=0 >> 07:41:19 up 34 min, 1 user, load average: 0.00, 0.01, 0.05