IT管理用の「Ansible」自動化ツールをインストールして構成する方法-パート1


Ansible は、SSHを使用するだけでダウンタイムを発生させることなく、ノード上でソフトウェアアプリケーションを構成、管理、および展開するためのオープンソースの強力な自動化ソフトウェアです。現在、ほとんどのIT自動化ツールはリモートホストでエージェントとして実行されますが、ansibleを実行するには、SSH接続とPython(2.4以降)をリモートノードにインストールする必要があります。

Puppet、Capistrano、Chef、Salt、Space Walkなど、同様の自動化ツールが多数ありますが、Ansibleは、マシンとノードの制御という2種類のサーバーに分類されます。

Ansibleがインストールされ、ノードがSSH経由でこの制御マシンによって管理される制御マシン。ノードの場所は、インベントリを介してマシンを制御することによって指定されます。

制御マシン(Ansible)は、SSHプロトコルを使用してモジュールをノードにデプロイします。これらのモジュールはリモートノードに一時的に保存され、標準出力を介してJSON接続を介してAnsibleマシンと通信します。

Ansibleはエージェントレスです。つまり、リモートノードにエージェントをインストールする必要がないため、ノードを管理していないときに、Ansibleに対してバックグラウンドデーモンやプログラムが実行されていないことを意味します。

Ansibleは、SSH接続を介して単一のシステムから数百のノードを処理でき、操作全体を1つのコマンド「ansible」で処理および実行できます。ただし、展開のために複数のコマンドを実行する必要がある場合は、ここでプレイブックを作成できます。

プレイブックは複数のタスクを実行できる一連のコマンドであり、各プレイブックはYAMLファイル形式です。

AnsibleをITインフラストラクチャで使用して、ソフトウェアアプリケーションを管理し、リモートノードにデプロイできます。たとえば、1つのコマンドで1つのソフトウェアまたは複数のソフトウェアを数百のノードにデプロイする必要があるとします。ここでansibleが登場します。Ansibleを使用すると、1つのコマンドで多数のノードにアプリケーションをデプロイできます。ただし、ansibleスクリプトを理解するには、プログラミングに関する知識が少し必要です。

Ansibleに関するシリーズ、タイトル「Ansible IT Automation Toolを使用したITインフラストラクチャの展開の準備」をパート1〜4でまとめ、次のトピックを取り上げます。

この記事では、RHEL/CentOS 7/6、Fedora 21-19、Ubuntu 14.10-13.04、Debian 7/6システムに「Ansible」をインストールする方法を示し、管理方法の基本についても説明します。パッケージをインストールしたり、アップデートを適用したり、ベーシックからプロまで、さまざまな機能を備えたサーバー。

  1. Operating System: RHEL/CentOS/Fedora and Ubuntu/Debian/Linux Mint
  2. Jinja2: A modern, fast and easy to use stand-alone template engine for Python.
  3. PyYAML: A YAML parser and emitter for the Python programming language.
  4. parmiko: A native Python SSHv2 channel library.
  5. httplib2: A comprehensive HTTP client library.
  6. sshpass: A non-interactive ssh password authentication.
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」ソフトウェアをシステムにインストールします。

ここでは、システムで公式のAnsible PPAリポジトリを使用します。以下のコマンドを実行して、リポジトリを追加します。

$ sudo apt-add-repository ppa:ansible/ansible -y
$ sudo apt-get update && sudo apt-get install ansible -y

残念ながら、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 protected]"

5. SSHキーを正常に作成したら、作成したキーを3つのリモートサーバーすべてにコピーします。

# ssh-copy-id [email protected]
# ssh-copy-id [email protected]
# ssh-copy-id [email protected]

6.すべてのSSHキーをリモートホストにコピーした後、すべてのリモートホストでsshキー認証を実行して、認証が機能しているかどうかを確認します。

$ ssh [email protected]
$ ssh [email protected]
$ ssh [email protected]