linode – Manage instances on the Linode Public Cloud

Synopsis

  • Manage Linode Public Cloud instances and optionally wait for it to be ‘running’.

Requirements

The below requirements are needed on the host that executes this module.

  • python >= 2.6
  • linode-python

Parameters

Parameter Choices/Defaults Comments
additional_disks
-
List of dictionaries for creating additional disks that are added to the Linode configuration settings.
Dictionary takes Size, Label, Type. Size is in MB.
alert_bwin_enabled
boolean
    Choices:
  • no
  • yes
Set status of bandwidth in alerts.
alert_bwin_threshold
-
Set threshold in MB of bandwidth in alerts.
alert_bwout_enabled
boolean
    Choices:
  • no
  • yes
Set status of bandwidth out alerts.
alert_bwout_threshold
-
Set threshold in MB of bandwidth out alerts.
alert_bwquota_enabled
boolean
    Choices:
  • no
  • yes
Set status of bandwidth quota alerts as percentage of network transfer quota.
alert_bwquota_threshold
-
Set threshold in MB of bandwidth quota alerts.
alert_cpu_enabled
boolean
    Choices:
  • no
  • yes
Set status of receiving CPU usage alerts.
alert_cpu_threshold
-
Set percentage threshold for receiving CPU usage alerts. Each CPU core adds 100% to total.
alert_diskio_enabled
boolean
    Choices:
  • no
  • yes
Set status of receiving disk IO alerts.
alert_diskio_threshold
-
Set threshold for average IO ops/sec over 2 hour period.
api_key
-
Linode API key
backupweeklyday
-
Integer value for what day of the week to store weekly backups.
datacenter
-
datacenter to create an instance in (Linode Datacenter)
displaygroup
-
Add the instance to a Display Group in Linode Manager.
distribution
-
distribution to use for the instance (Linode Distribution)
kernel_id
-
added in 2.4
kernel to use for the instance (Linode Kernel)
linode_id
-
Unique ID of a linode server. This value is read-only in the sense that if you specify it on creation of a Linode it will not be used. The Linode API generates these IDs and we can those generated value here to reference a Linode more specifically. This is useful for idempotence.

aliases: lid
name
- / required
Name to give the instance (alphanumeric, dashes, underscore).
To keep sanity on the Linode Web Console, name is prepended with LinodeID-.
password
-
root password to apply to a new server (auto generated if missing)
payment_term
-
    Choices:
  • 1 ←
  • 12
  • 24
payment term to use for the instance (payment term in months)
plan
-
plan to use for the instance (Linode plan)
private_ip
boolean
    Choices:
  • no ←
  • yes
Add private IPv4 address when Linode is created.
ssh_pub_key
-
SSH public key applied to root user
state
-
    Choices:
  • absent
  • active
  • deleted
  • present ←
  • restarted
  • started
  • stopped
Indicate desired state of the resource
swap
-
Default:
512
swap size in MB
wait
boolean
    Choices:
  • no ←
  • yes
wait for the instance to be in state running before returning
wait_timeout
-
Default:
300
how long before wait gives up, in seconds
watchdog
boolean
    Choices:
  • no
  • yes ←
Set status of Lassie watchdog.

Notes

Note

  • Please note, linode-python does not have python 3 support.
  • This module uses the now deprecated v3 of the Linode API.
  • LINODE_API_KEY env variable can be used instead.
  • Please review https://www.linode.com/api/linode for determining the required parameters.

Examples

- name: Create a new Linode
  linode:
    name: linode-test1
    plan: 1
    datacenter: 7
    distribution: 129
    state: present
  register: linode_creation

- name: Create a server with a private IP Address
  linode:
     module: linode
     api_key: 'longStringFromLinodeApi'
     name: linode-test1
     plan: 1
     datacenter: 2
     distribution: 99
     password: 'superSecureRootPassword'
     private_ip: yes
     ssh_pub_key: 'ssh-rsa qwerty'
     swap: 768
     wait: yes
     wait_timeout: 600
     state: present
  delegate_to: localhost
  register: linode_creation

- name: Fully configure new server
  linode:
     api_key: 'longStringFromLinodeApi'
     name: linode-test1
     plan: 4
     datacenter: 2
     distribution: 99
     kernel_id: 138
     password: 'superSecureRootPassword'
     private_ip: yes
     ssh_pub_key: 'ssh-rsa qwerty'
     swap: 768
     wait: yes
     wait_timeout: 600
     state: present
     alert_bwquota_enabled: True
     alert_bwquota_threshold: 80
     alert_bwin_enabled: True
     alert_bwin_threshold: 10
     alert_cpu_enabled: True
     alert_cpu_threshold: 210
     alert_bwout_enabled: True
     alert_bwout_threshold: 10
     alert_diskio_enabled: True
     alert_diskio_threshold: 10000
     backupweeklyday: 1
     backupwindow: 2
     displaygroup: 'test'
     additional_disks:
      - {Label: 'disk1', Size: 2500, Type: 'raw'}
      - {Label: 'newdisk', Size: 2000}
     watchdog: True
  delegate_to: localhost
  register: linode_creation

- name: Ensure a running server (create if missing)
  linode:
     api_key: 'longStringFromLinodeApi'
     name: linode-test1
     plan: 1
     datacenter: 2
     distribution: 99
     password: 'superSecureRootPassword'
     ssh_pub_key: 'ssh-rsa qwerty'
     swap: 768
     wait: yes
     wait_timeout: 600
     state: present
  delegate_to: localhost
  register: linode_creation

- name: Delete a server
  linode:
     api_key: 'longStringFromLinodeApi'
     name: linode-test1
     linode_id: "{{ linode_creation.instance.id }}"
     state: absent
  delegate_to: localhost

- name: Stop a server
  linode:
     api_key: 'longStringFromLinodeApi'
     name: linode-test1
     linode_id: "{{ linode_creation.instance.id }}"
     state: stopped
  delegate_to: localhost

- name: Reboot a server
  linode:
     api_key: 'longStringFromLinodeApi'
     name: linode-test1
     linode_id: "{{ linode_creation.instance.id }}"
     state: restarted
  delegate_to: localhost

Status

Authors

  • Vincent Viallet (@zbal)

Hint

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