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
}

Nächster Beitrag Vorheriger Beitrag