Ansibleは、アプリケーションのプロビジョニング、構成、管理、およびデプロイを可能にするオープンソースツールです。 インフラストラクチャをコード、基本的には自動化ツールとして実行するのに役立ちます。 Ansibleは、Linux、Unixライク、およびWindowsシステムで実行されます。 Pythonで書かれた無料のツールです。
Ansibleを使用すると、大規模なサーバーの自動化と制御が簡素化されます。 これでシステムができました admin またはDevOpsエンジニアは、単一の制御ノードからすべてのサーバーを管理します。
ChefやPuppetとは異なり、Ansibleはノードに特別なソフトウェアをインストールする必要はありません。 AnsibleはSSHを使用してタスクを実行し、YAMLファイルを使用してプロビジョニング情報を定義します。
このチュートリアルでは、Ubuntu 20.04にansibleをインストールする方法を示し、基本を学びます。
Ansibleコントロールノードとホスト
Ansibleコントロールノードは、ansibleがインストールされ、1つ以上のリモートホストを制御するコンピューターです。 制御ノードは、コマンドラインツールまたは構成スクリプト(プレイブック)を使用して、SSH経由でホストまたはノードと通信します。
ホストまたは管理対象ノードは、ansibleが管理するネットワークデバイスまたはサーバーです。 AnsibleはSSHを使用して操作を簡素化するため、ホストマシンはSSHサービスを実行してポートを開くだけで済みます。
次のセクションでは、コントロールノードを設定してホストから情報を取得する方法を学習します。
要件
- sshキーペアを持つ1つの制御ノード
- 1つ以上のホスト-ssh公開鍵が追加されたリモートサーバー
デモンストレーションでは、両方の目的でUbuntu20.04マシンを使用します。
UbuntuにAnsibleをインストールする
Ansibleコンポーネントはコントロールノードにインストールされます。 UbuntuにAnsibleをインストールするための次のコマンド。
まず、ソースからすべてのパッケージの更新されたリストを取得します。
$ sudo apt update
次に、ansibleをインストールするには、次のように入力します。
$ sudo apt install ansible
制御ノードとホストを設定します
root以外のユーザーを作成することをお勧めします sudo Ansibleコントロールノードの特権。 次に、そのユーザーのSSHキーペアを設定します。
新しい非rootユーザーを作成します。
$ sudo adduser controller
次に、割り当てる必要があります sudo
許可 controller
ユーザー:
$ sudo usermod -aG sudo controller
今、あなたはログインすることができます controller
ユーザーセッションとSSHキーの生成:
$ su - controller
$ ssh-keygen
出力:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/controller/.ssh/id_rsa):
Created directory '/home/controller/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/controller/.ssh/id_rsa
Your public key has been saved in /home/controller/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:R033P2ygbVuZv5jJdRbIZtaPG8Af7ZFL2pE9vbzQgP0 controller@linoxide
The key's randomart image is:
+---[RSA 3072]----+
| . . |
| o . . |
| . .. .|
| . .* =.O|
| S .oo@.^=|
| . =o%+@|
| ++E*|
| . *++|
| =.o |
+----[SHA256]-----+
Ansibleコントロールノードから各ホストへのパスワードなしのSSHを有効にする必要があります。 基本的に、コントロールノードの公開鍵を各ホストのauthorized_keysファイルにコピーする必要があります。
このチュートリアルでは、2つのansibleホストを使用します。 host1@ip_address_1
と host2@ip_address_2
。
Ansibleコントロールノードで、次のコマンドを実行して公開鍵をホストサーバーにコピーします。
$ ssh-copy-id host1@ip_address_1
$ ssh-copy-id host2@ip_address_2
インベントリファイルの設定
Ansibleは inventory file
Ansibleコントロールノードによって管理されるリモートサーバー(ホスト)に関する情報を保存します。 ホストは、グループまたはサブグループに編成できます。
デフォルトのansibleインベントリファイルは次の場所にあります。 /etc/ansible/hosts
、ただし、インベントリファイルは任意の場所に作成でき、を使用してインベントリファイルへのパスを指定する必要があります。 -i
Ansibleコマンドを実行するときのパラメーター。
これで、お気に入りのエディターでインベントリファイルを開き、次のように変更できます。
$ sudo vim /etc/ansible/hosts
以下のIPをAnsibleホストのIPアドレスに置き換えることに注意してください。
[servers]
server1 ansible_host=178.0.113.111
server2 ansible_host=178.0.113.112
次のコマンドでインベントリを確認します。
$ ansible-inventory --list -y
出力:
all:
children:
servers:
hosts:
server1:
ansible_host: 178.0.113.111
server2:
ansible_host: 178.0.113.112
ungrouped: {}
接続のテスト
Ansibleがリモートサーバーに接続できるかどうかを確認するときが来ました。 あなたは使用することができます -u
サーバー上のリモートユーザーを指定する引数。 にとって example:
$ ansible all -m ping -u root
コマンドuseansible ping
Ansibleコントロールノードからリモートサーバーへの接続をチェックするモジュール。
server1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
あなたが受け取るとき pong
リモートサーバーから返信すると、そのサーバーでansibleコマンドとプレイブックを実行できます。
実行中 Ad-hoc
リモートansibleホストでのコマンド example:
$ ansible all -a "df -h" -u root
出力:
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 2.3M 744M 1% /run
/dev/sda1 20G 4.7G 15G 25% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop1 130M 130M 0 100% /snap/google-cloud-sdk/161
/dev/loop0 32M 32M 0 100% /snap/snapd/10238
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 1.7M 745M 1% /run
/dev/sda1 20G 4.2G 16G 22% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/1932
/dev/loop1 32M 32M 0 100% /snap/snapd/10492
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
結論
Ansibleは現在Redhatが所有しており、コードに多くの改善をもたらしています。 Ansible Towerは、最新のWebベースのUIからサーバーを管理できるAnsibleのエンタープライズバージョンです。
このチュートリアルでは、例を通して、Ubuntuにansibleをインストールする方法と基本的なセットアップを学びました。 読んでいただきありがとうございます。以下のコメントセクションに提案を残してください。