[SOLVED] proxmox ansible

olli-70

New Member
Dec 22, 2022
4
0
1
Hallo,
Ich wollte die Zeit vor Weihnachten nutzen um ein Homelab automatisiert aufzubauen. Zur Virtualsierung probiere ich dabei Proxmox aus.
Deshalb habe ich mich hier im Forum angemeldet und werfe mal ein "Hallo" in die Runde :)
Nun versuche ich mittels ansible einen lxc Container zu erstellen. Aus der Dokumentation habe ich mir den einfachsten Fall rausgereicht - und schon da scheitere ich.

Setup:
ein einzelner Server mit Proxmox installation (aktuelle Version) + alle Updates (stand heute). Manuell funktioniert alles, d.H. Erstellen von VM's, Containern, Webinterface usw.
Ansible läuft auf meinem Mac.

Playbooks zum Update, Paketinstallation, Erstellen von Usern, Tokens etc auf dem Proxmox Server laufen einwandfrei.

Hier das Playbook:
Code:
- hosts: proxmox_hosts
  become: false
  tasks:
  - name: create minimal
    proxmox:
      vmid: 200
      node: "{{ inventory_hostname }}"
      api_user: root@pam
      api_password: test
      api_host: "{{ inventory_hostname }}"
      password: test
      hostname: example.org
      ostemplate: local:vztmpl/ubuntu-22.10-standard_22.10-1_amd64.tar.zst'
      mounts: '{"mp0":"local-lvm:8,mp=/mnt/test/"}'

Hier die Fehlermeldung: (Aufruf mit -vvv)

