Ansible hosts要设置为传递的变量的子字符串
我有一个这样的剧本:Ansible hosts要设置为传递的变量的子字符串,ansible,Ansible,我有一个这样的剧本: - name: Perform an action on a Runtime hosts: all roles: - role: mule_action_on_Runtime 调用时的变量(--extra vars'mule\u runtime=MuleS01-3.7.3-Testing')具有所需主机的前缀(MuleS01)。我想设置主机:MuleS01。如何做到这一点?鉴于您的模式始终是partWant part在otherDash之后关心另一个part您
- name: Perform an action on a Runtime
hosts: all
roles:
- role: mule_action_on_Runtime
调用时的变量(
--extra vars'mule\u runtime=MuleS01-3.7.3-Testing'
)具有所需主机的前缀(MuleS01
)。我想设置主机:MuleS01。如何做到这一点?鉴于您的模式始终是partWant part在otherDash之后关心另一个part
您可以使用Python的方法,然后通过Jinja过滤器获取列表的第一项
以下是完整的工作手册示例:
-主机:本地
收集事实:不
任务:
-调试:
msg:{{mule_runtime.split('-')| first}”
这就产生了重述:
play.yml --extra-vars 'mule_runtime=MuleS01-3.7.3-Testing'
PLAY [local] *******************************************************************
TASK [debug] *******************************************************************
ok: [local] => {
"msg": "MuleS01"
}
PLAY RECAP *********************************************************************
local : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
与库存
shell>cat主机
MuleS01
MuleS02
MuleS03
这个剧本
shell>cat pb.yml
-主持人:全部
任务:
-调试:
msg:Set{{mule_runtime}
时间:mule_runtime.split('-')。0==库存_主机名
给予
跳过:[MuleS02]
确定:[MuleS01]=>{
“msg”:“设置MuleS01-3.7.3-测试”
}
跳过:[MuleS03]
根据我使用的答案:-名称:在运行时主机上执行操作:“{{mule_Runtime.split('-')|first}}”收集_事实:无角色:-角色:mule_操作
,它工作得很好!