Ansibleユーザーモジュールはsudo設定を削除します。なぜ?

Ansibleユーザーモジュールはsudo設定を削除します。なぜ?

Amazon Linux 2システムは、パスワードなしでsudoを実行できるユーザーで構成されています。

# Add user
sudo groupadd -g 2002 one-username
sudo useradd -u 2002 -g 2002 -c "One Username Account" -s /bin/bash -m -d /home/one-username one-username

# Configure SSH for the user
mkdir -p /home/one-username/.ssh
cp -pr /home/ec2-user/.ssh/authorized_keys /home/one-username/.ssh/authorized_keys
chown -R one-username:one-username /home/one-username/.ssh
chmod 700 /home/one-username/.ssh
cat << 'EOF' > /etc/sudoers.d/one-username
User_Alias ONE_USERNAME = %one-username
ONE_USERNAME ALL=(ALL)      NOPASSWD: ALL
EOF
chmod 400 /etc/sudoers.d/one-username
# disable login for one-username except through ssh keys
cat << 'EOF' >> /etc/ssh/sshd_config
Match User one-username
        PasswordAuthentication no
        AuthenticationMethods publickey

EOF
# restart sshd
systemctl restart sshd

この設定は、ansible Playbookが次のように同じユーザーをグループに追加したときに維持されます。

 - name: Add user to different-groupname group
   command: usermod -a -G different-groupname one-username

ただし、プレイブックの最初の2行が次の4行に変わると、同じユーザーは存在しないパスワードを入力するように求められず、sudoを実行できなくなります。

 - name: Add user to different-groupname group
   user:
     name: one-username
     group: different-groupname

なぜこれが起こるのですか?この問題が発生しないようにAnsibleのユーザーモジュールを再構成するにはどうすればよいですか?

注:どちらの場合も、different-groupname同じ方法でグループが別々に作成され(one-usernameグループに別々に追加され)、different-groupnameこれが問題の原因ではありません。

ベストアンサー1

短い答え

グループを追加してパラメータをusermod -a ...追加するコマンドgroupユーザーモジュール「ユーザーのデフォルトグループの設定」。

詳細

ユーザーシングルユーザー名メイングループとして作成シングルユーザー名

sudo groupadd -g 2002 one-username
sudo useradd -u 2002 -g 2002 ... one-username

チームメンバーシングルユーザー名sudoを許可

User_Alias ONE_USERNAME = %one-username
ONE_USERNAME ALL=(ALL)      NOPASSWD: ALL

アンサーブルモジュールユーザーユーザーのデフォルトグループの設定シングルユーザー名到着別のグループ名

user:
  name: one-username
  group: different-groupname

グループのメンバーである可能性が高いです。別のグループ名sudoは許可されていません。

解決策

モジュールパラメータgroupsの代わりに使用groupユーザー。変える

user:
  name: one-username
  group: different-groupname

使用

user:
  name: one-username
  groups:
    - different-groupname

(未検証)

さらに、appendユーザモジュールのキーワードはユーザのグループセットに影響を与える。追加すると、ユーザーのグループリストに追加さappend: yesれます。different-groupname

user:
  name: one-username
  append: yes
  groups:
    - different-groupname

デフォルトappendでは、noユーザーグループはキーワードとして宣言されたグループセットに設定されますgroups。ユーザーがリストにない他のグループに属している場合、groupsユーザーはそのグループから削除されます。

おすすめ記事