開発者ドキュメント

Ubuntu20.04にAnsibleをインストールして構成する方法

序章

構成管理システムは、管理者および運用チームのために、多数のサーバーを制御するプロセスを合理化するように設計されています。 これらを使用すると、1つの中央の場所から自動化された方法で多くの異なるシステムを制御できます。

Linuxシステムで利用できるChefPuppetなど、多くの一般的な構成管理ツールがありますが、これらは多くの場合、多くの人が望んでいる、または必要としているよりも複雑です。 Ansible は、SSHを使用して自動化タスクを実行し、YAMLファイルを使用してプロビジョニングの詳細を定義する、ノードに特別なソフトウェアをインストールする必要のないアーキテクチャを提供するため、これらのオプションの優れた代替手段です。

このガイドでは、Ubuntu 20.04サーバーにAnsibleをインストールする方法について説明し、このソフトウェアの使用方法の基本について説明します。 構成管理ツールとしてのAnsibleの概要については、Ansibleを使用した構成管理の概要を参照してください。

前提条件

このチュートリアルに従うには、次のものが必要です。

ステップ1—Ansibleをインストールする

サーバーインフラストラクチャを管理する手段としてAnsibleの使用を開始するには、Ansibleコントロールノードとして機能するマシンにAnsibleソフトウェアをインストールする必要があります。 そのためにデフォルトのUbuntuリポジトリを使用します。

まず、システムのパッケージインデックスを次のように更新します。

  1. sudo apt update

このアップデートに続いて、Ansibleソフトウェアを次のコマンドでインストールできます。

  1. sudo apt install ansible

プレス Y インストールの確認を求められたら。

これで、Ansibleコントロールノードに、ホストの管理に必要なすべてのソフトウェアが含まれるようになりました。 次に、Ansibleが管理対象ノードと通信できるようにインベントリファイルを設定する方法について説明します。

ステップ2—インベントリファイルの設定

インベントリファイルには、Ansibleで管理するホストに関する情報が含まれています。 インベントリファイルには1台から数百台のサーバーを含めることができ、ホストはグループとサブグループに編成できます。 インベントリファイルは、プレイブックやテンプレート内で使用するために、特定のホストまたはグループに対してのみ有効な変数を設定するためにもよく使用されます。 一部の変数は、プレイブックの実行方法にも影響を与える可能性があります。 ansible_python_interpreter すぐに表示される変数。

デフォルトのAnsibleインベントリの内容を編集するには、 /etc/ansible/hosts Ansibleコントロールノードで、選択したテキストエディタを使用してファイルを作成します。

  1. sudo nano /etc/ansible/hosts

:Ansibleは通常、デフォルトのインベントリファイルを次の場所に作成しますが etc/ansible/hosts、ニーズに合った場所にインベントリファイルを自由に作成できます。 この場合、カスタムインベントリファイルへのパスを -i Ansibleコマンドとプレイブックを実行するときのパラメーター。 プロジェクトごとのインベントリファイルを使用することは、間違ったサーバーグループでプレイブックを実行するリスクを最小限に抑えるための良い方法です。

Ansibleインストールによって提供されるデフォルトのインベントリファイルには、インベントリを設定するための参照として使用できるいくつかの例が含まれています。 次の例では、 [servers] 3つの異なるサーバーがあり、それぞれがカスタムエイリアス server1 server2 、およびserver3で識別されます。 強調表示されたIPをAnsibleホストのIPアドレスに置き換えてください。

/ etc / ansible / hosts
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

The all:vars サブグループは ansible_python_interpreter このインベントリに含まれるすべてのホストに有効なホストパラメータ。 このパラメータは、リモートサーバーが /usr/bin/python3 代わりにPython3実行可能ファイル /usr/bin/python (Python 2.7)、これは最近のUbuntuバージョンにはありません。

終了したら、を押してファイルを保存して閉じます CTRL+X それから YENTER 変更を確認します。

在庫を確認したいときはいつでも、以下を実行できます。

  1. ansible-inventory --list -y

これと同様の出力が表示されますが、インベントリファイルで定義されている独自のサーバーインフラストラクチャが含まれています。

