1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
![Collection Integration tests](https://github.com/cloudscale-ch/ansible-collection-cloudscale/workflows/Collection%20Integration%20tests/badge.svg)
[![Codecov](https://img.shields.io/codecov/c/github/cloudscale-ch/ansible-collection-cloudscale)](https://codecov.io/gh/cloudscale-ch/ansible-collection-cloudscale)
[![License](https://img.shields.io/badge/license-GPL%20v3.0-brightgreen.svg)](LICENSE)
# Ansible Collection for cloudscale.ch Cloud
This collection provides a series of Ansible modules and plugins for interacting with the [cloudscale.ch](https://www.cloudscale.ch) Cloud.
## Requirements
- ansible version >= 2.9
## Installation
To install the collection hosted in Galaxy:
```bash
ansible-galaxy collection install cloudscale_ch.cloud
```
To upgrade to the latest version of the collection:
```bash
ansible-galaxy collection install cloudscale_ch.cloud --force
```
## Usage
### Playbooks
To use a module from the cloudscale.ch collection, please reference the full namespace, collection name, and modules name that you want to use:
```yaml
---
- name: Using cloudscale.ch collection
hosts: localhost
tasks:
- cloudscale_ch.cloud.server:
name: web1
image: debian-10
flavor: flex-2
ssh_keys:
- ssh-rsa XXXXXXXXXX...XXXX ansible@cloudscale
server_groups: web-group
zone: lpg1
api_token: ...
```
Or you can add the full namespace and collection name in the `collections` element:
```yaml
---
- name: Using cloudscale.ch collection
hosts: localhost
collections:
- cloudscale_ch.cloud
tasks:
- server:
name: web1
image: debian-10
flavor: flex-2
ssh_keys:
- ssh-rsa XXXXXXXXXX...XXXX ansible@cloudscale
server_groups: web-group
zone: lpg1
api_token: ...
```
### Roles
For existing Ansible roles, please also reference the full namespace, collection name, and modules name that are used in tasks instead of just modules name.
### Plugins
To use a plugin, please reference the full namespace, collection name, and plugins name that you want to use:
```yaml
plugin: cloudscale_ch.cloud.<myplugin>
```
## Contributing
There are many ways in which you can participate in the project, for example:
- Submit bugs and feature requests, and help us verify them as they are checked in
- Review source code changes
- Review the documentation and make pull requests for anything from typos to new content
- If you are interested in fixing issues and contributing directly to the code base, please see the [CONTRIBUTING](CONTRIBUTING.md) document.
## Releasing
### Prepare a new release
The changelog is managed using the `antsibull` tool. You can install
it using `pip install antsibull`
1. Update version in galaxy.yml
2. Update changelog using antsibull
```
antsibull-changelog release
```
3. Commit changelog and new version
```
git commit -m "Release version X.Y.Z" galaxy.yml CHANGELOG.rst changelogs/
```
4. Tag the release. Preferably create a GPG signed tag if you have a GPG
key. Version tags should be prefixed with "v" (otherwise the
integration tests won't run automatically).
```
git tag -s -m "Version X.Y.Z" vX.Y.Z
```
5. Push the release and tag
```
git push origin master vX.Y.Z
```
### Release to Ansible Galaxy
After the release is tagged and pushed to Github a release to Ansible
Galaxy can be created using the release feature in Github:
1. **Wait for integration tests to succeed. They should automatically
run on new tags.** Only release if they succeed. Otherwise delete the
tag and fix the issue.
2. Create a release on Github by going to the release overview and
selecting "Draft a new release".
## License
GNU General Public License v3.0
See [COPYING](COPYING) to see the full text.
|