oak*_*ice 35 authentication postgresql freebsd ansible ansible-playbook
我在FreeBSD上运行PostgreSQL 9.3.FreeBSD pgsql用作PostgreSQL的默认系统用户.我/usr/local/pgsql/data/pg_hba.conf看起来像这样:
# TYPE DATABASE USER ADDRESS METHOD
local all pgsql peer
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Run Code Online (Sandbox Code Playgroud)
使用此配置,我可以在pgsql没有密码的情况下连接到数据库.
$ su pgsql
$ psql template1
template1=# \l
List of databases
...
Run Code Online (Sandbox Code Playgroud)
这按预期工作.
在远程计算机上,我有一个Ansible任务在FreeBSD服务器上创建数据库.
- name: Create the postgresql database
postgresql_db: name=mydatabase login_user=pgsql
Run Code Online (Sandbox Code Playgroud)
执行此任务失败并显示错误Peer authentication failed for user "pgsql".
PLAY [web] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [host.example.org]
TASK: [database | Create the postgresql database] *****************************
failed: [host.example.org] => {"failed": true}
msg: unable to connect to database: FATAL: Peer authentication failed for user "pgsql"
FATAL: all hosts have already failed -- aborting
Run Code Online (Sandbox Code Playgroud)
当用户的对等身份验证pgsql明显起作用时,为什么会失败?
git*_*rik 49
这对我有用:
- name: Create postgres database
become: true
become_user: postgres
postgresql_db:
name: <database-name>
Run Code Online (Sandbox Code Playgroud)
在您的特定情况下,用户可能是pgsql,但我认为通常是用户postgres.
Mos*_*ted 20
或者语法略有不同(来自Ansible 1.9)和用户创建(可能对某些人有帮助)
- name: Create postgres user
postgresql_user: name={{ pg_user }} password={{ pg_password }}
become: true
become_user: postgres
Run Code Online (Sandbox Code Playgroud)
Dyl*_*rce 10
对于那些遇到"无法设置临时文件的权限,Ansible需要创建..."以便切换到postgres用户的人,become_user可以在Ubuntu主机上利用流水线操作.
ansible.cfg在您的playbook目录中创建一个并添加以下行:
[ssh_connection]
pipelining=True
Run Code Online (Sandbox Code Playgroud)
我有同样的问题.在我的情况下,我忽略了我将我的Ansible-playbook配置为另一个Linux用户而不是具有对等访问权限的用户(在您的情况下为pgsql).解决方案是将Ansible播放为pgsql:
- name: Create the postgresql database
remote_user: pgsql
postgresql_db: name=mydatabase login_user=pgsql
...
Run Code Online (Sandbox Code Playgroud)
或者以root身份运行它,并使用su命令pgsql:
- name: Create the postgresql database
remote_user: root
become: yes
become_user: pgsql
postgresql_db: name=mydatabase login_user=pgsql
...
Run Code Online (Sandbox Code Playgroud)
...取决于您通过ssh的访问权限.
这是使用Ansible 2.0.
小智 -4
因此,如果我理解得很好,您在远程计算机上,也许您应该更改 /usr/local/pgsql/data/pg_hba.conf 以允许远程连接“host all all 0.0.0.0/0 md5”或其他特定网络地址。
| 归档时间: |
|
| 查看次数: |
13072 次 |
| 最近记录: |