我是ansible(2.2.1)的新手并且已经开始从我们的结构脚本迁移到ansible,我发现它在结构上有所改善。我遇到了一个问题,它应该是非常直接的,但因为我不知道通过和通过我不知道如何继续。我现在正在针对 vagrant 框执行此操作。
问题在于用户权限和postgres。
让我说我有这本剧本
- hosts: web
become: yes
become_user: root
vars:
dbname: myapp
tasks:
- name: ensure database is created
postgresql_db: name={{dbname}}
我不能让这个简单的例子起作用!满足所有依赖项。如果我使用mysql做同样的事情,这可以正常工作,但在这里我遇到unable to connect to database: FATAL: Peer authentication failed for user "postgres"
的问题。
在mysql中我使用“root”用户使用空白密码,这是有效的,因为我知道用户是在安装时使用空白密码创建的。
在完成postgresql的安装后创建了一个用户postgres
,因此用户存在。作为root
,我应该可以通过说我是postgres
用户来登录。我是否错过了如何做到这一点?如果登录到服务器sudo -su postgres && psql
,它可以正常工作。
我还尝试通过我想要运行的任务添加become_user: postgres
,但后来我遇到unprivileged user
个问题。
缺少什么想法?
答案 0 :(得分:0)
找到一些解决方法和解决方案,因为你可以放弃一些安全性(这是有道理的,这只是因为这个原因的问题)。
此github问题线程中有更多人在使用新ansible时出现此问题 https://github.com/ansible/ansible/issues/16048
我最终做的是ansible.cfg文件中的设置allow_world_readable_tmpfiles = True
。那么这不再是一个问题,但你得到警告。在处理postgres角色时我只需要这个设置,所以也许我最终将它拆分或将设置放在一个不太全局的地方。