Skip to content

Ansible: Dynamic inventory from Hetzner

├── ansible.cfg
├── get-avp.sh
├── inventory
│   ├── group_data
│   │   └── dcp
│   │       └── traefik
│   │           ├── certs
│   │           │   ├── default-wildcard.cert.pem
│   │           │   └── default-wildcard.key.pem
│   │           ├── docker-compose.yml
│   │           ├── dynamic
│   │           │   ├── middlewares.yml
│   │           │   └── tls.yml
│   │           └── traefik.yml
│   ├── group_vars
│   │   └── all.yml
│   ├── hcloud.yml
│   └── vault
│       └── data.yaml
├── playbook
│   ├── playbook.yml
│   └── vars.yml
├── README.md
├── requirements.yml
└── taskfile.yml

requirements.yml

collections:
  - hetzner.hcloud
  - community.general
  - ansible.posix
ansible-galaxy collection install -r requirements.yml

inventory/hcloud.yml

plugin: hcloud
token: "{{ lookup('ansible.builtin.env', 'HETZNER_TOKEN') }}"
attributes:
  - name
  - ipv4_address
  - labels

groups:
  web: "'web' in labels"
  db: "name.startswith('db')"

compose:
  ansible_ssh_private_key_file: "'~/.ssh/id-temp'"
  ansible_host: public_net.ipv4.ip
  ansible_user: "'root'"