首页 文章

Ansible中缺少sudo密码

提问于
浏览
13

Ansible从以下代码请求sudo密码,它尝试创建一个新的postgres用户 .

错误信息:

致命:[xxx.xxx.xxx.xxx] =>缺少sudo密码

main.yml

- name: 'Provision a PostgreSQL server'
  hosts: "dbservers"
  sudo: yes
  sudo_user: postgres
  roles:
    - postgres

create_db.yml

- name: Make sure the PostgreSQL users are present
  postgresql_user: name=rails password=secret role_attr_flags=CREATEDB,NOSUPERUSER
  sudo_user: postgres
  sudo: yes

用于登录此计算机的remote_user是 non-root 用户,没有密码,只能使用密钥身份验证登录 .

对于用户 postgres ,此帐户也没有密码,因为刚刚安装了数据库 .

由于我以 non -root用户身份登录,因此当切换到 postgress 帐户以创建数据库用户时,它会询问密码 . 但是如果从root帐户切换到 postgres 则不需要密码 . 所以,我想知道是否有办法切换到root,然后切换到用户 postgres .

注意:root帐户没有公钥,没有密码,也无法从SSH登录 .

4 回答

  • 0

    尝试:

    我有类似的问题,我曾经用-k -K(大写)运行我的剧本 . 剧本将提示输入密码 .

    ansible-playbook mail.yml -k -K
    

    希望有所帮助!

  • 2

    您需要修改 /etc/sudoers 文件,以允许连接到删除服务器的用户切换到另一个没有密码提示的用户 .

  • 0

    如果用于 Build 连接的ssh_user属于sudoers组,则不需要指定sudo_user,只需要说sudo_pass .

  • 0

    将文件添加到名为postgres的目标计算机上的 /etc/sudoers.d 目录中,其中包含以下内容:

    postgres ALL=(ALL) NOPASSWD:ALL
    

    这可以确保postgres用户(假设您使用它作为您的sudo用户)在尝试sudo命令时不会被要求输入密码 .

    如果您使用其他用户连接到目标计算机,则必须修改上述内容以向该用户授予NOPASSWD权限 .

    有关详细信息,请参阅here .

相关问题