- AnsibleFest
- Products
- Community
- Webinars & Training
- Blog

Documentation

# linode – Manage instances on the Linode Public Cloud

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Status

## 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

- This module is not guaranteed to have a backwards compatible interface. [preview]
- This module is maintained by the Ansible Community. [community]

### Authors

- Vincent Viallet (@zbal)

Hint

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