cloudscale_ch.cloud.server – Manages servers on the cloudscale.ch IaaS service

Note

This plugin is part of the cloudscale_ch.cloud collection (version 1.3.1).

To install it use: ansible-galaxy collection install cloudscale_ch.cloud.

To use it in a playbook, specify: cloudscale_ch.cloud.server.

New in version 1.0.0: of cloudscale_ch.cloud

Synopsis

  • Create, update, start, stop and delete servers on the cloudscale.ch IaaS service.

Parameters

Parameter Choices/Defaults Comments
api_timeout
integer
Default:
30
Timeout in seconds for calls to the cloudscale.ch API.
api_token
string / required
cloudscale.ch API token.
This can also be passed in the CLOUDSCALE_API_TOKEN environment variable.
api_url
string
added in 1.3.0 of cloudscale_ch.cloud
Default:
"https://api.cloudscale.ch/v1"
cloudscale.ch API URL.
This can also be passed in the CLOUDSCALE_API_URL environment variable.
bulk_volume_size_gb
integer
Size of the bulk storage volume in GB.
No bulk storage volume if not set.
flavor
string
Flavor of the server.
force
boolean
    Choices:
  • no ←
  • yes
Allow to stop the running server for updating if necessary.
image
string
Image used to create the server.
name
string
Name of the Server.
Either name or uuid are required.
password
string
Password for the server.
server_groups
list / elements=string
List of UUID or names of server groups.
ssh_keys
list / elements=string
List of SSH public keys.
Use the full content of your .pub file here.
state
string
    Choices:
  • running ←
  • stopped
  • absent
State of the server.
tags
dictionary
Tags assosiated with the servers. Set this to {} to clear any tags.
use_ipv6
boolean
    Choices:
  • no
  • yes ←
Enable IPv6 on the public network interface.
use_private_network
boolean
    Choices:
  • no ←
  • yes
Attach a private network interface to the server.
use_public_network
boolean
    Choices:
  • no
  • yes ←
Attach a public network interface to the server.
user_data
string
Cloud-init configuration (cloud-config) data to use for the server.
uuid
string
UUID of the server.
Either name or uuid are required.
volume_size_gb
integer
Default:
10
Size of the root volume in GB.
zone
string
Zone in which the server resides (e.g. lgp1 or rma1).

Notes

Note

  • If uuid option is provided, it takes precedence over name for server selection. This allows to update the server’s name.

  • If no uuid option is provided, name is used for server selection. If more than one server with this name exists, execution is aborted.

  • Only the name and flavor are evaluated for the update.

  • The option force=true must be given to allow the reboot of existing running servers for applying the changes.

  • 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.

Examples

# Create and start a server with an existing server group (shiny-group)
- name: Start cloudscale.ch server
  cloudscale_ch.cloud.server:
    name: my-shiny-cloudscale-server
    image: debian-8
    flavor: flex-4
    ssh_keys: ssh-rsa XXXXXXXXXX...XXXX ansible@cloudscale
    server_groups: shiny-group
    zone: lpg1
    use_private_network: True
    bulk_volume_size_gb: 100
    api_token: xxxxxx

# Start another server in anti-affinity (server group shiny-group)
- name: Start second cloudscale.ch server
  cloudscale_ch.cloud.server:
    name: my-other-shiny-server
    image: ubuntu-16.04
    flavor: flex-8
    ssh_keys: ssh-rsa XXXXXXXXXXX ansible@cloudscale
    server_groups: shiny-group
    zone: lpg1
    api_token: xxxxxx

# Force to update the flavor of a running server
- name: Start cloudscale.ch server
  cloudscale_ch.cloud.server:
    name: my-shiny-cloudscale-server
    image: debian-8
    flavor: flex-8
    force: yes
    ssh_keys: ssh-rsa XXXXXXXXXX...XXXX ansible@cloudscale
    use_private_network: True
    bulk_volume_size_gb: 100
    api_token: xxxxxx
  register: server1

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

# Delete my second server
- name: Delete my second server
  cloudscale_ch.cloud.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_ch.cloud.server:
    name: my-cloudscale-server-with-ssh-key
    image: debian-8
    flavor: flex-4
    ssh_keys: ssh-rsa XXXXXXXXXXX ansible@cloudscale
    api_token: xxxxxx
  register: server
  until: server is not failed
  retries: 5
  delay: 2

Return Values

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

Key Returned Description
flavor
dictionary
success when not state == absent
The flavor that has been used for this server

Sample:
{'memory_gb': 4, 'name': 'Flex-4', 'slug': 'flex-4', 'vcpu_count': 2}
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
dictionary
success when not state == absent
The image used for booting this server

Sample:
{'default_username': 'ubuntu', 'name': 'Ubuntu 18.04 LTS', 'operating_system': 'Ubuntu', 'slug': 'ubuntu-18.04'}
interfaces
list / elements=string
success when not state == absent
List of network ports attached to the server

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

Sample:
its-a-me-mario.cloudscale.ch
server_groups
list / elements=string
success when not state == absent
List of server groups

Sample:
[{'href': 'https://api.cloudscale.ch/v1/server-groups/...', 'name': 'db-group', 'uuid': '...'}]
ssh_fingerprints
list / elements=string
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 / elements=string
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
tags
dictionary
success
Tags assosiated with the server.

Sample:
{'project': 'my project'}
uuid
string
success
The unique identifier for this server

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

Sample:
[{'device': '/dev/vda', 'size_gb': '50', 'type': 'ssd'}]
zone
dictionary
success when not state == absent
The zone used for booting this server

Sample:
{'slug': 'lpg1'}


Authors

  • Gaudenz Steinlin (@gaudenz)

  • René Moser (@resmo)

  • Denis Krienbühl (@href)