Ansible将安全证书部署到远程服务器

时间:2017-06-22 17:24:55

标签: postgresql ansible

我对Ansible问题感到有点难过。我已经将部分设置脚本用于我的数据库服务器,我希望Ansible能够管理每个服务器的postgresql.conf文件。我目前已经推出了配置文件的最新副本,但这提出了一个问题。

我们的安全证书对每个服务器都是唯一的,postgresql.conf具有为每个服务器设置这些证书的参数。我目前让Ansible计算了shared_buffers和effective_cache_size之类的正确初始值,但不知道如何让它将唯一证书推送到每个远程服务器,或者在配置文件中唯一地设置名称匹配证书名称。

Ansible可以实现这些吗?

1 个答案:

答案 0 :(得分:0)

最近我有一个类似的要求,即每个主机部署一个特定文件(Java密钥库),以及相关的密钥库密码来解密和使用它。

对于每主机密钥库密码,我使用了host_vars:在组主机文件inventory/demoGroupName/hosts内:

hostname1.com keystore_password="{{ vault_keystore_password_hostname1.com }}"
hostname2.com keystore_password="{{ vault_keystore_password_hostname2.com }}"

然后在inventory/demoGroupName/vault

vault_keystore_password_hostname1.com=superSecurePassword
vault_keystore_password_hostname2.com=nonRepeatedPassword

(注意:建议在Ansible's best practices中使用vault_作为前缀,但可以随意修改它以适合您的场景)

然后在工作中,只需将{{keystore_password}}放在相关位置,例如:

- name: arbitrary tasks
  command: configure-keystore --password="{{ keystore_password }}"

现在在我的场景中,我将各个密钥库放在roles / role_name / files目录中,并通过在{{inventory_hostname}}中替换作为文件名的一部分来复制它,但是this answer给出了更好的结果在我看来解决方案。要么适合你的情况,要么后者可能更好的长期。如果所有主机的证书名称都相同,那么这也会稍微简化您的情况。