![](https://m.unixlinux.online/article/uploadfiles/202204/2022042617003176.png)
Ansibleは、アプリケーションのプロビジョニング、構成、管理、およびデプロイを可能にするオープンソースツールです。インフラストラクチャをコード、基本的には自動化ツールとして実行するのに役立ちます。 Ansibleは、Linux、Unixライク、およびWindowsシステムで実行されます。 Pythonで書かれた無料のツールです。
Ansibleを使用すると、大規模なサーバーの自動化と制御が簡素化されます。これにより、システム管理者または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
制御ノードとホストのセットアップ
Ansibleコントロールノードでsudo権限を持つ非rootユーザーを作成することをお勧めします。次に、そのユーザーの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
を使用できます サーバー上のリモートユーザーを指定する引数。例:
$ ansible all -m ping -u root
コマンドはansibleping
を使用します 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ホストでのコマンド。例:
$ 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をインストールする方法と基本的なセットアップを学びました。読んでいただきありがとうございます。以下のコメントセクションに提案を残してください。