2017-06-29 3 views
0

私はさまざまなホスト上で一連のsudoコマンドを自動化するためにAnsibleプレイブックを作成しています。 puTTYでこれらのコマンドを個別に実行すると、私は適切なアクセスが許可されているため、許可の問題はありません。私は同じことを行うために脚本を作成しようとしたとき、私は$ sudo ls /root/を行う場合は、私が聞いていAnsibleのプレイブックでsudoコマンドを実行できません

ユーザーが、私は、実行するために...ここで、host_name

に例えば許可されていません...私は自分のパスワードを入力したら、/ルート/私のAnsible脚本の場合

の内容を見ることができ、

--- 
- host: servers 
    tasks: 
    - name: ls /root/ 
    shell: ls /root/ 
    become: true 
    become_method: sudo 

...私は問題を持っていない、とn上記のエラーが発生します。

このような理由が考えられますか?個々のpuTTY端末で実行できるコマンドを実行する権限がないと私に伝えているようです。

+0

'-vvv'は安全なログを投稿します。 –

答えて

1

[]さまざまなホスト上で一連のsudoコマンドを自動化します。これらのコマンドを個別に実行すると[

これはどうなるのでしょうか?

はあなたがsudoersファイル内の特定のコマンドを設定したような音(残念ながらあなたが十分な詳細を提供しなかった、幸いあなたは「アイデア」ではない本当の原因を求めました)。

Ansible shellモジュールは、あなたがsudoで先頭に追加指定したコマンドを実行していない - それはsudoで全体のシェルセッションを実行し、そのコマンドは、sudoersで構成されたものと一致しません。

すべてのコマンドを、Ansibleユーザーの昇格特権で実行するか、shellの代わりにrawモジュールを使用します。

+0

ありがとうございます@techraf。私は興味があります、シェルモジュールとrawモジュールの違いは何ですか?この場合、どのように私の生のモジュールを利用するのですか? –

+0

'shell'はPythonで書かれたモジュールであり、' bash -c "のように与えられたコマンドをコマンド列としてシェルを呼び出します。echo test" '(実際はもっと複雑です)。 'raw'はSSHセッション(Pythonは関係しません)で直接与えられたコマンドを実行します。 – techraf

+0

私がrawモジュールを使用している場合、現在 'shell:'を持っている場所で 'raw:'を入れ替えた場合を除き、プレイブックは同じままにできますか? –

関連する問題