Database

多次使用ansible初始化postgresql

  • February 23, 2021

讓這個任務第一次工作:

- name: Initialize the Database
 command: /usr/pgsql-9.6/bin/postgresql96-setup initdb

第二次執行會報錯:

致命的:

$$ 192.168.0.1 $$: 失敗的!=> {“改變”:真,“cmd”:$$ “/usr/pgsql-9.6/bin/postgresql96-setup”, “initdb” $$, “delta”: “0:00:00.017590”, “end”: “2019-12-11 06:08:49.999631”, “msg”: “非零返回碼”, “rc”: 1, “start “: “2019-12-11 06:08:49.982041”, “stderr”: “”, “stderr_lines”:$$ $$, “stdout”: “數據目錄不為空!”, “stdout_lines”:$$ “Data directory is not empty!” $$}

如果它已經在伺服器上初始化了數據庫,如何避免執行此任務?

首先檢查由 initdb 創建的文件/目錄是否存在,如果不存在,則為 initdb。

https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html

問:stdout:數據目錄不為空!

答:18.2。創建數據庫集群說:

如果數據目錄存在並且已經包含文件,initdb 將拒絕執行;這是為了防止意外覆蓋現有安裝。

要使命令具有冪等性,請使用參數created,例如

   - name: Initialize the Database
     command: /usr/pgsql-9.6/bin/postgresql96-setup initdb
     args:
       creates: /usr/local/pgsql/data

引用自:https://serverfault.com/questions/995134