Ansible で Linux ホストを操作できるように設定する


管理対象ノードの設定

Ansible による操作のためのユーザの作成

コントロールノードから管理対象ノードを操作する際に、root 権限での操作が必要になることがあります。 その際に root ユーザを直接使用することはセキュリティ上の問題があるため、 Ansible による操作のためのユーザ (以下、ansible ユーザと呼びます) を作成します。

# adduser <user>

※ コマンド実行時の質問項目は空でも構いません。 パスワードは適切なものを設定します。

sudo の設定

ansible ユーザをパスワード無しで root ユーザへ昇格させるために、sudo の設定を行ないます。

# visudo -f /etc/sudoers.d/<user>

[Red Hat Enterprise Linux 8, CentOS 8]

<user> ALL=(root) NOPASSWD:/usr/bin/dnf,/usr/bin/yum,/usr/bin/sh

[Red Hat Enterprise Linux 7, CentOS 7]

<user> ALL=(root) NOPASSWD:/bin/yum,/bin/sh

[Red Hat Enterprise Linux 6, CentOS 6]

<user> ALL=(root) NOPASSWD:/usr/bin/yum,/bin/sh

[Amazon Linux 2]

<user> ALL=(root) NOPASSWD:/usr/bin/yum,/usr/bin/sh

[ubuntu 18LTS/16LTS/14LTS]

<user> ALL=(root) NOPASSWD:/usr/bin/apt,/usr/bin/apt-get,/bin/sh

[Debian 10]

<user> ALL=(root) NOPASSWD:/usr/bin/apt,/usr/bin/apt-get,/usr/bin/sh

[Debian 9.0]

<user> ALL=(root) NOPASSWD:/usr/bin/apt,/usr/bin/apt-get,/bin/sh

※1 使用するモジュールによって追加のコマンドが必要となる場合があります。 (例: synchronize モジュールを使用するには rsync が必要)

公開鍵認証の設定 (推奨)

コントロールノードから管理対象ノードへの認証のために、コントロールノード上で公開鍵認証を設定します。 手順については Ansible をインストールする - 公開鍵認証の設定 を参照してください。

パスワード認証の無効化 (推奨)

ansible ユーザは root ユーザとほぼ同等の権限を持ちます。悪意のあるユーザによるログインを軽減するために、 パスワード認証の無効化をお勧めします。エディタで sshd の設定ファイルを開いてください。

# vi /etc/ssh/sshd_config

ansible ユーザを対象に、パスワード認証を無効にします。

/etc/ssh/sshd_config:

(ファイルの末尾)
Match User <user>
  PasswordAuthentication no

保存して閉じます。設定反映のため、sshd を再起動します。

# systemctl restart sshd.service

接続テスト

Ansible をインストールする - Ping モジュールを利用した接続テスト を参照し、コントロールノードから管理対象ノードへの接続テストを実施してください。