bad*_*hop 4 postgresql ansible ansible-playbook
我想运行 ansible 以便:
远程用户是“普通”用户
... 谁become的 root 通过sudo来运行一堆任务
... 谁become的 postgres 用户通过su - postgres,从 root 创建一个 PostgreSQL 数据库。
这是 PostgreSQL 世界的典型程序:只能通过sufrom访问的特殊用户root。
只有在以 root 身份连接时,才能在 play 中指定 become-ish 参数,因为 CLI 选项会覆盖 play 中定义的任何内容。
除了添加sudo规则或运行之外,是否有更优雅的方法来实现这一目标
command: /usr/bin/su - postgres -c '/bin/createuser -D -R -S myuser
从ansible,告诉它关闭警告?
为什么您必须两次更改有效用户?
您可以指定 ansible 需要按任务运行的有效用户 ID,因此当您需要以 postgres 用户身份运行命令时,直接设置。
tasks:
- name: Create Postgres User
shell: /bin/createuser -D -R -S myuser
become: yes
become_user: postgres
Run Code Online (Sandbox Code Playgroud)
通常,当用户获得sudo权限时,root他们已经获得ALL并成为任何用户,包括 postgres。
或者,创建一个额外的 sudo 权限,以便您的 ansible 用户可以作为 postgres 用户执行(特定)命令。
注意:考虑使用 Ansible Postgres数据库模块来管理您的数据库、角色和权限。
回应您的评论:我以普通用户的身份与 Ansible 联系:
ansible example -a "/bin/whoami"
example | SUCCESS | rc=0 >>
hbruijn
Run Code Online (Sandbox Code Playgroud)
我有一个相当典型的“ /etc/sudoers.d/hbruijn”片段,它对我(我的 Ansible 用户)可以做的事情没有任何限制:
# /etc/sudoers.d/hbruijn
hbruijn ALL = NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
然后我可以让become任何用户在不同的用户 ID 和任务下执行命令,而无需调用sudo或su首先:
ansible example -b --become-user=root -a "/bin/whoami"
example | SUCCESS | rc=0 >>
root
Run Code Online (Sandbox Code Playgroud)
或者:
ansible example -b --become-user=postgres -a "/bin/whoami"
example | SUCCESS | rc=0 >>
postgres
Run Code Online (Sandbox Code Playgroud)
所有这些都没有以超级用户身份直接连接 Ansible。
| 归档时间: |
|
| 查看次数: |
1827 次 |
| 最近记录: |