1.4. 管理対象ノードの準備
Ansible は、管理対象ホストでエージェントを使用しません。唯一の要件は、RHEL にデフォルトでインストールされる Python と、管理対象ホストへの SSH アクセスです。
ただし、root
ユーザーとして SSH に直接アクセスすると、セキュリティー上のリスクが生じる可能性があります。したがって、管理対象ノードを準備するときは、このノードでローカルユーザーを作成し、sudo
ポリシーを設定します。コントロールノードの Ansible は、このアカウントを使用して管理対象ノードにログインし、root
などの別のユーザーとして Playbook を実行できます。
前提条件
- 制御ノードを準備している。
手順
ユーザーを作成します。
[root@managed-node-01]# useradd ansible
制御ノードは後でこのユーザーを使用して、このホストへの SSH 接続を確立します。
ansible
ユーザーにパスワードを設定します。[root@managed-node-01]# passwd ansible Changing password for user ansible. New password: password Retype new password: password passwd: all authentication tokens updated successfully.
Ansible が
sudo
を使用してroot
ユーザーとしてタスクを実行する場合は、このパスワードを入力する必要があります。ansible
ユーザーの SSH 公開鍵を管理対象ノードにインストールします。ansible
ユーザーとして制御ノードにログインし、SSH 公開鍵を管理対象ノードにコピーします。[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. 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 ansible@managed-node-01.example.com's password: password Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'managed-node-01.example.com'" and check to make sure that only the key(s) you wanted were added.
制御ノードでコマンドをリモートで実行して、SSH 接続を確認します。
[ansible@control-node]$ ssh managed-node-01.example.com whoami ansible
ansible
ユーザーのsudo
設定を作成します。visudo
コマンドを使用して、/etc/sudoers.d/ansible
ファイルを作成および編集します。[root@managed-node-01]# visudo /etc/sudoers.d/ansible
通常のエディターと比べて
visudo
を使用する利点は、このユーティリティーがファイルをインストールする前に基本的な健全性チェックと解析エラーのチェックを提供することです。/etc/sudoers.d/ansible
ファイルで、要件に応じたsudoers
ポリシーを設定します。次に例を示します。ansible
ユーザーのパスワードを入力した後、このホスト上で任意のユーザーおよびグループとしてすべてのコマンドを実行する権限をansible
ユーザーに付与するには、以下を使用します。ansible ALL=(ALL) ALL
ansible
ユーザーのパスワードを入力せずに、このホスト上で任意のユーザーおよびグループとしてすべてのコマンドを実行する権限をansible
ユーザーに付与するには、以下を使用します。ansible ALL=(ALL) NOPASSWD: ALL
または、セキュリティー要件に合わせてより細かいポリシーを設定します。
sudoers
ポリシーの詳細は、sudoers (5)
man ページを参照してください。
関連情報
- コントロールノードの準備
-
sudoers(5)
man ページ