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'"