IT 管理のための「Ansible」自動化ツールをインストールして構成する方法 - パート 1
Ansible は、SSH を使用するだけでダウンタイムなしでノード上でソフトウェア アプリケーションを構成、管理、デプロイできるオープンソースの強力な自動化ソフトウェアです。現在、ほとんどの IT オートメーション ツールはリモート ホストでエージェントとして実行されますが、Ansible が必要なのは、そのアクションを実行するために SSH 接続とリモート ノードにインストールされている Python (2.4 以降) だけです。
Ansible はどのように機能するのか?
Puppet、Capistrano、Chef、Salt、Space Walk など、同様の自動化ツールが多数利用可能ですが、Ansible はマシンとノードの制御という 2 種類のサーバーに分類されます。
Ansible がインストールされている制御マシン。SSH 経由でこの制御マシンによってノードが管理されます。ノードの場所は、インベントリを通じてマシンを制御することによって指定されます。
制御マシン (Ansible) は、SSH プロトコルを使用してモジュールをノードにデプロイします。これらのモジュールはリモート ノードに一時的に保存され、標準出力を介した JSON 接続を通じて Ansible マシンと通信します。
Ansible はエージェントレスです。つまり、リモート ノードにエージェントをインストールする必要がありません。つまり、ノードを管理していないときは、バックグラウンドでデーモンやプログラムが Ansible のために実行されないことを意味します。
Ansible は、SSH 接続経由で単一システムから数百のノードを処理でき、操作全体を 1 つの単一コマンド「ansible」で処理および実行できます。ただし、デプロイメントのために複数のコマンドを実行する必要がある場合には、ここでプレイブックを構築できます。
Playbook は複数のタスクを実行できるコマンドの束であり、各 Playbook は YAML ファイル形式です。
Ansible の用途
IT インフラストラクチャでAnsible を使用すると、ソフトウェア アプリケーションを管理し、リモート ノードに展開できます。たとえば、1 つのコマンドで 1 つのソフトウェアまたは複数のソフトウェアを数百のノードにデプロイする必要があるとします。ここで Ansible が登場します。Ansible を使用すると、1 つのコマンドで多くのノードに同じ数のアプリケーションをデプロイできます。ただし、ansible スクリプトを理解するには、多少のプログラミングの知識が必要です。
Ansible に関するシリーズを「Ansible IT 自動化ツールを使用した IT インフラストラクチャの導入の準備」というタイトルでパート 1 ~ 4 までまとめており、次のトピックを取り上げています。
この記事では、「Ansible」を RHEL/CentOS 7/6、Fedora 21-19、Ubuntu 14.10-13.04、および Debian 7/6 システムにインストールする方法を示し、また、その管理方法の基本についても説明します。パッケージのインストール、アップデートの適用など、基本からプロまでさまざまな機能を使用してサーバーを構築します。
前提条件
- オペレーティング システム: RHEL/CentOS/Fedora および Ubuntu/Debian/Linux Mint
- Jinja2: Python 用の最新の高速で使いやすいスタンドアロン テンプレート エンジンです。
- PyYAML: Python プログラミング言語の YAML パーサーおよびエミッター。
- parmiko: ネイティブ Python SSHv2 チャネル ライブラリ。
- httplib2: 包括的な HTTP クライアント ライブラリ。
- sshpass: 非対話型の ssh パスワード認証。
私の環境設定
マシンの制御 – Ansible
Operating System : Linux Mint 17.1 Rebecca
IP Address : 192.168.0.254
Host-name : tecmint.instrcutor.com
User : tecmint
リモートノード
Node 1: 192.168.0.112
Node 2: 192.168.0.113
Node 3: 192.168.0.114
ステップ 1: 制御マシンのインストール – Ansible
1. サーバーに「Ansible」をインストールする前に、まずホスト名や IP アドレスなどのサーバーの詳細を確認しましょう。 root ユーザーとしてサーバーにログインし、以下のコマンドを実行して、このセットアップに使用するシステム設定を確認します。
# sudo ifconfig | grep inet
2. システム設定を確認したら、システムに「Ansible」ソフトウェアをインストールします。
Ubuntu/Debian/Linux Mint の場合
ここでは、システム上で公式の Ansible PPA リポジトリを使用します。以下のコマンドを実行してリポジトリを追加するだけです。
$ sudo apt-add-repository ppa:ansible/ansible -y
sudo apt-get update && sudo apt-get install ansible -y
RHEL/CentOS/Fedora の場合
残念ながら、RedHat ベースのクローン用の公式 Ansible リポジトリはありませんが、RHEL/CentOS 6、7 および現在サポートされている Fedora ディストリビューションで epel リポジトリを有効にすることで Ansible をインストールできます。
Fedora ユーザーは、デフォルトのリポジトリを介して Ansible を直接インストールできますが、RHEL/CentOS 6、7 を使用している場合は、EPEL リポジトリを有効にする必要があります。
epel リポジトリを構成した後、次のコマンドを使用して Ansible をインストールできます。
$ sudo yum install ansible -y
インストールが成功したら、以下のコマンドを実行してバージョンを確認できます。
# ansible --version
ステップ 2: リモートホストへの SSH キーの準備
4. ローカルホストからリモート ホストへの展開または管理を実行するには、まず SSH キーを作成してリモート ホストにコピーする必要があります。すべてのリモート ホストには、ユーザー アカウントtecmint が存在します (あなたの場合は別のユーザーである可能性があります)。
まず、以下のコマンドを使用して SSH キーを作成し、そのキーをリモート ホストにコピーします。
# ssh-keygen -t rsa -b 4096 -C "[email "
5. SSH キーが正常に作成されたら、作成したキーを 3 つのリモート サーバーすべてにコピーします。
# ssh-copy-id [email
ssh-copy-id [email
ssh-copy-id [email
6. すべての SSH キーをリモート ホストにコピーしたら、すべてのリモート ホストで ssh キー認証を実行し、認証が機能するかどうかを確認します。
$ ssh [email
ssh [email
ssh [email