我有一个库存文件,如下所示:
[database21]
syd01-opscpoo-shared.ce4l1e4wl3z.ap-southeast-2.rds.amazonaws.com
[database33]
syd01-desaasv-shared.re4l5of4bl3z.ap-southeast-2.rds.amazonaws.com
现在我需要实际阅读此库存文件并选择以下部分
syd01-opscpoo-shared
syd01-desaasv-shared
并将其保存在寄存器变量中,我不知道该怎么做。
答案 0 :(得分:0)
打开读取文件并逐行迭代,使用带有“contains”的字符串搜索,在本例中我使用'amazonaws.com'假设其类似于需要拆分的行。在使用点作为分隔符将行拆分为数组后,第一个元素应该是您需要的字符串。
xcode
答案 1 :(得分:0)
您可以像这样获取主机名的第一部分:
{{ item.split('.', 1) | first }}
在您的任务中进行调整。希望这对你有帮助。
以下是您如何实现目标的示例:
<强>主机强>:
[local]
localhost
[database21]
syd01-opscpoo-shared.ce4l1e4wl3z.ap-southeast-2.rds.amazonaws.com
[database33]
syd01-desaasv-shared.re4l5of4bl3z.ap-southeast-2.rds.amazonaws.com
<强> playbook.yml 强>:
---
- hosts: local
connection: local
gather_facts: no
tasks:
- debug:
msg: "{{ item.split('.', 1) | first }}"
with_items:
- "{{ groups['database21'] }}"
- "{{ groups['database33'] }}"
Playbook结果:
ansible-playbook -i hosts test.yml
PLAY [local] *******************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => (item=syd01-opscpoo-shared.ce4l1e4wl3z.ap-southeast-2.rds.amazonaws.com) => {
"item": "syd01-opscpoo-shared.ce4l1e4wl3z.ap-southeast-2.rds.amazonaws.com",
"msg": "syd01-opscpoo-shared"
}
ok: [localhost] => (item=syd01-desaasv-shared.re4l5of4bl3z.ap-southeast-2.rds.amazonaws.com) => {
"item": "syd01-desaasv-shared.re4l5of4bl3z.ap-southeast-2.rds.amazonaws.com",
"msg": "syd01-desaasv-shared"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0