使用ansible多次初始化postgresql

raw*_*ain 3 database ansible

使这个任务第一次就能工作:

- name: Initialize the Database
  command: /usr/pgsql-9.6/bin/postgresql96-setup initdb
Run Code Online (Sandbox Code Playgroud)

如果第二次运行,会出现错误:

致命:[192.168.0.1]:失败!=> {“更改”:true,“cmd”:[“/usr/pgsql-9.6/bin/postgresql96-setup”,“initdb”],“delta”:“0:00:00.017590”,“结束”: "2019-12-11 06:08:49.999631", "msg": "非零返回码", "rc": 1, "start": "2019-12-11 06:08:49.982041", "stderr ": "", "stderr_lines": [], "stdout": "数据目录不为空!", "stdout_lines": ["数据目录不为空!"]}

如果它已经在服务器上初始化了数据库,如何避免运行此任务?

Vla*_*tka 6

问:“stdout:数据目录不为空!”

答:18.2。创建数据库集群说:

如果数据目录存在并且已经包含文件,initdb 将拒绝运行;这是为了防止意外覆盖现有安装。

要使命令任务幂等,请使用参数creates,例如

- name: Initialize the Database
  command: /usr/pgsql-9.6/bin/postgresql96-setup initdb
  args:
    creates: /usr/local/pgsql/data
Run Code Online (Sandbox Code Playgroud)