6

Ansible の構成を自分の環境に適応させるのにいくつかの困難があります。

私のテスト環境:

  • PermitRootLogin いいえ
  • SSH 経由で接続できるのは 1 人のユーザーのみです (foo、権限なし)
  • sudo 権限を持つユーザー (bar ALL=(ALL) ALL)

私の ansible ホスト インベントリは次のようになります。

[servers]
server1 ansible_ssh_host=192.168.0.1 ansible_sudo=true ansible_ssh_user=foo ansible_sudo_user=bar

foo ユーザー用の SSH キーを持っています。

このアドホック コマンド (またはその他のコマンド) を bar password で試すと、次のようになります。

ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass
server1 | FAILED => Incorrect sudo password

次に、 foo password で同じコマンドを実行すると:

ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass
Sorry, user foo is not allowed to execute '/bin/bash -c echo SUDO-SUCCESS-rlpfhamukjnsfyokqbjpbttviiuildif; echo test > /etc/testfile' as bar on server1.

したがって、Ansible は間違いなく foo を sudo ユーザーとして使用し、指定したように bar ではありません。foo の代わりに bar の使用を強制する方法はありますか? Ansible の sudo 機能を本当に理解していません。

server1 | FAILED | rc=1 >>
echo test > /etc/testfile : Permission denied

ホストに bar としてログインし、「sudo echo test > /etc/testfile」を実行すると、bar パスワードを要求され、コマンドが正しく実行されます。Ansible の動作のどこが間違っていますか?

4

1 に答える 1

5

次のように考えてください。

  • ansible_ssh_userホストに ssh するユーザーです。
  • ansible_sudo_userホストでsudoするユーザーです

つまり、ユーザーとコマンドを例として使用すると、ansible が実行する同等のコマンドは次のようになります。

ssh foo@server1 sudo -u bar "echo test > testfile"

したがって、fooユーザーではなく、ユーザーのパスワードを提供する必要がありbarます。fooユーザーには sudo asの権限が必要barです。のようなものsudoers

foo    ALL=(bar) NOPASSWD: ALL

fooすべてのコマンドをbarパスワードなしで実行できるようになりました。

于 2014-07-14T21:29:48.983 に答える