Ansibleは、単一のマシンから複数のリモートホストを管理するための無料で使いやすい自動化ツールです。多数のリモートホスト用に簡単に構成できます。たとえば、複数のマシンで同じタスクを実行している場合、Ansibleにはこれらのタスクを自動化するオプションがあります。
Ansibleは、ChefやPuppetなどの他の一般的なインフラストラクチャ自動化ツールの優れた代替手段です。 Ansibleサーバーを介して管理するために、ノードにクライアントソフトウェアをインストールする必要はありません。 SSH接続を使用してホスト上でタスクを実行します。
このチュートリアルは、Debian 10LinuxシステムにAnsibleをインストールして構成するのに役立ちます。
前提条件
このチュートリアルでは、次のホストがあります。
- 1つの制御ノード– Ansibleを使用してインフラストラクチャを構築するには、Ansibleサーバーが実行される制御ノードが必要です。これは、Ansibleコントロールノードとして知られています。
- 1つ以上のホスト–異なる2つのオペレーティングシステムで実行されている3つのホストがあります。
- Ubuntu 20.04LTSを備えた2つのホスト
- CentOS8を搭載した1つのホスト
ステップ1-SSHキーを構成する
Ansibleコントロールノードはssh接続を使用してホストを接続します。パスワードまたはキーベースのsshアクセスを使用してホストに接続するようにAnsibleを構成できます。このチュートリアルでは、両方のタイプ(パスワードとキーベースのssh)を使用して、制御ノードからホストを接続します。
Ansibleコントロールノードにログインし、sshキーペアを生成します(生成されていない場合)。
ssh-keygen -t rsa
コマンドによって要求されたすべての入力に対して「Enter」を押すだけです。
次に、公開鍵をリモートホストにコピーします。鍵ベースで接続する必要があります。
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ステップ2–DebianにAnsibleをインストールする
Ansible debianパッケージは、公式のAptリポジトリから入手できます。 PPAをシステムに追加するだけです。次のコマンドを使用して、Ansibledebianリポジトリをシステムに追加します。
sudo apt-add-repository ppa:ansible/ansible
Software Updaterユーティリティは、システムのパッケージキャッシュを更新します。したがって、DebianシステムにAnsibleをインストールまたは更新するには、次のコマンドを実行する必要があります
sudo apt update
sudo apt install ansible
すべてのインストール確認のために「Y」を押して、インストールプロセスを完了します。次に、Ansibleサーバーを構成する必要があります
ステップ3–インベントリファイルを作成する
制御ノードにAnsibleサーバーをインストールしました。
次に、ホストをAnsibleサーバーに追加する必要があります。 Ansibleを使用すると、ホストとグループのフォームでホストを管理できます。グループは、その下で定義されたすべてのリモートホストで1つのタスクを実行するために使用されます。
1つのホストを複数のグループに追加できます。 Ansibleホスト構成ファイルを編集します。例えば:
sudo nano /etc/ansible/hosts
ホストを追加し、グループで整理します。
[webservers] web-host1 web-host2 [dbservers] db-host1 [ubuntu] web-host1 db-host1 [centos] web-host2
以下の画像は、グループとグループの下のホストを理解するのに役立ちます。
ホストごとの構成
個々のホストの構成ファイルを作成できます。すべてのホスト構成ファイルは、ホスト名と同じ/ etc / ansible / host_varsディレクトリにあります。
sudo mkdir /etc/ansible/host_vars/
sudo vi /etc/ansible/host_vars/web-host1
-
- 1番目のホスト– /etc/ansible/host_vars/web-host1
ansible_ssh_host: 10.0.1.101 ansible_ssh_port: 22 ansible_ssh_user: root
- 2番目のホスト– /etc/ansible/host_vars/web-host2
ansible_ssh_host: 10.0.1.102 ansible_ssh_port: 22 ansible_ssh_user: root
- 3番目のホスト– /etc/ansible/host_vars/web-host3
ansible_ssh_host: 10.0.1.103 ansible_ssh_port: 22 ansible_ssh_user: root
- 1番目のホスト– /etc/ansible/host_vars/web-host1
このホストのssh接続にステップ1を使用していない場合。認証のために、以下のいずれかの方法をweb-hosts1構成ファイルに追加することもできます。
ansible_ssh_pass: secret_password ansible_ssh_private_key_file: /home/rahul/.ssh/aws.pem
グループ変数の構成
グループ構成で、グループの共通変数設定を構成できます。グループファイル名は、 group_vars
ディレクトリの下のグループ名(例:webservers)と同じである必要があります。
sudo mkdir /etc/ansible/group_vars
sudo vi /etc/ansible/group_vars/webservers
このグループの下に追加されたすべてのホストによって使用されるこのファイルに共通変数を追加します。
ansible_ssh_port: 22 ansible_ssh_user: root
ステップ4–Ansible接続のテスト
Ansibleを使用する準備が整いました。すべてのノードの接続をテストするには、pingモジュールを使用します。 Ansibleサーバーにログインし、次のコマンドを実行します。
ansible -m ping all
特定のホストまたはグループの接続をテストすることもできます。
ansible -m ping web-host1
## Specific hostansible -m ping webservers
## Specific group
Ansibleシェルモジュールを使用して任意のLinuxコマンドを実行することもできます。たとえば、以下のコマンドを実行して、web-host1の空きメモリをテストします。
ansible -m shell -a 'free -m' web-host1
グループに対して同じタスクを実行することもできます。ホスト名の代わりにグループ名を使用してください。
結論
このチュートリアルでは、Debian 10LinuxシステムにAnsibleをインストールして構成する方法を学びました。