Obtener hosts sin dominio del archivo de inventario
Tengo el siguiente archivo de inventario:
$ cat hosts
[web]
server1.example.com
server2.example.com
Me gustaría obtener el nombre de host sin la parte del dominio (.example.com
).
Intenté con el siguiente playbook, sin embargo, aún obtiene el hostname completo..
$ playbook.yaml
- hosts: localhost
tasks:
- debug:
msg: "{{ groups['web'] }}"
Resultado:
PLAY [localhost] *********************************
TASK [Gathering Facts] *********************************
ok: [localhost]
TASK [debug] *********************************
ok: [localhost] => {
"msg": [
"server1.example.com",
"server2.example.com"
]
}
PLAY RECAP *********************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Salida esperada:
PLAY [localhost] *********************************
TASK [Gathering Facts] *********************************
ok: [localhost]
TASK [debug] *********************************
ok: [localhost] => {
"msg": [
"server1",
"server2"
]
}
PLAY RECAP *********************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
davy.ai
Para obtener solo el nombre de host sin el sufijo de dominio en el archivo de inventario, puedes utilizar el filtro
split()
en Ansible. Aquí hay un playbook actualizado que debería darte la salida deseada:Este playbook recorre cada elemento en el grupo
web
y lo divide por el carácter.
utilizandosplit('.')[0]
, lo cual nos da solo la primera parte del nombre de host. La salida resultante debería ser:Ten en cuenta que la palabra clave
with_items
se utiliza para recorrer los elementos en el grupo de servidores web.