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つあります。
- APTコマンドの使用
- 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 -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について十分に理解されていることを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。