【问题标题】:Ansible 2.2 Create Postgresql DatabaseAnsible 2.2 创建 Postgresql 数据库
【发布时间】:2017-02-11 02:17:40
【问题描述】:

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

关于缺少什么的任何想法?

【问题讨论】:

  • 您的错误是由于 Postgres 配置问题而不是 Ansible 问题。
  • 我不太确定,考虑到我在这个例子中使用了来自 aptitude 的 postgres 的默认安装,就像所有具有 ansible 和 postgres_db 模块的基本模板剧本一样。所以说实话,我不认为这是问题所在。请证明我错了。

标签: postgresql ansible ansible-playbook


【解决方案1】:

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

更多人在这个 github 问题线程中对新的 ansible 有这个问题 https://github.com/ansible/ansible/issues/16048

我最终做的是在 ansible.cfg 文件中设置allow_world_readable_tmpfiles = True。然后这不再是问题,但您会收到警告。我只需要在处理 postgres 角色时使用此设置,所以也许我最终会将其拆分或将设置放在不那么全局的地方。

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    相关资源
    最近更新 更多