Oracleユーザーとしてデータベースでいくつかの事前チェックを実行するプレイブックがあります。リモートノードはAIXサーバーなので、スクリプトを使って実行されるシェルスクリプトを作成しました。 AIXサーバーでリモートノード上でsudoersを使用している可能性のあるスクリプトモジュールを制限する
---
- hosts: db
var_files:
- ansible_var.yml
tasks:
- name: "DB Checks"
become: True
become_user: oracle
script: "{ db_prechk }"
、私は
ansible ALL=(oracle) NOPASSWD: /tmp/ansible-tmp-*/db_prechecks.sh
ファイルしかし、脚本が、それは権限昇格のプロンプトを待っていますというエラーで失敗しsudoersファイルに以下のエントリを追加しました。
これは、rootとして実行された場合に正常に動作します。しかし、我々は、Ansibleコントローラとリモートノードの間にパスワードなしのルートを置くことは望ましくありません。そこで、コントローラとリモートノード上にユーザを作成し、SSH鍵を交換しました。 sudoersファイルのエントリは、我々はあまりにもansible
ユーザIDを経由してoracle
ユーザーIDへのフルアクセスを提供したくないだけ
ansible ALL=(oracle) NOPASSWD: ALL
ある場合
これも動作します。
プレイボードを冗長モードで実行し、Ansibleがremote_tmp
ディレクトリにスクリプトをコピーしており、oracle
のユーザーIDとして実行していることがわかります。その場合、sudoers行は実行する必要がありますか?
/tmpがnoexecでに搭載されているテストします。/etc/fstabを見てください。 – bodo
@bodoそれはなぜ 'NOPASSWD:ALL'で動作するのか説明しません。 – techraf