Restringir o módulo de script Ansible usando sudoers no nó remoto
Eu tenho um manual que executa algumas pré-verificações no banco de dados como usuário do Oracle. O nó remoto é um servidor AIX e, por isso, criei um script de shell que é executado através do manual.
---
- hosts: db
var_files:
- ansible_var.yml
tasks:
- name: "DB Checks"
become: True
become_user: oracle
script: "{ db_prechk }"
No servidor AIX, adicionei a entrada abaixo ao arquivo sudoers
ansible ALL=(oracle) NOPASSWD: /tmp/ansible-tmp-*/db_prechecks.sh
Mas o manual falha com o erro de aguardar o prompt de encaminhamento de privilégios.
Isso funciona bem se for executado como root. No entanto, não queremos raiz sem senha entre o controlador Ansible e os nós remotos. Então criamos um usuário ansible no controlador e nos nós remotos e trocamos as chaves SSH.
Isso também será executado se a entrada sudoers for apenas
ansible ALL=(oracle) NOPASSWD: ALL
Não queremos fornecer acesso completo aooracle
userid através doansible
ID do usuário também.
Executei o manual no modo detalhado e posso ver que o Ansible está copiando o script para oremote_tmp
dir e está executando-o como ooracle
ID do usuário. Nesse caso, a linha sudoers deveria ter permitido que ela funcionasse?