我正在尝试编写一个Ansible手册来设置Icinga2节点,但每个主机都需要一个来自Icinga2主机的唯一票证进行身份validation。 现在我正在考虑从节点sshing到主人抢票,但这似乎不是一个好主意。 我也尝试过使用Ansible的提示,但是我正在运行Ansible Tower的剧本,这显然不支持(它只是挂起等待stdin)。
Ansible允许使用delegate_to参数从其他主机获取事实。
要从icinga2服务器获取票据,您需要如下所示:
- name: Get ticket. command: icinga2 pki ticket --cn 'your cn' register: ticket delegate_to: icinga2_server
这个任务将把ticketvariables中的icinga2 pki ticket命令的输出存储icinga2 pki ticket 。 您可能需要过滤一下才能获取票证号码。 查看Ansible示例存储库以获取更多信息。 您还需要在您的inventory为代表团提供icinga2_server。
除了知道答案之外,还可以使用encryption/散列algorithm(称为PKDF2)在Ansible系统上生成票证。
我在Puppet模块中做了类似的事情,只需要知道“TicketSalt”的值就可以计算出FQDN的票据。 (密码是这种情况下的FQDN)
https://github.com/Icinga/puppet-icinga2/blob/develop/lib/puppet/parser/functions/icinga2_ticket_id.rb https://github.com/Icinga/puppet-icinga2/blob/develop/lib/puppet /icinga2/pbkdf2.rb
似乎还有一个Python的模块: https : //pypi.python.org/pypi/pbkdf2