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 回答
尝试:
我有类似的问题,我曾经用-k -K(大写)运行我的剧本 . 剧本将提示输入密码 .
希望有所帮助!
您需要修改
/etc/sudoers
文件,以允许连接到删除服务器的用户切换到另一个没有密码提示的用户 .如果用于 Build 连接的ssh_user属于sudoers组,则不需要指定sudo_user,只需要说sudo_pass .
将文件添加到名为postgres的目标计算机上的
/etc/sudoers.d
目录中,其中包含以下内容:这可以确保postgres用户(假设您使用它作为您的sudo用户)在尝试sudo命令时不会被要求输入密码 .
如果您使用其他用户连接到目标计算机,则必须修改上述内容以向该用户授予NOPASSWD权限 .
有关详细信息,请参阅here .