Ansible postgresql_db和postgresql_user模块

时间:2016-10-27 15:20:02

标签: postgresql ansible ansible-playbook ansible-2.x

我试图在现有的pgsql数据库中添加数据库和用户(在centOS 7.1服务器上)。 我使用postgresql_user和postgresql_db模块(Ansible 2.2)来做到这一点,但是我收到了错误:

fatal: [XXXXXXXXXXXXXX]: FAILED! => {"changed": false, "failed": true, "msg": "unable to connect to database: could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.6543\"?\n"}

我使用以下任务创建数据库

- name: Create database
  postgresql_db: name=db port=6543
  become: true
  become_user: postgres

现在,我已经完成了这项工作正常,但不是幂等的:

- name: Create database
  command: {{ PGBIN }}/bin/createdb db -p 6543 -w
  become: true
  become_user: postgres

我已根据需要安装了psycopg2软件包。有关信息,数据库未安装在标准目录中,并且未使用标准端口5432。

1 个答案:

答案 0 :(得分:1)

请尝试以下任一方法:

  • 通过login_unix_socket参数
  • 将正确的路径传递到您的postgres套接字
  • 切换到IP连接并使用login_hostlogin_userlogin_password,但您需要设置postgres用户密码或创建其他超级用户。

这是我的任务之一

- name: Ensure application database is created
  postgresql_db:  name={{ postgres_app_db }}
                  encoding='UTF-8'
                  lc_collate='en_US.UTF-8'
                  lc_ctype='en_US.UTF-8'
                  state=present
                  login_host={{ postgres_client_host }}
                  login_user="{{ postgres_superuser }}"
                  login_password="{{ postgres_superuser_password }}"
                  port="{{ postgres_client_port }}"

我更喜欢使用IP连接,因为在我的设置中,他们在对数据库服务器或应用服务器运行时会工作。