【Amazon RDS(postgresql) × Zabbix4.0】Zabbix構築時の初期設定用SQLを流し込む際のパスワード自動入力の方法
お世話になっております。
現在Amazon RDS(postgresql)をZabbixのDBとした環境をAnsibleで構築しています。
Zabbix構築時に以下コマンドで初期設定用SQLを流し込んでいるのですが、Ansibleで実行した場合、ユーザーパスワードが自動入力されていないようでエラーとなります。
- shell: zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | psql -U zabbixdbuser -h postgresql-db.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -W Zassword -d zabbixdb
<エラー内容>
atal: [localhost]: FAILED! => {"changed": true, "cmd": "zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | psql -U zabbixdbuser -h postgresql-db.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -W Zassword -d zabbixdb", "delta": "0:00:00.030139", "end": "2019-10-16 01:06:52.990763", "msg": "non-zero return code", "rc": 2, "start": "2019-10-16 01:06:52.960624", "stderr": "psql: warning: extra command-line argument \"Zassword\" ignored\nPassword for user zabbixdbuser: \npsql: FATAL: password authentication failed for user \"zabbixdbuser\"\nFATAL: password authentication failed for user \"zabbixdbuser\"", "stderr_lines": ["psql: warning: extra command-line argument \"Zassword\" ignored", "Password for user zabbixdbuser: ", "psql: FATAL: password authentication failed for user \"zabbixdbuser\"", "FATAL: password authentication failed for user \"zabbixdbuser\""], "stdout": "", "stdout_lines": []}
ユーザーパスワードを自動入力させるにはどうしたら良いかご教示いただきたいです。
<構成情報>
・ Zabbix 4.0
・Amazon RDS(postgresql)
RDSエンドポイント:postgresql-db.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
マスターユーザー:zabbixdbuser
ユーザーパスワード:Zassword
データベース名:zabbixdb
TNK - 投稿数: 4769
実行しようとされているpsqlのコマンドラインは、通常のターミナ
ル等で実行して正常に実行できていますか?
-Wオプションは、パスワードプロンプトを表示させるものであった
と思うのですが、-Wの後ろにパスワードを指定しているかのように
見受けられます。
このコマンドラインでは正常に実行できていないと思われます。
psqlコマンド実行時に、パスワードプロンプトがでるのを抑止する
方法としては、.pgpassファイルを作成して接続情報を設定するか、
環境変数PGPASSWORDにパスワードを設定するかになると思います。
Ansibleでの実行とのことですので、環境変数PGPASSWORDにパスワ
ードを設定した状態でpsqlコマンドを実行するようにPlaybookを変
更してみてください。
ご参考:
https://www.postgresql.jp/document/11/html/app-psql.html
https://www.postgresql.jp/document/11/html/libpq-envars.html
hon-chan - 投稿数: 33
TNKさん
早速のご回答ありがとうございます。
ご指摘の内容をもとに色々検証した結果、
.bash_profileファイルへ環境変数PGPASSWORDを追加し、
bash -lcコマンドで実行したらパスワード自動入力がうまくいきました。
大変助かりました。ありがとうございました。