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_操作
,它工作得很好!