Ansible 2.2创建Postgresql数据库

时间:2017-02-01 15:52:03

标签: postgresql ansible ansible-playbook

我是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个问题。

缺少什么想法?

1 个答案:

答案 0 :(得分:0)

找到一些解决方法和解决方案,因为你可以放弃一些安全性(这是有道理的,这只是因为这个原因的问题)。

此github问题线程中有更多人在使用新ansible时出现此问题 https://github.com/ansible/ansible/issues/16048

我最终做的是ansible.cfg文件中的设置allow_world_readable_tmpfiles = True。那么这不再是一个问题,但你得到警告。在处理postgres角色时我只需要这个设置,所以也许我最终将它拆分或将设置放在一个不太全局的地方。