Ansibleは、クライアントノードにエージェントをインストールすることなく、構成管理、プロビジョニング、アプリケーション展開、オーケストレーション、およびその他の多くのITプロセスを自動化するために使用されるオープンソースのIT自動化ツールです。クライアントノードとの通信はSSHプロトコルに依存しています。 Ansibleは、puppet、chef、terraformなどの他の同様のツールと比較して、使いやすさとインストールを提供します。このチュートリアルでは、CentOS8LinuxにAnsibleをインストールして構成する方法を学習します。
CentOS8LinuxにAnsibleをインストール
ステップ1: EPEL
をインストールして有効にする リポジトリ
[root@install-ansible ~]# dnf install epel-release -y
ステップ2: パッケージのリモートインデックスをローカルファイルキャッシュにダウンロードして、後続のdnf
を高速化します。 コマンド。
[root@install-ansible ~]# dnf makecache CentOS Linux 8 - AppStream 2.6 kB/s | 4.3 kB 00:01 CentOS Linux 8 - BaseOS 2.6 kB/s | 3.9 kB 00:01 CentOS Linux 8 - Extras 1.0 kB/s | 1.5 kB 00:01 Extra Packages for Enterprise Linux 8 - x86_64 8.7 kB/s | 11 kB 00:01 Extra Packages for Enterprise Linux Modular 8 - x86_64 9.6 kB/s | 10 kB 00:01 Remi's Modular repository for Enterprise Linux 8 - x86_64 501 B/s | 833 B 00:01 Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 802 B/s | 833 B 00:01 Metadata cache created.
ステップ3: Ansibleをインストールする
[root@install-ansible ~]# dnf install ansible -y Last metadata expiration check: 0:02:17 ago on Tue 01 Mar 2022 10:28:48 AM IST. Dependencies resolved. ============================================================================================================================================================= Package Architecture Version Repository Size ============================================================================================================================================================= Installing: ansible noarch 2.9.27-1.el8 epel 17 M Installing dependencies: python3-bcrypt x86_64 3.1.6-2.el8.1 epel 44 k python3-jmespath noarch 0.9.0-11.el8 appstream 45 k python3-pyasn1 noarch 0.3.7-6.el8 appstream 126 k python3-pynacl x86_64 1.3.0-5.el8 epel 100 k sshpass x86_64 1.06-9.el8 epel 27 k Installing weak dependencies: python3-paramiko noarch 2.4.3-1.el8 epel 289 k Transaction Summary ============================================================================================================================================================= Install 7 Packages Installed: ansible-2.9.27-1.el8.noarch python3-bcrypt-3.1.6-2.el8.1.x86_64 python3-jmespath-0.9.0-11.el8.noarch python3-paramiko-2.4.3-1.el8.noarch python3-pyasn1-0.3.7-6.el8.noarch python3-pynacl-1.3.0-5.el8.x86_64 sshpass-1.06-9.el8.x86_64 Complete!
ステップ4: ansibleのインストールを確認する
[root@install-ansible ~]# ansible --version ansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Sep 10 2021, 09:13:53) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
CentOS8でAnsibleを構成する
このチュートリアルでは、以下のアーキテクチャを検討してください。同じものをn個のクライアントに拡張できます。
Ansibleサーバーからのクライアントの管理/管理
クライアントを管理するには、SSHをインストールして実行する必要があります。 SSHポートは開いていて、Ansibleサーバーからアクセスできる必要があります。
ステップ5: /etc/hosts
を開きます ansible-server上のファイル
この記事では、/etc/hosts
を使用します クライアントのIPアドレスのDNS名解決用のファイル。
[root@ansible-server ~]# vim /etc/hostsクライアントのIPアドレスまたはDNS名
クライアントのIPアドレスまたはDNS名を使用して管理できます
AnsibleクライアントのIPアドレスとホスト名に以下のエントリを追加します
10.180.10.122 ansible-client
SSHパスワードなし認証のセットアップ
ステップ6: パスフレーズの入力を求められることなく、Ansibleサーバー(管理ノード)でSSHキーを生成します。
[centos@ansible-server ~]$ ssh-keygen -f id_rsa -t rsa -N '' Generating public/private rsa key pair. Your identification has been saved in id_rsa. Your public key has been saved in id_rsa.pub. The key fingerprint is: SHA256:vqvgSILGrVxCDsLuORbJojxiYDEFEFlNQi5ZrHeqYhE centos@ansible-server The key's randomart image is: +---[RSA 3072]----+ |+B*o. | |.+.o. | |o.o | |oE. . | |++=o S | |@*o . | |OB+o. . | |OX=o . . | |*=+ . ..o. | +----[SHA256]-----+
ステップ7: SSHキーをAnsibleクライアントにコピーします
[centos@ansible-server ~]$ ssh-copy-id centos@ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/centos/.ssh/id_rsa.pub" The authenticity of host 'ansible-client (10.180.141.122)' can't be established. ECDSA key fingerprint is SHA256:oDKa1jiDVmPzHmD0HqKr5v10xhalFVbklrdudxAFx5M. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys centos@ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'centos@ansible-client'" and check to make sure that only the key(s) you wanted were added.ansible-clientのcentosユーザーのパスワードプロンプト
Ansible-clientで初めてcentosユーザーのログインパスワードを入力します。 SSHキーがコピーされると、パスワードなしでログインできるようになります
ステップ8: パスワードなしの接続を確認する
[centos@ansible-server ~]$ ssh centos@ansible-client Last login: Tue Mar 1 05:57:15 2022 from 10.180.6.115 [centos@ansible-client ~]$
ステップ9: centos
のsudoアクセス ansible-clientのユーザー
必ず、centos
ansible-clientのユーザーは、パスワードなしでsudoアクセスできます。これは、root
を実行するのに役立ちます centos
を使用したansible-clientのコマンド ユーザー。
# visudo ## Add the below content centos ALL=(ALL) NOPASSWD:ALL
これで、ansible-clientをcentos
を使用してansible-server(管理ノード)から管理する準備が整いました。 ansible-clientのユーザー。
Ansibleの使用方法
ステップ10: Ansibleインベントリを作成する
Ansibleは、管理するすべてのリモートクライアントの情報のリストをinventory
というファイルに保持します。 ファイル。 Ansibleインベントリファイルは単純なプレーンテキストファイルであり、デフォルトのファイルの場所は/etc/ansible/hosts
です。
デフォルトの場所以外にAnsibleインベントリファイルを作成できます。
[centos@ansible-server ~]$ mkdir ~/ansible [centos@ansible-server ~]$ cd ~/ansible [centos@ansible-server ansible]$ vim hosts
すべてのansibleクライアントのエントリを追加します
ansible-client ansible_user=centosansible/hostsファイルのansible_userオプション
ansible_userオプションは、コマンドを実行するansible-client上のユーザーを定義するために使用されます。
Ansibleインベントリファイル-ホスト名とIPアドレスの組み合わせインベントリファイルにリモートクライアントのIPアドレスとDNS名を混在させることもできます
10.180.10.122 ansible_user=centosインベントリファイルでリモートクライアントをグループ化する
使用状況に基づいて、リモートクライアントをインベントリファイルにグループ化することもできます。たとえば、Webサーバーとして4つのクライアントがあり、dbサーバーとして2つのクライアントがある場合。
[centos] ansible-client ansible_user=centos
ステップ11: インベントリファイルからすべてのホストを一覧表示します
[centos@ansible-server ansible]$ ansible -i hosts --list-hosts all hosts (1): ansible-client
ステップ12: ホストがアクティブであることを確認します
[centos@ansible-server ansible]$ ansible -i hosts -m ping all ansible-client | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
ステップ13: リモートのansible-client(すべて/グループ名ベース)でコマンドを実行する
[centos@ansible-server ansible]$ ansible -i hosts -m shell -a "more /etc/redhat-release" ansible-client ansible-client | CHANGED | rc=0 >> CentOS Linux release 7.8.2003 (Core)
それでおしまい!次に、独自の方法でansibleを使用してリモートクライアントの管理を開始します。
Ansible Playbookは、人間の関与を制限するか、まったく行わずに複雑なITアクションを実行することで、サーバーをより簡単に管理するのに役立ちます。次の記事でAnsiblePlaybookについて説明します。