我正在寻求答案,以确定在saltstack中是否可能运行需要输入的状态,或者是否存在盐交互式执行kinit的现有方法。Saltstack状态需要交互式输入
具体来说,我有我试图跨我们所有节点运行测试的状态,其中一些节点需要有效的kerberos票证。
- 的 'IPA' 的工具,用于验证IPA策略设置
- NFS4 kerberised文件系统访问
- 需要一个有效的Kerberos
目前其他测试中,我们有一个脚本提示登录(运行kinit),然后如果登录成功则使用salt启动测试,然后销毁票证。
我想改善这一点,因为:
- ,我们希望我们的整个配置是盐中,除了一个 最小引导配置初始盐集群,我们宁愿 不在盐状态/支柱 树之外维护单独的脚本。
- 这种解决方案仅适用于一台主机,我们想在很多节点
- 与包装脚本运行的许多测试中,我们则必须有额外的状态到至少一台主机上安装包装脚本
我们也许可以解决2,通过创建一个盐状态到Kerberos票据先调用测试状态之前先复制到所有节点,并调用状态,但是这并没有解决1.
虽然我们只需要现在运行测试的设施,通过管理员帐户,我们可以在未来预测运行其他州的愿望需要其他kerberos票据,可能由被配置的salt ACL许可的用户运行。
现有代码是一个bash脚本,看起来这样的事情,并且需要每个节点上运行,买票本地:
if kinit <adminaccount>
then
salt-call state.test.suites
kdestroy
fi
为了解决2:我想我们可以使用的东西像这样的,但仍然需要额外的包装脚本:
export KRB5CCNAME="/path/to/test/ticket"
if kinit <adminaccount>
then
salt-call state.sls state.test.util.distribute_ticket pillar="{ticket: '${KRB5CCNAME}'}"
salt <hostpattern> state.sls state.test.suites
kdestroy
fi
理想情况下,将是我们能够盐主配置中或盐的状态内定义,即国家要求交互式输入的方法,只能是用终端呼叫(例如,足够的salt-call),并将终端连接到salt进程,在那里它可用于调用kinit的cmd.run。
或者,也许有一个kerberos支持模块,它可以在执行salt时需要一张票,然后将highstate分发给minions,(也许可以使支票以某种方式在支柱数据中提供)?
我看过盐文档,但没有发现任何东西,但我可能错过了一些东西,因此我的问题。
谢谢你的时间。
如果您有更好的自动化/实现方式,请考虑回答,如果可以接受,我会将其标记为Accepted,除非其他人有使用盐的解决方案(如果它仍然有用,我仍然会upvote即使有一个特定的盐溶液作为公认的答案)。
如果你是盐专家,并且认为我是正确的,目前没有办法做到这一点,请让我知道,如果没有其他答案帮助我,我会将你的标记为已接受在等待1周的答案后,因为它不可能的信息也是有用的,所以我不花更多的时间搜索。