首页 文章

Saltstack声明要求互动进入

提问于
浏览
0

我正在寻找关于是否或如何在saltstack中运行需要输入的状态,或者是否存在盐以交互方式执行kinit的现有方式的答案 .

具体来说,我有一些州,我试图在所有节点上运行测试,其中一些节点需要有效的kerberos票 .

  • 'ipa'工具,用于验证IPA策略设置

  • NFS4 kerberised文件系统访问

  • 需要有效kerberos票的其他测试

目前,我们有一个脚本提示登录(运行kinit),然后如果登录成功则使用salt启动测试,然后销毁故障单 .

我想改进这个,因为:

  • 我们'd like our entire configuration to be within salt, aside from a minimal bootstrap to configure the initial salt cluster, we' d不喜欢在盐状态/支柱树之外维护单独的脚本 .

  • 此解决方案仅适用于一个主机,我们希望在多个节点上运行许多测试
    使用包装器脚本

  • ,然后我们必须有额外的状态来在至少一个主机上安装包装器脚本

我们可以解决2,通过创建一个salt状态来首先将kerberos票证复制到所有节点,并在调用测试状态之前先调用该状态,但这不能解决1 .

虽然我们现在只需要设施来运行测试,但是通过管理员帐户,我们可以预见到将来运行需要其他kerberos票的其他州的愿望,可能由被配置的盐允许进入州的用户运行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主配置或salt状态本身内定义一种方法,即状态需要交互式输入,只能通过终端调用(例如salt-call)并将终端连接到salt进程,例如可用于调用kinit的cmd.run .

或者,也许有一个kerberos支持模块,在执行salt之前需要一张票,然后将高状态分配给minions,(并且可能以某种方式在支柱数据中提供票证)?

我查看了盐文档并没有找到任何东西,但我可能错过了什么,因此我的问题 .

谢谢你的时间 .

如果您有更好的自动化/实现方法,请考虑回答,如果可以接受,我会将其标记为已接受,除非其他人有使用盐的解决方案(如果它仍然有用,我仍然会支持它即使在那里是一种特定于盐的解决方案,作为公认的答案) .

如果您是盐专家,并且认为我没有办法解决这个问题,请告诉我,如果没有其他答案可以帮助我,我会在等待1周后将您的标记为已接受对于答案,因为它不可能的信息也很有用所以我不会花更多的时间来搜索 .

1 回答

  • 1

    我不是Salt的真正专家,但现在似乎在各州都没有这种可能性 . Salt状态中的包装器脚本是一些解决方法选项之一,另一个将调用cmdmod.run module(具有 stdin 参数) . 但是,你可能会最终得到另一个Salt发布本身的包装脚本 .

    自2014年以来,有一个open issue关于添加向 cmd.run 州发送一些输入的能力 .

相关问题