GNU/Linux >> Linux の 問題 >  >> Debian

Debian11にAnsibleをインストールして使用する方法

Ansibleは無料のオープンソースであり、最も人気のある構成管理ツールの1つです。これは、クラウドコンピューティング、構成管理、パッケージのインストール、およびサービス構成を簡素化するクロスプラットフォームツールです。ユーザーが特定のマシンで実行したいステップを含むYAMLファイルを使用します。 Ansibleを使用すると、1つのコマンドで複数のホストを構成および管理できます。 Ansibleは、ChefやPuppetなどの他の構成管理ツールの代替手段です。

この記事では、Debian11にAnsible構成管理ツールをインストールして使用する方法を紹介します。

前提条件
  • Debian11を実行している3台のサーバー。
  • ルートパスワードは各サーバーで構成されます。

このチュートリアルでは、次の設定を使用します。

  • Ansible Controler -192.168.10.9
  • Ansibleホスト -192.168.10.10、192.168.10.11

Debian11にAnsibleをインストールする

デフォルトでは、AnsibleパッケージはDebianのデフォルトリポジトリに含まれていません。 Debian11にAnsibleをインストールする方法は2つあります。

  1. APTコマンドの使用
  2. PIPコマンドの使用

APTを使用してAnsibleをインストールする

まず、システムにいくつかの依存関係をインストールする必要があります。次のコマンドを使用して、必要な依存関係をインストールできます。

apt-get install gnupg2 curl wget -y

すべての依存関係がインストールされたら、APT source.listを編集し、Ansibleリポジトリを追加します。

nano /etc/apt/sources.list

次の行を追加します:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

完了したらファイルを保存して閉じ、次のコマンドを使用してAnsibleGPGキーを追加します。

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

次の出力が表示されます。

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.lFEjztT9TY/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg:               imported: 1

次に、リポジトリを更新し、次のコマンドを使用してAnsibleをインストールします。

apt-get update
apt-get install ansible -y

Ansibleがインストールされたら、次のコマンドを使用してAnsibleのバージョンを確認します。

ansible --version

次の出力が得られるはずです:

ansible 2.10.8
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]

PIPを使用してAnsibleをインストールする

まず、PythonとPIPをシステムにインストールする必要があります。次のコマンドを使用してインストールできます:

apt-get install python3 python3-pip -y

インストールが完了したら、pipコマンドを使用して、以下に示すようにAnsibleをインストールします。

pip install ansible

sshpassをインストールする

sshpassは、SSHコマンドでパスワードを提供できるコマンドラインツールです。ここでは、Ansibleを使用するAnsibleコントローラーノードでsshpassを使用して、リモートホストを認証します。

次のコマンドでsshpassをインストールできます。

apt-get install sshpass -y

次に、最初のansibleリモートホストに接続して、SSHフィンガープリントを known_hostsに追加します ファイル:

ssh [email protected]

以下に示すように、SSHパスワードを入力するように求められます。

The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts.
Password: 

パスワードを入力し、Enterキーを押してSSHフィンガープリントを追加します。

次に、2番目のansibleリモートホストに接続して、SSHフィンガープリントをknown_hostsファイルに追加します。

ssh [email protected]

以下に示すように、SSHパスワードを入力するように求められます。

The authenticity of host '192.168.10.11 (192.168.10.11)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.11' (ECDSA) to the list of known hosts.
Password: 

パスワードを入力してEnterを押します 。

これで、sshpassコマンドを使用してSSH接続を確認できます。

sshpass -p yourpassword ssh [email protected]

AnsibleHostsインベントリファイルを作成する

次に、インベントリファイルを作成して、リモートホストのIPアドレス、ユーザー名、パスワード、およびSSHポートを定義する必要があります。

nano ~/.hosts

次の行を追加します:

[servers]
server1 ansible_host=192.168.10.10 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22
server2 ansible_host=192.168.10.11 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22

ファイルを保存して閉じます。

:上記のファイルでは、リモートホストのIP、ユーザー名、パスワード、およびSSHポートを使用します。

Ansibleでの作業

Ansibleは、リモートホストの管理に役立つ多くのモジュールを提供します。

