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

From Get docs
Ansible/docs/2.11/collections/community/general/linode module


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

Note

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

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

  • no
  • yes

Set status of bandwidth in alerts.

alert_bwin_threshold

integer

Set threshold in MB of bandwidth in alerts.

alert_bwout_enabled

boolean

  • no
  • yes

Set status of bandwidth out alerts.

alert_bwout_threshold

integer

Set threshold in MB of bandwidth out alerts.

alert_bwquota_enabled

boolean

  • 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

  • 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

  • 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

  • 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

  • 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

  • absent
  • active
  • deleted
  • present

  • restarted
  • started
  • stopped

Indicate desired state of the resource

swap

integer

Default:

512

swap size in MB

wait

boolean

  • 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

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

© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/linode_module.html