1
0
Fork 0
mirror of https://github.com/ansible-collections/hetzner.hcloud.git synced 2026-02-03 23:51:48 +00:00
No description
Find a file
Julian Tölle 241f61338b
fix: unassign primary ip and floating ip before deletion (#796)
##### SUMMARY

Explicitly unassign Primary IP and Floating IPs before deleting them.
This allows us to better handle any errors that happen during the
unassign and is consistent with the flow in our Terraform provider.

##### ISSUE TYPE

- Bugfix Pull Request

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below
-->

- `floating_ip`
- `primary_ip`

---------

Co-authored-by: jo <ljonas@riseup.net>
2026-01-29 11:10:01 +01:00
.azure-pipelines test: support ansible-core 2.20 (#714) 2025-10-27 10:48:04 +01:00
.github chore(main): release 6.6.0 (#795) 2026-01-26 16:18:51 +01:00
changelogs fix: unassign primary ip and floating ip before deletion (#796) 2026-01-29 11:10:01 +01:00
docs/docsite docs: update deprecated server types (#718) 2025-10-28 13:45:41 +01:00
examples docs: add example with cloud-init user-data and custom host ssh keys (#770) 2025-12-12 12:56:02 +01:00
meta fix: redirect for storage box module must use a fully qualified name (#767) 2025-12-12 10:33:40 +01:00
plugins fix: unassign primary ip and floating ip before deletion (#796) 2026-01-29 11:10:01 +01:00
scripts chore(deps): update dependency hcloud to v2.16.0 (#792) 2026-01-23 13:37:41 +01:00
tests feat(server): allow setting user_data for rebuild (#794) 2026-01-26 16:15:42 +01:00
.ansible-lint test: enable unsupported-version lint rule (#595) 2025-01-29 10:30:16 +00:00
.flake8 refactor: use f-strings (#310) 2023-08-24 11:27:40 +02:00
.gitignore chore: ignore .ansible dir (#618) 2025-03-25 16:44:32 +01:00
.gitlab-ci.yml ci: update gitlab ci config (#529) 2024-07-09 12:30:49 +02:00
.pre-commit-config.yaml chore(deps): update module mvdan.cc/sh/v3/cmd/shfmt to v3.12.0 (#791) 2026-01-23 13:14:25 +01:00
CHANGELOG.rst chore(main): release 6.6.0 (#795) 2026-01-26 16:18:51 +01:00
COPYING refactor: prefer true/false over yes/no (#226) 2023-06-21 10:49:54 +02:00
galaxy.yml chore(main): release 6.6.0 (#795) 2026-01-26 16:18:51 +01:00
Makefile refactor: mark module_utils modules as private (#782) 2026-01-06 08:43:46 +01:00
pyproject.toml refactor: mark module_utils modules as private (#782) 2026-01-06 08:43:46 +01:00
README.md docs: fix indefinite article typo (#778) 2025-12-23 12:21:36 +01:00
renovate.json chore(config): migrate renovate config (#640) 2025-05-23 11:32:59 +02:00
requirements-dev.txt chore(deps): update dependency antsibull-docs to >=2.24,<2.25 (#780) 2025-12-29 12:11:23 +01:00
requirements.txt chore: split dev requirement from runtime requirements (#650) 2025-06-11 10:06:50 +02:00

Galaxy version GitHub version Build Status Codecov

Ansible Collection: hetzner.hcloud

Ansible Hetzner Cloud Collection for controlling your Hetzner Cloud Resources.

Communication

For more information about communication, see the Ansible communication guide.

Python version compatibility

This collection depends on the hcloud library. Due to the hcloud Python Support Policy this collection requires Python 3.10 or greater.

Release notes

See here.

Release policy

The main branch is used for the development of the latest versions of the collections, and may contain breaking changes. The stable-* branches (e.g. stable-1 for the 1.x.y releases) are used to cut additional minor or patch releases if needed, but we do not provide official support for multiple versions of the collection.

Documentation

The documentation for all modules are available through ansible-doc.

Sample: ansible-doc hetzner.hcloud.server shows the documentation for the server module.

For all modules that were part of Ansible directly (before Ansible 2.11) we also have the documentation published in the Ansible documentation: https://docs.ansible.com/ansible/latest/collections/hetzner/hcloud/

Development

Requirements

You should place the collection (clone the repository) into the Ansible collection path. Normally this is ~/.ansible/collections/ansible_collections/<namespace>/<collection>, so for our collection it would be: ~/.ansible/collections/ansible_collections/hetzner/hcloud.

git clone git@github.com:ansible-collections/hetzner.hcloud.git ~/.ansible/collections/ansible_collections/hetzner/hcloud

After this you just need ansible installed.

Testing

Testing is done via ansible-test. Make sure to have a cloud-config-hcloud.ini file in tests/integration which contains the hcloud API token:

[default]
hcloud_api_token=<token>

After this you should be able to use ansible-test integration to perform the integration tests for a specific module. Sample:

ansible-test integration --color --local -vvv hetzner.hcloud.server // Executed all integration tests for server module

Releasing a new version

If there are releasable changes, release-please will open a PR on GitHub with the proposed version. When this PR is merged, release-please will tag the release.

Releasing experimental features

To publish experimental features as part of regular releases:

  • an announcement, including a link to a changelog entry, must be added to the release notes.

  • an Experimental notice, including a link to a changelog entry, must be added to the experimental plugins documentation:

    DOCUMENTATION = """
    ---
    module: product
    
    description:
        - Create, update and manage Product on the Hetzner Cloud.
        - B(Experimental:) $PRODUCT is $MATURITY, breaking changes may occur within minor releases. See https://docs.hetzner.cloud/changelog#$SLUG for more details.
    """
    
  • an Experimental warning, including a link to a changelog entry, must be logged when experimental plugins are being used:

    product_experimental_warning = experimental_warning_function(
        "$PRODUCT",
        "$MATURITY",
        "https://docs.hetzner.cloud/changelog#$SLUG",
    )
    
    class AnsibleProduct(AnsibleHCloud):
        def __init__(self, module: AnsibleModule):
            product_experimental_warning(module)
            super().__init__(module)