以下に示すように、Ansibleを実行するための基本的な構文:

ansible -i [inventory_file] -m [module] [host]

すべてのホストへのping接続を確認しましょう:

ansible -i ~/.hosts -m ping all

すべてが正常であれば、次の出力が得られるはずです:

server2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

唯一のサーバー1のping接続を確認する場合は、次のコマンドを実行します。

ansible -i ~/.hosts -m ping server1

次の出力が得られるはずです:

server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

シェルモジュールを使用して、リモートホストですべてのコマンドを実行できます。

たとえば、「 free -m」を実行するには "server2のコマンド、次のコマンドを実行します:

ansible -i ~/.hosts -m shell -a "free -m" server2

次の出力が表示されます。

server2 | CHANGED | rc=0 >>
               total        used        free      shared  buff/cache   available
Mem:            1982         128         491           2        1363        1669
Swap:              0           0           0

df-h」を実行するには "server2でコンマを使用し、次のコマンドを実行します:

ansible -i ~/.hosts -m shell -a "df -h" server2

次の出力が得られるはずです:

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            976M     0  976M   0% /dev
tmpfs           199M  404K  198M   1% /run
/dev/sda1        50G  2.4G   45G   5% /
tmpfs           992M  124K  992M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           199M     0  199M   0% /run/user/0

Ansibleは、任意のパッケージをリモートホストにインストールするためのaptモジュールを提供します。

Nginxをインストールするには server1のパッケージで、次のコマンドを実行します:

ansible -i ~/.hosts -m ansible.builtin.apt -a "name=nginx state=present" server1

次の出力が得られるはずです:

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "cache_update_time": 1631424599,
    "cache_updated": false,
    "changed": true,
    "stderr": "",
    "stderr_lines": [],
        "Upgrading binary: nginx.",
        "Setting up nginx (1.18.0-6.1) ...",
        "Processing triggers for man-db (2.9.4-2) ...",
        "Processing triggers for libc-bin (2.31-13) ..."
    ]
}

server1のNginxサービスのステータスを確認するには、次のコマンドを実行します。

ansible -i ~/.hosts -m shell -a "systemctl status nginx" server1

次の出力が得られるはずです:

server1 | CHANGED | rc=0 >>
? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-09-12 05:55:36 UTC; 49s ago
       Docs: man:nginx(8)
    Process: 10761 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 10764 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 10871 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 5.8M
        CPU: 54ms
     CGroup: /system.slice/nginx.service
             ??10871 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??10874 nginx: worker process

Sep 12 05:55:36 ansible systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 12 05:55:36 ansible systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Sep 12 05:55:36 ansible systemd[1]: Started A high performance web server and a reverse proxy server.

Ansibleは、リモートホスト上でユーザーを作成および管理するためのユーザーモジュールを提供します。

user1という名前の新しいユーザーを作成するには server1で、次のコマンドを実行します。

ansible -i ~/.hosts -m ansible.builtin.user -a "name=user1 password=yourpassword" server1

次の出力が表示されます。

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": true,
    "comment": "",
    "create_home": true,
    "group": 1000,
    "home": "/home/user1",
    "name": "user1",
    "password": "NOT_LOGGING_PASSWORD",
    "shell": "/bin/sh",
    "state": "present",
    "system": false,
    "uid": 1000
}
結論

この記事では、APTとPIPを使用してAnsibleをインストールする方法を学びました。また、さまざまなAnsibleモジュールを使用してリモートホストを管理する方法も学びました。 Ansibleについて十分に理解されていることを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。


Debian
  1. Debian11にNVMをインストールして使用する方法

  2. Ansibleを使用してDebian11にRedis6をインストールして設定する方法

  3. Debian11にAnsibleをインストールする方法

  1. Debianバックポートをインストールして使用する方法

  2. Debian10にPHPComposerをインストールして使用する方法

  3. Debian10にFFmpegをインストールして使用する方法

  1. Debian9にDockerをインストールして使用する方法

  2. Debian9にDockerComposeをインストールして使用する方法

  3. Debian9にPHPComposerをインストールして使用する方法