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