2.2. 管理対象ノードの準備
管理対象ノードはインベントリーにリストされているシステムであり、Playbook に従ってコントロールノードによって設定されます。管理対象ホストに Ansible をインストールする必要はありません。
前提条件
- コントロールノードを準備している。詳細は、RHEL 8 でのコントロールノードの準備 を参照してください。
コントロールノードから SSH アクセスできる。
重要rootユーザーとしての直接 SSH アクセスはセキュリティーリスクを引き起こします。このリスクを軽減するには、管理対象ノードを準備するときに、このノード上にローカルユーザーを作成し、sudoポリシーを設定します。続いて、コントロールノードの Ansible は、ローカルユーザーアカウントを使用して管理対象ノードにログインし、rootなどの別のユーザーとして Playbook を実行できます。
手順
ansibleという名前のユーザーを作成します。useradd ansible
[root@managed-node-01]# useradd ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールノードは後でこのユーザーを使用して、このホストへの SSH 接続を確立します。
ansibleユーザーのパスワードを設定します。passwd ansible Changing password for user ansible. New password: <password> Retype new password: <password> passwd: all authentication tokens updated successfully.
[root@managed-node-01]# passwd ansible Changing password for user ansible. New password: <password> Retype new password: <password> passwd: all authentication tokens updated successfully.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible が
sudoを使用してrootユーザーとしてタスクを実行する場合は、このパスワードを入力する必要があります。ansibleユーザーの SSH 公開鍵を管理対象ノードにインストールします。ansibleユーザーとしてコントロールノードにログインし、SSH 公開鍵を管理対象ノードにコピーします。ssh-copy-id managed-node-01.example.com /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established. ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.
[ansible@control-node]$ ssh-copy-id managed-node-01.example.com /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established. ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたら、
yesと入力して接続します。Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /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
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたら、パスワードを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールノードでコマンドをリモートで実行して、SSH 接続を確認します。
ssh managed-node-01.example.com whoami ansible
[ansible@control-node]$ ssh managed-node-01.example.com whoami ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ansibleユーザーのsudo設定を作成します。visudoコマンドを使用して、/etc/sudoers.d/ansibleファイルを作成および編集します。visudo /etc/sudoers.d/ansible
[root@managed-node-01]# visudo /etc/sudoers.d/ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通常のエディターではなく
visudoを使用する利点は、このユーティリティーがファイルをインストールする前に解析エラーなどの基本的なチェックを提供する点にあります。/etc/sudoers.d/ansibleファイルで、要件に応じたsudoersポリシーを設定します。次に例を示します。ansibleユーザーのパスワードを入力した後、このホスト上で任意のユーザーおよびグループとしてすべてのコマンドを実行する権限をansibleユーザーに付与するには、以下を使用します。ansible ALL=(ALL) ALL
ansible ALL=(ALL) ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansibleユーザーのパスワードを入力せずに、このホスト上で任意のユーザーおよびグループとしてすべてのコマンドを実行する権限をansibleユーザーに付与するには、以下を使用します。ansible ALL=(ALL) NOPASSWD: ALL
ansible ALL=(ALL) NOPASSWD: ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow
または、セキュリティー要件に合わせてより細かいポリシーを設定します。
sudoersポリシーの詳細は、sudoers(5)man ページを参照してください。
検証
すべての管理対象ノード上のコントロールノードからコマンドを実行できることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ハードコーディングされたすべてのホストグループには、インベントリーファイルにリストされているすべてのホストが動的に含まれます。
Ansible
commandモジュールを使用して管理対象ノードでwhoamiユーティリティーを実行し、権限昇格が正しく機能することを確認します。ansible all -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> root ...
[ansible@control-node]$ ansible all -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> root ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが root を返した場合、管理対象ノード上で
sudoが正しく設定されています。