如何在Ansible中成为拥有未知密码的非特权用户

时间:2019-05-01 13:57:27

标签: ansible

我想确保已创建一个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。

错误可能是

  • 使用以下任意组合的“错误的su密码”:yes和成为方法:su
  • 使用“变得:是”和“变得_方法:sudu”的任何组合时,“ sshUser不在sudoers文件中”
  • 未使用时“用户postgres的对等身份验证失败”:完全是。

最后一个是postgresql错误,所以我不确定它是否离我想要的位置更近,因为它似乎使用了正确的用户。 sudo -u postgres psql虽然可以正常工作,所以我不知道为什么验证用户postgres是否正确登录时应该有问题。

我正在使用Ansible 2.5.1,要安装postgresql的主机是debian buster。

3 个答案:

答案 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连接变量