Debian 11にAnsibleをインストールして使用する方法
Debian 11にAnsibleをインストールして使用する方法
このページで
- 前提条件
Debian 11にAnsibleをインストールする
- APTを使用してAnsibleをインストールする
- PIPを使用してAnsibleをインストールする
Ansibleは無料でオープンソースの、最も人気のある構成管理ツールの一つです。これはクロスプラットフォームのツールで、クラウドコンピューティング、構成管理、パッケージのインストール、サービスの設定を簡素化します。YAMLファイルを使用して、ユーザーが特定のマシンで実行したいステップを含めます。Ansibleを使用すると、単一のコマンドで多数のホストを構成および管理できます。Ansibleは、ChefやPuppetなどの他の構成管理ツールの代替として機能します。
この記事では、Debian 11にAnsible構成管理ツールをインストールして使用する方法をお見せします。
前提条件
- Debian 11を実行しているサーバーが3台。
- 各サーバーにルートパスワードが設定されています。
このチュートリアルの目的のために、以下の設定を使用します:
- Ansible コントローラー - 192.168.10.9
- Ansible ホスト - 192.168.10.10, 192.168.10.11
Debian 11にAnsibleをインストールする
デフォルトでは、AnsibleパッケージはDebianのデフォルトリポジトリには含まれていません。Debian 11に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
作業が完了したらファイルを保存して閉じ、その後次のコマンドを使用してAnsibleのGPGキーを追加します:
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 -yAnsibleがインストールされたら、以下のコマンドで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 ansiblesshpassをインストールする
sshpassは、SSHコマンドにパスワードを提供するためのコマンドラインツールです。ここでは、Ansibleコントローラーノードでsshpassを使用して、リモートホストを認証します。
次のコマンドでsshpassをインストールできます:
apt-get install sshpass -y次に、最初のAnsibleリモートホストに接続して、known_hostsファイルにSSHフィンガープリントを追加します:
ssh [email 以下のように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リモートホストに接続して、known_hostsファイルにSSHフィンガープリントを追加します:
ssh [email 以下のように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 Ansibleホストインベントリファイルを作成する
次に、リモートホストの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"
}
シェルモジュールを使用して、リモートホスト上で全てのコマンドを実行することができます。
たとえば、server2で「free -m」コマンドを実行するには、次のコマンドを実行してください:
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
サーバー2で「df -h」コマンドを実行するには、以下のコマンドを実行してください:
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モジュールを提供します。
server1にNginxパッケージをインストールするには、以下のコマンドを実行してください。
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はリモートホスト上でユーザーを作成および管理するためのユーザーモジュールを提供します。
サーバー1にuser1という新しいユーザーを作成するには、以下のコマンドを実行してください:
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について十分に理解できていることを願っています。質問があれば気軽に聞いてください。