我想确保已创建一个postgresql数据库。
为此,我有一本有postgresql角色的剧本。通过ssh登录到服务器使用的是非特权用户,将其命名为sshUser。每当我想以特权用户身份运行命令时,我都会使用begin_user:root。在配置中,我为根用户启用了begin_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的任何组合_en_method:su | sudo以及在配置中启用流水线和allow_world_visible_tmpfiles。
错误可能是
最后一个是postgresql错误,所以我不确定它是否离我想要的位置更近,因为它似乎使用了正确的用户。 sudo -u postgres psql虽然可以正常工作,所以我不知道为什么验证用户postgres是否正确登录时应该有问题。
我正在使用Ansible 2.5.1,要安装postgresql的主机是debian buster。
答案 0 :(得分:0)
正如幼虫所说,不可能链接用户更改。记录在:https://docs.ansible.com/ansible/2.4/become.html#becoming-an-unprivileged-user
方法无法链接。您不能使用sudo / bin / su-成为用户,您需要具有特权才能在sudo中以该用户身份运行命令,或者能够直接对其进行su
我仍在寻找解决方法,但是现在我将sshUser添加到sudoers中。
答案 1 :(得分:0)
您可以尝试在剧本中设置新的成为通行证
- name: set password variable
set_fact:
ansible_become_pass: "{{ newPassword }}"
答案 2 :(得分:-1)
是的,有。
https://docs.ansible.com/ansible/latest/user_guide/become.html
启用模式的密码
如果需要密码才能进入启用模式,则可以在一个密码中指定 两种方式:
提供--ask-become-pass命令行选项来设置 ansible_become_pass连接变量