GNU/Linux >> Linux の 問題 >  >> Ubuntu

UbuntuにAnsibleをインストールする方法

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をインストールする方法と基本的なセットアップを学びました。読んでいただきありがとうございます。以下のコメントセクションに提案を残してください。


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

  2. UbuntuServer21.04にAnsibleをインストールする方法

  3. Ubuntu18.04LTSにAnsibleをインストールする方法

  1. Ubuntu20.04にRをインストールする方法

  2. Ubuntu18.04にGoをインストールする方法

  3. Ubuntu18.04にRをインストールする方法

  1. Ubuntu20.04LTSにAnsibleAWXをインストールする方法

  2. Ubuntu 20.04 LTS/21.04にAnsibleをインストールする方法

  3. Ubuntu20.04にAnsibleAWX17.1.0をインストールする方法