Output
all: children: servers: hosts: server1: ansible_host: 203.0.113.111 ansible_python_interpreter: /usr/bin/python3 server2: ansible_host: 203.0.113.112 ansible_python_interpreter: /usr/bin/python3 server3: ansible_host: 203.0.113.113 ansible_python_interpreter: /usr/bin/python3 ungrouped: {}

インベントリファイルを構成したので、Ansibleホストへの接続をテストするために必要なものがすべて揃っています。

ステップ3—接続のテスト

サーバーを含めるようにインベントリファイルを設定したら、Ansibleがこれらのサーバーに接続してSSH経由でコマンドを実行できるかどうかを確認します。

このガイドでは、Ubuntu root アカウントを使用します。これは、通常、新しく作成されたサーバーでデフォルトで使用できる唯一のアカウントであるためです。 Ansibleホストで既に通常のsudoユーザーが作成されている場合は、代わりにそのアカウントを使用することをお勧めします。

あなたは使用することができます -u リモートシステムユーザーを指定する引数。 提供されていない場合、Ansibleはコントロールノードで現在のシステムユーザーとして接続を試みます。

ローカルマシンまたはAnsibleコントロールノードから、次のコマンドを実行します。

  1. ansible all -m ping -u root

このコマンドは、Ansibleの組み込みの pingモジュールを使用して、 root として接続し、デフォルトのインベントリからすべてのノードで接続テストを実行します。 The ping モジュールはテストします:

次のような出力が得られるはずです。

Output
server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }

SSH経由でこれらのサーバーに接続するのが初めての場合は、Ansible経由で接続しているホストの信頼性を確認するように求められます。 プロンプトが表示されたら、次のように入力します yes そしてヒット ENTER 確認するために。

あなたが得ると "pong" ホストから返信します。これは、そのサーバーでAnsibleコマンドとプレイブックを実行する準備ができていることを意味します。

:サーバーから正常な応答を返すことができない場合は、 Ansibleチートシートガイドで、さまざまな接続オプションを使用してAnsibleコマンドを実行する方法の詳細を確認してください。

ステップ4—アドホックコマンドの実行(オプション)

Ansibleコントロールノードがホストと通信できることを確認したら、サーバーでアドホックコマンドとプレイブックの実行を開始できます。

SSH経由でリモートサーバーで通常実行するコマンドは、インベントリファイルで指定されたサーバーでAnsibleを使用して実行できます。 例として、次の方法ですべてのサーバーのディスク使用量を確認できます。

  1. ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 624K 798M 1% /run /dev/vda1 155G 2.3G 153G 2% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 798M 0 798M 0% /run/user/0 server2 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 395M 608K 394M 1% /run /dev/vda1 78G 2.2G 76G 3% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 395M 0 395M 0% /run/user/0 ...

強調表示されたコマンド df -h 任意のコマンドに置き換えることができます。

以前に行ったのと同様に、アドホックコマンドを介してAnsibleモジュールを実行することもできます。 ping 接続をテストするためのモジュール。 たとえば、次のように使用できます apt 最新バージョンをインストールするモジュール vim インベントリ内のすべてのサーバー:

  1. ansible all -m apt -a "name=vim state=latest" -u root

Ansibleコマンドを実行するときに、個々のホストだけでなく、グループやサブグループもターゲットにすることができます。 たとえば、これはあなたがチェックする方法です uptime のすべてのホストの servers グループ:

  1. ansible servers -a "uptime" -u root

複数のホストをコロンで区切ることで指定できます。

  1. ansible server1:server2 -m ping -u root

プレイブックを実行してサーバーのセットアップを自動化する方法など、Ansibleの使用方法の詳細については、Ansibleリファレンスガイドを確認してください。

結論

このガイドでは、Ansibleをインストールし、Ansibleコントロールノードからアドホックコマンドを実行するためのインベントリファイルを設定しました。

中央のAnsibleコントローラーマシンからインフラストラクチャに接続して制御できることを確認したら、それらのホストで任意のコマンドまたはプレイブックを実行できます。

Ansibleの使用方法の詳細については、Ansibleチートシートガイドをご覧ください。

モバイルバージョンを終了