c5e0d429c5
Fixes #203 The namespace used to differentiate the resources between CI pipelines, CI stages or even between test targets was broken and resulted in conflicting resource names. This PR ensure the resources names don't collide with each other by making sure we use the entire hcloud_prefix value as md5sum, and by including the target role names inside the resource names. Create a setup/teardown framework to handle testing resources used by the tests. To simplify the review process, additional changes such as splitting the setup/teardown task in the prepare.yml and cleanup.yml files will be done in future PRs (many files were renamed, and git will not preserve the file history after the PR squash). * chore: move integrations targets files * test: create integration common files * test: fix resources name namespace using the magic hcloud_ns * test: simplify requirements install * test: rename hcloud_server test taskfiles |
||
---|---|---|
.azure-pipelines | ||
.github/workflows | ||
changelogs | ||
meta | ||
plugins | ||
scripts | ||
tests | ||
.gitignore | ||
.gitlab-ci.yml | ||
.pre-commit-config.yaml | ||
CHANGELOG.rst | ||
COPYING | ||
galaxy.yml | ||
Makefile | ||
pyproject.toml | ||
README.md | ||
renovate.json |
Ansible Collection: hetzner.hcloud
Ansible Hetzner Cloud Collection for controlling your Hetzner Cloud Resources.
Python version compatibility
This collection depends on the hcloud library. Due to the hcloud Python Support Policy this collection requires Python 3.8 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.hcloud_server
shows the documentation for the hcloud_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 hcloud_server // Executed all integration tests for hcloud_server module
Releasing a new version
- Make sure your local
main
branch is in a clean state and is up to date. - Define a new version:
export HCLOUD_VERSION=1.15.0
- Create a release branch:
git checkout -b "release-$HCLOUD_VERSION"
- Generate the changelog for the new version, it should remove all fragments and change
the
changelogs/changelog.yaml
andCHANGELOG.rst
:antsibull-changelog release --version "$HCLOUD_VERSION" git add changelogs/changelog.yaml changelogs/fragments CHANGELOG.rst
- Update the
version
in the ansible galaxy metadata file:sed -i "s/^version: .*/version: $HCLOUD_VERSION/" galaxy.yml git add galaxy.yml
- Commit the changes:
git commit -m "chore: prepare v$HCLOUD_VERSION"
- Push the changes to Github, open a Pull Request and follow the process to get the PR merged into
main
. - Once the PR is merged, tag the release through the Github UI, after this the Github Actions will run and publish the collection to Ansible Galaxy.