我想确保创建一个postgresql数据库。
为此,我有一个postgresql角色的剧本。通过ssh登录服务器使用非特权用户,让他们命名为sshUser。每当我想以特权用户身份运行命令时,我都会使用become_user:root。在配置中,我为root用户启用了become_ask_pass。
- name: Add the user 'postgres'
user:
name: postgres
state: present
become_user: root
[privilege_escalation]
become_user=root
become_ask_pass=True
现在我想以用户postgres的形式检查数据库。在非安全的条款中,我想成为root而不是sudo -u postgres psql,因为我有root密码而不是postgres密码。如果我不是root,那么尝试这个时我会得到“sshUser不在sudoers文件中”:
- name: Ensure database is created
postgresql_db:
name: "{{ db_name }}"
encoding: UTF-8
state: present
become_user: postgres
有没有办法成为root用户?
编辑:到目前为止我尝试过的:
我尝试使用成为:全局以及本地,可能是任何组合auf become_method:su | sudo以及在配置中启用pipelining和allow_world_readable_tmpfiles。
错误也是
最后一个是postgresql错误,所以我不确定它是否更接近我想要的位置,因为它似乎使用了正确的用户。 sudo -u postgres psql definetly虽然工作,所以我不知道为什么如果用户postgres正确登录它应该有问题验证。
我正在使用Ansible 2.5.1,我想安装postgresql的主机是debian buster。
正如larsks所说,不可能链接用户更改。记录在:https://docs.ansible.com/ansible/2.4/become.html#becoming-an-unprivileged-user
方法无法链接。您不能使用sudo / bin / su - 成为用户,您需要具有在sudo中以该用户身份运行命令的权限,或者能够直接向其发送su
我仍然在寻找一种解决方法,但是现在我将sshUser添加到sudoers中。
就在这里。
https://docs.ansible.com/ansible/latest/user_guide/become.html
启用模式的密码
如果需要密码才能进入启用模式,可以通过以下两种方式之一指定:
提供--ask-become-pass命令行选项设置ansible_become_pass连接变量