Database
多次使用ansible初始化postgresql
讓這個任務第一次工作:
- 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