Standardmäßig wird bei Alpine Linux das Tool ip
von der Busybox bereitgestellt. Selbige verwendet aber eine leicht andere Syntax als es vom setup
-Modul von ansible erwartet wird, von daher können keine aktuell konfigurierten IPs ausgelesen werden, was sehr ärgerlich ist, wenn man genau diese Informationen in einem Template braucht. Lösen lässt sich das Problem, indem man das "echte" ip
-Tool nachinstalliert:
apk add iproute2
Alternativ kann man das natürlich auch direkt von ansible installieren lassen, weshalb ich mir für den Zweck ein kleines Playbook geschrieben habe, welches für mich wichtige Pakete installiert:
---
- hosts: alpine
tasks:
- name: Install common packages
apk:
name: bash, iproute2, pyton, vim
state: latest
Ist das Paket iproute2
dann installiert, findet ansible auch die Netzwerkkonfiguration:
# ansible 10.0.0.3 -m setup -a "filter=ansible_default_ipv4"
10.0.0.3 | SUCCESS => {
"ansible_facts": {
"ansible_default_ipv4": {
"address": "10.0.0.3",
"alias": "eth0",
"broadcast": "10.0.0.255",
"gateway": "10.0.0.1",
"interface": "eth0",
"macaddress": "ee:0e:67:75:8e:70",
"mtu": 1500,
"netmask": "255.255.255.0",
"network": "10.0.0.0",
"type": "ether"
}
},
"changed": false
}