community.general.linode – Manage instances on the Linode Public Cloud

Note

This plugin is part of the community.general collection (version 1.3.6).

To install it use: ansible-galaxy collection install community.general.

To use it in a playbook, specify: community.general.linode.

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 / elements=string
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
integer
Set threshold in MB of bandwidth in alerts.
alert_bwout_enabled
boolean
    Choices:
  • no
  • yes
Set status of bandwidth out alerts.
alert_bwout_threshold
integer
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
integer
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
integer
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
integer
Set threshold for average IO ops/sec over 2 hour period.
api_key
string
Linode API key
backupweeklyday
integer
Integer value for what day of the week to store weekly backups.
datacenter
integer
datacenter to create an instance in (Linode Datacenter)
displaygroup
string
Add the instance to a Display Group in Linode Manager.
distribution
integer
distribution to use for the instance (Linode Distribution)
kernel_id
integer
kernel to use for the instance (Linode Kernel)
linode_id
integer
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
string / required
Name to give the instance (alphanumeric, dashes, underscore).
To keep sanity on the Linode Web Console, name is prepended with LinodeID-.
password
string
root password to apply to a new server (auto generated if missing)
payment_term
integer
    Choices:
  • 1
  • 12
  • 24
Default:
1
payment term to use for the instance (payment term in months)
plan
integer
plan to use for the instance (Linode plan)
private_ip
boolean
    Choices:
  • no
  • yes
Add private IPv4 address when Linode is created.
Default is false.
ssh_pub_key
string
SSH public key applied to root user
state
string
    Choices:
  • absent
  • active
  • deleted
  • present ←
  • restarted
  • started
  • stopped
Indicate desired state of the resource
swap
integer
Default:
512
swap size in MB
wait
boolean
    Choices:
  • no
  • yes ←
wait for the instance to be in state running before returning
wait_timeout
integer
Default:
300
how long before wait gives up, in seconds
watchdog
boolean
    Choices:
  • no
  • yes
Default:
"True"
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
  community.general.linode:
    name: linode-test1
    plan: 1
    datacenter: 7
    distribution: 129
    state: present
  register: linode_creation

- name: Create a server with a private IP Address
  community.general.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
  community.general.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)
  community.general.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
  community.general.linode:
     api_key: 'longStringFromLinodeApi'
     name: linode-test1
     linode_id: "{{ linode_creation.instance.id }}"
     state: absent
  delegate_to: localhost

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

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

Authors

  • Vincent Viallet (@zbal)