Documentation

cloudscale_server - Manages servers on the cloudscale.ch IaaS service

New in version 2.3.

Synopsis

  • Create, start, stop and delete servers on the cloudscale.ch IaaS service.
  • All operations are performed using the cloudscale.ch public API v1.
  • For details consult the full API documentation: https://www.cloudscale.ch/en/api/v1.
  • A valid API token is required for all operations. You can create as many tokens as you like using the cloudscale.ch control panel at https://control.cloudscale.ch.

Parameters

Parameter Choices/Defaults Comments
anti_affinity_with
UUID of another server to create an anti-affinity group with.
api_timeout
(added in 2.5)
Default:
30
Timeout in seconds for calls to the cloudscale.ch API.
api_token
cloudscale.ch API token.
This can also be passed in the CLOUDSCALE_API_TOKEN environment variable.
bulk_volume_size_gb
Size of the bulk storage volume in GB.
No bulk storage volume if not set.
flavor
Flavor of the server.
image
Image used to create the server.
name
Name of the Server.
Either name or uuid are required. These options are mutually exclusive.
ssh_keys
List of SSH public keys.
Use the full content of your .pub file here.
state
    Choices:
  • running ←
  • stopped
  • absent
State of the server
use_ipv6 Default:
yes
Enable IPv6 on the public network interface.
use_private_network Default:
no
Attach a private network interface to the server.
use_public_network Default:
yes
Attach a public network interface to the server.
user_data
Cloud-init configuration (cloud-config) data to use for the server.
uuid
UUID of the server.
Either name or uuid are required. These options are mutually exclusive.
volume_size_gb Default:
10
Size of the root volume in GB.

Notes

Note

  • Instead of the api_token parameter the CLOUDSCALE_API_TOKEN environment variable can be used.
  • To create a new server at least the name, ssh_key, image and flavor options are required.
  • If more than one server with the name given by the name option exists, execution is aborted.
  • Once a server is created all parameters except state are read-only. You can’t change the name, flavor or any other property. This is a limitation of the cloudscale.ch API. The module will silently ignore differences between the configured parameters and the running server if a server with the correct name or UUID exists. Only state changes will be applied.

Examples

# Start a server (if it does not exist) and register the server details

- name: Start cloudscale.ch server
  cloudscale_server:
    name: my-shiny-cloudscale-server
    image: debian-8
    flavor: flex-4
    ssh_keys: ssh-rsa XXXXXXXXXX...XXXX [email protected]
    use_private_network: True
    bulk_volume_size_gb: 100
    api_token: xxxxxx
  register: server1

# Start another server in anti-affinity to the first one
- name: Start second cloudscale.ch server
  cloudscale_server:
    name: my-other-shiny-server
    image: ubuntu-16.04
    flavor: flex-8
    ssh_keys: ssh-rsa XXXXXXXXXXX [email protected]
    anti_affinity_with: '{{ server1.uuid }}'
    api_token: xxxxxx

# Stop the first server
- name: Stop my first server
  cloudscale_server:
    uuid: '{{ server1.uuid }}'
    state: stopped
    api_token: xxxxxx

# Delete my second server
- name: Delete my second server
  cloudscale_server:
    name: my-other-shiny-server
    state: absent
    api_token: xxxxxx

# Start a server and wait for the SSH host keys to be generated
- name: Start server and wait for SSH host keys
  cloudscale_server:
    name: my-cloudscale-server-with-ssh-key
    image: debian-8
    flavor: flex-4
    ssh_keys: ssh-rsa XXXXXXXXXXX [email protected]
    api_token: xxxxxx
  register: server
  until: server.ssh_fingerprints
  retries: 60
  delay: 2

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key Returned Description
anti_affinity_with
string
success when not state == absent
List of servers in the same anti-affinity group

flavor
string
success when not state == absent
The flavor that has been used for this server

Sample:
flex-8
href
string
success when not state == absent
API URL to get details about this server

Sample:
https://api.cloudscale.ch/v1/servers/cfde831a-4e87-4a75-960f-89b0148aa2cc
image
string
success when not state == absent
The image used for booting this server

Sample:
debian-8
interfaces
list
success when not state == absent
List of network ports attached to the server

Sample:
[{'type': 'public', 'addresses': ['...']}]
name
string
success
The display name of the server

Sample:
its-a-me-mario.cloudscale.ch
ssh_fingerprints
list
success when not state == absent
A list of SSH host key fingerprints. Will be null until the host keys could be retrieved from the server.

Sample:
['ecdsa-sha2-nistp256 SHA256:XXXX', '...']
ssh_host_keys
list
success when not state == absent
A list of SSH host keys. Will be null until the host keys could be retrieved from the server.

Sample:
['ecdsa-sha2-nistp256 XXXXX', '...']
state
string
success
The current status of the server

Sample:
running
uuid
string
success
The unique identifier for this server

Sample:
cfde831a-4e87-4a75-960f-89b0148aa2cc
volumes
list
success when not state == absent
List of volumes attached to the server

Sample:
[{'device': '/dev/vda', 'size_gb': '50', 'type': 'ssd'}]


Status

This module is flagged as preview which means that it is not guaranteed to have a backwards compatible interface.

Maintenance

This module is flagged as community which means that it is maintained by the Ansible Community. See Module Maintenance & Support for more info.

For a list of other modules that are also maintained by the Ansible Community, see here.

Author

Hint

If you notice any issues in this documentation you can edit this document to improve it.