Code:
The full traceback is:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
OSError: [Errno 113] No route to host

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 382, in _make_request
    self._validate_conn(conn)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1012, in _validate_conn
    conn.connect()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 353, in connect
    conn = self._new_conn()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 181, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7f15887408e0>: Failed to establish a new connection: [Errno 113] No route to host

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='c-host2', port=8006): Max retries exceeded with url: /api2/json/access/ticket (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f15887408e0>: Failed to establish a new connection: [Errno 113] No route to host'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/ansible_proxmox_payload_46700oe1/ansible_proxmox_payload.zip/ansible_collections/community/general/plugins/module_utils/proxmox.py", line 101, in _connect
    return ProxmoxAPI(api_host, verify_ssl=validate_certs, **auth_args)
  File "/usr/local/lib/python3.9/dist-packages/proxmoxer/core.py", line 210, in __init__
    self._backend = importlib.import_module(f".backends.{backend}", "proxmoxer").Backend(
  File "/usr/local/lib/python3.9/dist-packages/proxmoxer/backends/https.py", line 302, in __init__
    self.auth = ProxmoxHTTPAuth(
  File "/usr/local/lib/python3.9/dist-packages/proxmoxer/backends/https.py", line 59, in __init__
    self._get_new_tokens(password=password, otp=otp)
  File "/usr/local/lib/python3.9/dist-packages/proxmoxer/backends/https.py", line 70, in _get_new_tokens
    response_data = requests.post(
  File "/usr/lib/python3/dist-packages/requests/api.py", line 119, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='c-host2', port=8006): Max retries exceeded with url: /api2/json/access/ticket (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f15887408e0>: Failed to establish a new connection: [Errno 113] No route to host'))
fatal: [c-host2]: FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            "api_host": "c-host2",
            "api_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "api_token_id": null,
            "api_token_secret": null,
            "api_user": "root@pam",
            "clone": null,
            "clone_type": "opportunistic",
            "cores": null,
            "cpus": null,
            "cpuunits": null,
            "description": null,
            "disk": null,
            "features": null,
            "force": false,
            "hookscript": null,
            "hostname": "example.org",
            "ip_address": null,
            "memory": null,
            "mounts": {
                "mp0": "local-lvm:8,mp=/mnt/********/"
            },
            "nameserver": null,
            "netif": null,
            "node": "c-host2",
            "onboot": null,
            "ostemplate": "local:vztmpl/ubuntu-22.10-standard_22.10-1_amd64.tar.zst'",
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "pool": null,
            "proxmox_default_behavior": "no_defaults",
            "pubkey": null,
            "purge": false,
            "searchdomain": null,
            "state": "present",
            "storage": "local",
            "swap": null,
            "timeout": 30,
            "unprivileged": null,
            "validate_certs": false,
            "vmid": 200
        }
    },
    "msg": "HTTPSConnectionPool(host='c-host2', port=8006): Max retries exceeded with url: /api2/json/access/ticket (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f15887408e0>: Failed to establish a new connection: [Errno 113] No route to host'))"
}

Aufgrund der Fehlermeldung No route to Host habe ich bereits folgendes versucht:

- Namensauflösung auf dem proxmox-server (c-host2) getestet mit host und nslookup -> funktioniert
- Variable inventory_hostname gegen hardcoded Wert gesucht -> kein Erfolg
- für "node" den Wert node0 und node1 vergeben -> kein Erolg

jetzt bin ich so ziemlich ratlos, woran es liegen könnte, irgendwelche Ideen ??

LG
Olli
 
Es scheint, als ob du Probleme bei der Verbindung zwischen deinem Mac und dem Proxmox-Server hast. Eine mögliche Lösung könnte sein, sicherzustellen, dass die Firewall auf beiden Seiten korrekt konfiguriert ist und dass du die richtige IP-Adresse und den richtigen Port für den Proxmox-Server verwendest. Du könntest auch versuchen, den Proxmox-Server direkt von deinem Mac aus mit einem Webbrowser zu erreichen, um sicherzustellen, dass die Verbindung zwischen den beiden Geräten funktioniert. Wenn das nicht hilft, könntest du auch versuchen, die Netzwerkverbindung zwischen deinem Mac und dem Proxmox-Server zu überprüfen und eventuell die Netzwerkkonfiguration anzupassen.
 
Ich empfehle dir es mal mit Terraform und dem Telmate Provider für Proxmox zu versuchen. Damit funktioniert die Bereitstellung von VMs und Containern tadellos. Anleitungen dafür findest du genug im Netz.
Wenn der Container dann läuft kannst du ihn mit Ansible konfigurieren.
 
Es scheint, als ob du Probleme bei der Verbindung zwischen deinem Mac und dem Proxmox-Server hast. Eine mögliche Lösung könnte sein, sicherzustellen, dass die Firewall auf beiden Seiten korrekt konfiguriert ist und dass du die richtige IP-Adresse und den richtigen Port für den Proxmox-Server verwendest. Du könntest auch versuchen, den Proxmox-Server direkt von deinem Mac aus mit einem Webbrowser zu erreichen, um sicherzustellen, dass die Verbindung zwischen den beiden Geräten funktioniert. Wenn das nicht hilft, könntest du auch versuchen, die Netzwerkverbindung zwischen deinem Mac und dem Proxmox-Server zu überprüfen und eventuell die Netzwerkkonfiguration anzupassen.
Ein Verbindungsprobleme von Ansible Host zum proxmox habe ich ja eben nicht, wie geschrieben
Playbooks zum Update, Paketinstallation, Erstellen von Usern, Tokens etc auf dem Proxmox Server laufen einwandfrei. Da läuft aber alles über ssh. Ich vermute den Fehler eher bei der API-Kommunikation
 
Ich empfehle dir es mal mit Terraform und dem Telmate Provider für Proxmox zu versuchen. Damit funktioniert die Bereitstellung von VMs und Containern tadellos. Anleitungen dafür findest du genug im Netz.
Wenn der Container dann läuft kannst du ihn mit Ansible konfigurieren

Das ist ja das was ich zuerst probiert habe, Erstellung eines Templates mittels packer, gibt ja genügend Beispiele dafür. Ich habe dieses hier genommen. Aber auch da gibt es Kommunikationsprobleme. Fehlermeldung hier:
Code:
2022/12/23 09:53:14 packer-builder-proxmox plugin: Leaving retrieve loop for ISO
==> ubuntu-server-focal-docker.proxmox.ubuntu-server-focal-docker: Post "https://c-host2:8006/api2/json/nodes/c-host2/storage/local/upload": write tcp 192.168.0.118:58437->192.168.50.2:8006: write: broken pipe
2022/12/23 09:53:14 [INFO] (telemetry) ending proxmox.ubuntu-server-focal-docker
==> Wait completed after 1 second 65 milliseconds
2022/12/23 09:53:14 machine readable: error-count []string{"1"}
==> Some builds didn't complete successfully and had errors:
2022/12/23 09:53:14 machine readable: ubuntu-server-focal-docker.proxmox.ubuntu-server-focal-docker,error []string{"Post \"https://c-host2:8006/api2/json/nodes/c-host2/storage/local/upload\": write tcp 192.168.0.118:58437->192.168.50.2:8006: write: broken pipe"}
==> Builds finished but no artifacts were created.
Build 'ubuntu-server-focal-docker.proxmox.ubuntu-server-focal-docker' errored after 1 second 65 milliseconds: Post "https://c-host2:8006/api2/json/nodes/c-host2/storage/local/upload": write tcp 192.168.0.118:58437->192.168.50.2:8006: write: broken pipe

==> Wait completed after 1 second 65 milliseconds

==> Some builds didn't complete successfully and had errors:
--> ubuntu-server-focal-docker.proxmox.ubuntu-server-focal-docker: Post "https://c-host2:8006/api2/json/nodes/c-host2/storage/local/upload": write tcp 192.168.0.118:58437->192.168.50.2:8006: write: broken pipe

Daraufhin wollte ich mit einer alternativen Methode versuchen mit der API zu kommunizieren und hatte mir deshalb das Ansible Beispiel ausgesucht.
Irgendetwas scheint bei meiner proxmox Installation mit der API nicht richtig zu sein. Wie gesagt per SSH oder Webbrowser gibt es kein Problem
aber Kommunikation mit der API scheint nicht zu funktionieren.
 
so, des Rätsels Lösung ist....

Ansible-Problem:
Nach Installation habe ich dem proxmox server eine neue IP verpasst, leider habe ich vergessen in der /etc/hosts die
neue IP einzutragen. Das erklärt auch warum ich den Server von extern auf der API und auf SSH erreichen konnte. Vom Server selber war die API dadurch aber nicht erreichbar. Scheinbar kommuniziert ansible auf dem server mit proxomer und proxomer spricht dann local mit der API.....

Packer Problem:
Per default ist bei Erstellung der API Token Privilege-Separation ausgewählt, dann sind die Token ootb erst einmal ohne Rollenzuweiseng und dann kann man sie auch nicht nutzen....
 
Last edited:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!