我想写一个 Ansible 剧本来尝试处理一些 postgresql 命令。我之前做了一个类似的剧本,但在这种情况下 Postgresql 不需要密码。
我以为我可以使用我的旧剧本,效果很好,但我错了。该数据库需要密码。我知道 Ansible 有 postgresql 支持,这很好(postgresql_db、postgresql_ext、postgresql_lang、postgresql_privs、postgresql_user),有了它们我可以完成一半的工作,并且它可以很好地处理密码,但我不知道如何发送一个简单的sql 命令到我的数据库。在我的旧剧本中,我使用“shell”命令发送这些请求(例如:shell: "psql {{ databases.name }} --username {{ admin_user}} -c 'DROP SCHEMA public CASCADE;'"
).
我还想上传 db_dump。早些时候我使用 psql 来实现此目的,但是这个新数据库需要密码......
有人可以告诉我如何处理这种情况吗?我使用的是 ansible 2.0,只能从特定的远程主机访问数据库。
Thanks
创建一个.pgpass
文件作为剧本的一部分放在非默认位置,并将密码放在那里。指定其位置在PGPASSFILE
环境变量。一旦不再需要就将其删除。
See libpq 环境变量 http://www.postgresql.org/docs/current/static/libpq-envars.html.
或者,我认为您可以使用连接字符串进行连接并将密码指定为连接字符串的一部分,例如
'dbname=mydb user=fred password=borkbork'
(未经测试)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)