UNPKG

@pulumi/linode

Version:

A Pulumi package for creating and managing linode cloud resources.

695 lines (694 loc) 36.7 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "./types/input"; import * as outputs from "./types/output"; /** * Provides a Linode Instance resource. This can be used to create, modify, and delete Linodes. * For more information, see [Getting Started with Linode](https://linode.com/docs/getting-started/) and the [Linode APIv4 docs](https://techdocs.akamai.com/linode-api/reference/post-linode-instance). * * ## Example Usage * * ### Simple Linode Instance * * The following example shows how one might use this resource to configure a Linode instance. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as linode from "@pulumi/linode"; * * const web = new linode.Instance("web", { * label: "simple_instance", * image: "linode/ubuntu22.04", * region: "us-central", * type: "g6-standard-1", * authorizedKeys: ["ssh-rsa AAAA...Gw== user@example.local"], * rootPass: "this-is-not-a-safe-password", * tags: ["foo"], * swapSize: 256, * privateIp: true, * }); * ``` * * ### Linode Instance with Explicit Networking Interfaces * * You can add a VPC or VLAN interface directly to a Linode instance resource. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as linode from "@pulumi/linode"; * * const web = new linode.Instance("web", { * label: "simple_instance", * image: "linode/ubuntu22.04", * region: "us-central", * type: "g6-standard-1", * authorizedKeys: ["ssh-rsa AAAA...Gw== user@example.local"], * rootPass: "this-is-not-a-safe-password", * interfaces: [ * { * purpose: "public", * }, * { * purpose: "vpc", * subnetId: 123, * ipv4: { * vpc: "10.0.4.250", * }, * }, * ], * tags: ["foo"], * swapSize: 256, * privateIp: true, * }); * ``` * * ### Linode Instance Assigned to a Placement Group * * The following example shows how one might use this resource to configure a Linode instance assigned to a * Placement Group. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as linode from "@pulumi/linode"; * * const my_instance = new linode.Instance("my-instance", { * label: "my-instance", * region: "us-mia", * type: "g6-standard-1", * placementGroup: { * id: 12345, * }, * }); * ``` * * ## Import * * Linodes Instances can be imported using the Linode `id`, e.g. * * ```sh * $ pulumi import linode:index/instance:Instance mylinode 1234567 * ``` * * When importing an instance, all `disk` and `config` values must be represented. * * Imported disks must include their `label` value. **Any disk that is not precisely represented may be removed resulting in data loss.** * * Imported configs should include all `devices`, and must include `label`, `kernel`, and the `root_device`. The instance must include a `boot_config_label` referring to the correct configuration profile. */ export declare class Instance extends pulumi.CustomResource { /** * Get an existing Instance resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: InstanceState, opts?: pulumi.CustomResourceOptions): Instance; /** * Returns true if the given object is an instance of Instance. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is Instance; /** * Configuration options for alert triggers on this Linode. */ readonly alerts: pulumi.Output<outputs.InstanceAlerts>; /** * A list of SSH public keys to deploy for the root user on the newly created Linode. Only accepted if 'image' is provided. */ readonly authorizedKeys: pulumi.Output<string[] | undefined>; /** * A list of Linode usernames. If the usernames have associated SSH keys, the keys will be appended to the `root` user's * `~/.ssh/authorized_keys` file automatically. Only accepted if 'image' is provided. */ readonly authorizedUsers: pulumi.Output<string[] | undefined>; /** * A Backup ID from another Linode's available backups. Your User must have readWrite access to that Linode, the Backup * must have a status of successful, and the Linode must be deployed to the same region as the Backup. See * /linode/instances/{linodeId}/backups for a Linode's available backups. This field and the image field are mutually * exclusive. */ readonly backupId: pulumi.Output<number | undefined>; /** * Information about this Linode's backups status. */ readonly backups: pulumi.Output<outputs.InstanceBackups>; /** * If this field is set to true, the created Linode will automatically be enrolled in the Linode Backup service. This will incur an additional charge. The cost for the Backup service is dependent on the Type of Linode deployed. */ readonly backupsEnabled: pulumi.Output<boolean>; /** * The Label of the Instance Config that should be used to boot the Linode instance. */ readonly bootConfigLabel: pulumi.Output<string>; /** * If true, then the instance is kept or converted into in a running state. If false, the instance will be shutdown. If unspecified, the Linode's power status will not be managed by the Provider. */ readonly booted: pulumi.Output<boolean>; /** * A list of capabilities of this Linode instance. */ readonly capabilities: pulumi.Output<string[]>; /** * Configuration profiles define the VM settings and boot behavior of the Linode Instance. * * @deprecated The embedded config is deprecated and scheduled to be removed in the next major version.Please consider migrating it to linode.InstanceConfig resource. */ readonly configs: pulumi.Output<outputs.InstanceConfig[]>; /** * The disk encryption policy for this instance. (`enabled`, `disabled`; default `enabled` in supported regions) * * * **NOTE: Disk encryption may not currently be available to all users.** */ readonly diskEncryption: pulumi.Output<string>; /** * @deprecated The embedded disk block in linode.Instance resource is deprecated and scheduled to be removed in the next major version. Please consider migrating it to be the linode.InstanceDisk resource. */ readonly disks: pulumi.Output<outputs.InstanceDisk[]>; /** * The ID of the Firewall to attach to the instance upon creation. *Changing `firewallId` forces the creation of a new Linode Instance.* */ readonly firewallId: pulumi.Output<number | undefined>; /** * A deprecated property denoting a group label for this Linode. We recommend using the `tags` attribute instead. * * @deprecated Group label is deprecated. We recommend using tags instead. */ readonly group: pulumi.Output<string | undefined>; /** * Whether this Instance was created with user-data. */ readonly hasUserData: pulumi.Output<boolean>; /** * The Linode’s host machine, as a UUID. */ readonly hostUuid: pulumi.Output<string>; /** * An Image ID to deploy the Disk from. Official Linode Images start with linode/, while your Images start with private/. * See /images for more information on the Images available for you to use. */ readonly image: pulumi.Output<string | undefined>; /** * An array of Network Interfaces for this Linode to be created with. If an explicit config or disk is defined, interfaces * must be declared in the config block. */ readonly interfaces: pulumi.Output<outputs.InstanceInterface[] | undefined>; /** * A string containing the Linode's public IP address. */ readonly ipAddress: pulumi.Output<string>; /** * A set of reserved IPv4 addresses to assign to this Linode on creation. * * * **NOTE: IP reservation is not currently available to all users.** */ readonly ipv4s: pulumi.Output<string[]>; /** * This Linode's IPv6 SLAAC addresses. This address is specific to a Linode, and may not be shared. The prefix (`/64`) is included in this attribute. */ readonly ipv6: pulumi.Output<string>; /** * The Linode's label is for display purposes only. If no label is provided for a Linode, a default will be assigned. */ readonly label: pulumi.Output<string>; /** * If applicable, the ID of the LKE cluster this instance is a part of. */ readonly lkeClusterId: pulumi.Output<number>; /** * Various fields related to the Linode Metadata service. */ readonly metadatas: pulumi.Output<outputs.InstanceMetadata[] | undefined>; /** * The type of migration to use when updating the type or region of a Linode. (`cold`, `warm`; default `cold`) * * * `interface` - (Optional) A list of network interfaces to be assigned to the Linode on creation. If an explicit config or disk is defined, interfaces must be declared in the `config` block. */ readonly migrationType: pulumi.Output<string | undefined>; /** * Information about the Placement Group this Linode is assigned to. */ readonly placementGroup: pulumi.Output<outputs.InstancePlacementGroup | undefined>; /** * If true, changes to the Linode's assigned Placement Group will be ignored. This is necessary when using this resource in conjunction with the linode.PlacementGroupAssignment resource. */ readonly placementGroupExternallyManaged: pulumi.Output<boolean | undefined>; /** * If true, the created Linode will have private networking enabled, allowing use of the 192.168.128.0/17 network within the Linode's region. It can be enabled on an existing Linode but it can't be disabled. */ readonly privateIp: pulumi.Output<boolean | undefined>; /** * This Linode's Private IPv4 Address, if enabled. The regional private IP address range, 192.168.128.0/17, is shared by all Linode Instances in a region. */ readonly privateIpAddress: pulumi.Output<string>; /** * This is the location where the Linode is deployed. Examples are `"us-east"`, `"us-west"`, `"ap-south"`, etc. See all regions [here](https://api.linode.com/v4/regions). *Changing `region` will trigger a migration of this Linode. Migration operations are typically long-running operations, so the update timeout should be adjusted accordingly.*. */ readonly region: pulumi.Output<string>; /** * If true, changes in Linode type will attempt to upsize or downsize implicitly created disks. This must be false if explicit disks are defined. *This is an irreversible action as Linode disks cannot be automatically downsized.* * * * `alerts.0.cpu` - (Optional) The percentage of CPU usage required to trigger an alert. If the average CPU usage over two hours exceeds this value, we'll send you an alert. If this is set to 0, the alert is disabled. * * * `alerts.0.network_in` - (Optional) The amount of incoming traffic, in Mbit/s, required to trigger an alert. If the average incoming traffic over two hours exceeds this value, we'll send you an alert. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.network_out` - (Optional) The amount of outbound traffic, in Mbit/s, required to trigger an alert. If the average outbound traffic over two hours exceeds this value, we'll send you an alert. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.transfer_quota` - (Optional) The percentage of network transfer that may be used before an alert is triggered. When this value is exceeded, we'll alert you. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.io` - (Optional) The amount of disk IO operation per second required to trigger an alert. If the average disk IO over two hours exceeds this value, we'll send you an alert. If set to 0, this alert is disabled. */ readonly resizeDisk: pulumi.Output<boolean | undefined>; /** * The password that will be initially assigned to the 'root' user account. */ readonly rootPass: pulumi.Output<string | undefined>; /** * A set of IPv4 addresses to be shared with the Instance. These IP addresses can be both private and public, but must be in the same region as the instance. * * * `metadata.0.user_data` - (Optional) The base64-encoded user-defined data exposed to this instance through the Linode Metadata service. Refer to the base64encode(...) function for information on encoding content for this field. * * * `placement_group.0.id` - (Optional) The ID of the Placement Group to assign this Linode to. */ readonly sharedIpv4s: pulumi.Output<string[]>; /** * Information about the resources available to this Linode. */ readonly specs: pulumi.Output<outputs.InstanceSpecs>; /** * An object containing responses to any User Defined Fields present in the StackScript being deployed to this Linode. Only * accepted if 'stackscript_id' is given. The required values depend on the StackScript being deployed. */ readonly stackscriptData: pulumi.Output<{ [key: string]: string; } | undefined>; /** * The StackScript to deploy to the newly created Linode. If provided, 'image' must also be provided, and must be an Image * that is compatible with this StackScript. */ readonly stackscriptId: pulumi.Output<number | undefined>; /** * The status of the instance, indicating the current readiness state. (`running`, `offline`, ...) */ readonly status: pulumi.Output<string>; /** * When deploying from an Image, this field is optional with a Linode API default of 512mb, otherwise it is ignored. This * is used to set the swap disk size for the newly-created Linode. */ readonly swapSize: pulumi.Output<number>; /** * A list of tags applied to this object. Tags are case-insensitive and are for organizational purposes only. */ readonly tags: pulumi.Output<string[]>; /** * The Linode type defines the pricing, CPU, disk, and RAM specs of the instance. Examples are `"g6-nanode-1"`, `"g6-standard-2"`, `"g6-highmem-16"`, `"g6-dedicated-16"`, etc. See all types [here](https://api.linode.com/v4/linode/types). * * - - - */ readonly type: pulumi.Output<string | undefined>; /** * The watchdog, named Lassie, is a Shutdown Watchdog that monitors your Linode and will reboot it if it powers off unexpectedly. It works by issuing a boot job when your Linode powers off without a shutdown job being responsible. To prevent a loop, Lassie will give up if there have been more than 5 boot jobs issued within 15 minutes. */ readonly watchdogEnabled: pulumi.Output<boolean | undefined>; /** * Create a Instance resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: InstanceArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Instance resources. */ export interface InstanceState { /** * Configuration options for alert triggers on this Linode. */ alerts?: pulumi.Input<inputs.InstanceAlerts>; /** * A list of SSH public keys to deploy for the root user on the newly created Linode. Only accepted if 'image' is provided. */ authorizedKeys?: pulumi.Input<pulumi.Input<string>[]>; /** * A list of Linode usernames. If the usernames have associated SSH keys, the keys will be appended to the `root` user's * `~/.ssh/authorized_keys` file automatically. Only accepted if 'image' is provided. */ authorizedUsers?: pulumi.Input<pulumi.Input<string>[]>; /** * A Backup ID from another Linode's available backups. Your User must have readWrite access to that Linode, the Backup * must have a status of successful, and the Linode must be deployed to the same region as the Backup. See * /linode/instances/{linodeId}/backups for a Linode's available backups. This field and the image field are mutually * exclusive. */ backupId?: pulumi.Input<number>; /** * Information about this Linode's backups status. */ backups?: pulumi.Input<inputs.InstanceBackups>; /** * If this field is set to true, the created Linode will automatically be enrolled in the Linode Backup service. This will incur an additional charge. The cost for the Backup service is dependent on the Type of Linode deployed. */ backupsEnabled?: pulumi.Input<boolean>; /** * The Label of the Instance Config that should be used to boot the Linode instance. */ bootConfigLabel?: pulumi.Input<string>; /** * If true, then the instance is kept or converted into in a running state. If false, the instance will be shutdown. If unspecified, the Linode's power status will not be managed by the Provider. */ booted?: pulumi.Input<boolean>; /** * A list of capabilities of this Linode instance. */ capabilities?: pulumi.Input<pulumi.Input<string>[]>; /** * Configuration profiles define the VM settings and boot behavior of the Linode Instance. * * @deprecated The embedded config is deprecated and scheduled to be removed in the next major version.Please consider migrating it to linode.InstanceConfig resource. */ configs?: pulumi.Input<pulumi.Input<inputs.InstanceConfig>[]>; /** * The disk encryption policy for this instance. (`enabled`, `disabled`; default `enabled` in supported regions) * * * **NOTE: Disk encryption may not currently be available to all users.** */ diskEncryption?: pulumi.Input<string>; /** * @deprecated The embedded disk block in linode.Instance resource is deprecated and scheduled to be removed in the next major version. Please consider migrating it to be the linode.InstanceDisk resource. */ disks?: pulumi.Input<pulumi.Input<inputs.InstanceDisk>[]>; /** * The ID of the Firewall to attach to the instance upon creation. *Changing `firewallId` forces the creation of a new Linode Instance.* */ firewallId?: pulumi.Input<number>; /** * A deprecated property denoting a group label for this Linode. We recommend using the `tags` attribute instead. * * @deprecated Group label is deprecated. We recommend using tags instead. */ group?: pulumi.Input<string>; /** * Whether this Instance was created with user-data. */ hasUserData?: pulumi.Input<boolean>; /** * The Linode’s host machine, as a UUID. */ hostUuid?: pulumi.Input<string>; /** * An Image ID to deploy the Disk from. Official Linode Images start with linode/, while your Images start with private/. * See /images for more information on the Images available for you to use. */ image?: pulumi.Input<string>; /** * An array of Network Interfaces for this Linode to be created with. If an explicit config or disk is defined, interfaces * must be declared in the config block. */ interfaces?: pulumi.Input<pulumi.Input<inputs.InstanceInterface>[]>; /** * A string containing the Linode's public IP address. */ ipAddress?: pulumi.Input<string>; /** * A set of reserved IPv4 addresses to assign to this Linode on creation. * * * **NOTE: IP reservation is not currently available to all users.** */ ipv4s?: pulumi.Input<pulumi.Input<string>[]>; /** * This Linode's IPv6 SLAAC addresses. This address is specific to a Linode, and may not be shared. The prefix (`/64`) is included in this attribute. */ ipv6?: pulumi.Input<string>; /** * The Linode's label is for display purposes only. If no label is provided for a Linode, a default will be assigned. */ label?: pulumi.Input<string>; /** * If applicable, the ID of the LKE cluster this instance is a part of. */ lkeClusterId?: pulumi.Input<number>; /** * Various fields related to the Linode Metadata service. */ metadatas?: pulumi.Input<pulumi.Input<inputs.InstanceMetadata>[]>; /** * The type of migration to use when updating the type or region of a Linode. (`cold`, `warm`; default `cold`) * * * `interface` - (Optional) A list of network interfaces to be assigned to the Linode on creation. If an explicit config or disk is defined, interfaces must be declared in the `config` block. */ migrationType?: pulumi.Input<string>; /** * Information about the Placement Group this Linode is assigned to. */ placementGroup?: pulumi.Input<inputs.InstancePlacementGroup>; /** * If true, changes to the Linode's assigned Placement Group will be ignored. This is necessary when using this resource in conjunction with the linode.PlacementGroupAssignment resource. */ placementGroupExternallyManaged?: pulumi.Input<boolean>; /** * If true, the created Linode will have private networking enabled, allowing use of the 192.168.128.0/17 network within the Linode's region. It can be enabled on an existing Linode but it can't be disabled. */ privateIp?: pulumi.Input<boolean>; /** * This Linode's Private IPv4 Address, if enabled. The regional private IP address range, 192.168.128.0/17, is shared by all Linode Instances in a region. */ privateIpAddress?: pulumi.Input<string>; /** * This is the location where the Linode is deployed. Examples are `"us-east"`, `"us-west"`, `"ap-south"`, etc. See all regions [here](https://api.linode.com/v4/regions). *Changing `region` will trigger a migration of this Linode. Migration operations are typically long-running operations, so the update timeout should be adjusted accordingly.*. */ region?: pulumi.Input<string>; /** * If true, changes in Linode type will attempt to upsize or downsize implicitly created disks. This must be false if explicit disks are defined. *This is an irreversible action as Linode disks cannot be automatically downsized.* * * * `alerts.0.cpu` - (Optional) The percentage of CPU usage required to trigger an alert. If the average CPU usage over two hours exceeds this value, we'll send you an alert. If this is set to 0, the alert is disabled. * * * `alerts.0.network_in` - (Optional) The amount of incoming traffic, in Mbit/s, required to trigger an alert. If the average incoming traffic over two hours exceeds this value, we'll send you an alert. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.network_out` - (Optional) The amount of outbound traffic, in Mbit/s, required to trigger an alert. If the average outbound traffic over two hours exceeds this value, we'll send you an alert. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.transfer_quota` - (Optional) The percentage of network transfer that may be used before an alert is triggered. When this value is exceeded, we'll alert you. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.io` - (Optional) The amount of disk IO operation per second required to trigger an alert. If the average disk IO over two hours exceeds this value, we'll send you an alert. If set to 0, this alert is disabled. */ resizeDisk?: pulumi.Input<boolean>; /** * The password that will be initially assigned to the 'root' user account. */ rootPass?: pulumi.Input<string>; /** * A set of IPv4 addresses to be shared with the Instance. These IP addresses can be both private and public, but must be in the same region as the instance. * * * `metadata.0.user_data` - (Optional) The base64-encoded user-defined data exposed to this instance through the Linode Metadata service. Refer to the base64encode(...) function for information on encoding content for this field. * * * `placement_group.0.id` - (Optional) The ID of the Placement Group to assign this Linode to. */ sharedIpv4s?: pulumi.Input<pulumi.Input<string>[]>; /** * Information about the resources available to this Linode. */ specs?: pulumi.Input<inputs.InstanceSpecs>; /** * An object containing responses to any User Defined Fields present in the StackScript being deployed to this Linode. Only * accepted if 'stackscript_id' is given. The required values depend on the StackScript being deployed. */ stackscriptData?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * The StackScript to deploy to the newly created Linode. If provided, 'image' must also be provided, and must be an Image * that is compatible with this StackScript. */ stackscriptId?: pulumi.Input<number>; /** * The status of the instance, indicating the current readiness state. (`running`, `offline`, ...) */ status?: pulumi.Input<string>; /** * When deploying from an Image, this field is optional with a Linode API default of 512mb, otherwise it is ignored. This * is used to set the swap disk size for the newly-created Linode. */ swapSize?: pulumi.Input<number>; /** * A list of tags applied to this object. Tags are case-insensitive and are for organizational purposes only. */ tags?: pulumi.Input<pulumi.Input<string>[]>; /** * The Linode type defines the pricing, CPU, disk, and RAM specs of the instance. Examples are `"g6-nanode-1"`, `"g6-standard-2"`, `"g6-highmem-16"`, `"g6-dedicated-16"`, etc. See all types [here](https://api.linode.com/v4/linode/types). * * - - - */ type?: pulumi.Input<string>; /** * The watchdog, named Lassie, is a Shutdown Watchdog that monitors your Linode and will reboot it if it powers off unexpectedly. It works by issuing a boot job when your Linode powers off without a shutdown job being responsible. To prevent a loop, Lassie will give up if there have been more than 5 boot jobs issued within 15 minutes. */ watchdogEnabled?: pulumi.Input<boolean>; } /** * The set of arguments for constructing a Instance resource. */ export interface InstanceArgs { /** * Configuration options for alert triggers on this Linode. */ alerts?: pulumi.Input<inputs.InstanceAlerts>; /** * A list of SSH public keys to deploy for the root user on the newly created Linode. Only accepted if 'image' is provided. */ authorizedKeys?: pulumi.Input<pulumi.Input<string>[]>; /** * A list of Linode usernames. If the usernames have associated SSH keys, the keys will be appended to the `root` user's * `~/.ssh/authorized_keys` file automatically. Only accepted if 'image' is provided. */ authorizedUsers?: pulumi.Input<pulumi.Input<string>[]>; /** * A Backup ID from another Linode's available backups. Your User must have readWrite access to that Linode, the Backup * must have a status of successful, and the Linode must be deployed to the same region as the Backup. See * /linode/instances/{linodeId}/backups for a Linode's available backups. This field and the image field are mutually * exclusive. */ backupId?: pulumi.Input<number>; /** * If this field is set to true, the created Linode will automatically be enrolled in the Linode Backup service. This will incur an additional charge. The cost for the Backup service is dependent on the Type of Linode deployed. */ backupsEnabled?: pulumi.Input<boolean>; /** * The Label of the Instance Config that should be used to boot the Linode instance. */ bootConfigLabel?: pulumi.Input<string>; /** * If true, then the instance is kept or converted into in a running state. If false, the instance will be shutdown. If unspecified, the Linode's power status will not be managed by the Provider. */ booted?: pulumi.Input<boolean>; /** * Configuration profiles define the VM settings and boot behavior of the Linode Instance. * * @deprecated The embedded config is deprecated and scheduled to be removed in the next major version.Please consider migrating it to linode.InstanceConfig resource. */ configs?: pulumi.Input<pulumi.Input<inputs.InstanceConfig>[]>; /** * The disk encryption policy for this instance. (`enabled`, `disabled`; default `enabled` in supported regions) * * * **NOTE: Disk encryption may not currently be available to all users.** */ diskEncryption?: pulumi.Input<string>; /** * @deprecated The embedded disk block in linode.Instance resource is deprecated and scheduled to be removed in the next major version. Please consider migrating it to be the linode.InstanceDisk resource. */ disks?: pulumi.Input<pulumi.Input<inputs.InstanceDisk>[]>; /** * The ID of the Firewall to attach to the instance upon creation. *Changing `firewallId` forces the creation of a new Linode Instance.* */ firewallId?: pulumi.Input<number>; /** * A deprecated property denoting a group label for this Linode. We recommend using the `tags` attribute instead. * * @deprecated Group label is deprecated. We recommend using tags instead. */ group?: pulumi.Input<string>; /** * An Image ID to deploy the Disk from. Official Linode Images start with linode/, while your Images start with private/. * See /images for more information on the Images available for you to use. */ image?: pulumi.Input<string>; /** * An array of Network Interfaces for this Linode to be created with. If an explicit config or disk is defined, interfaces * must be declared in the config block. */ interfaces?: pulumi.Input<pulumi.Input<inputs.InstanceInterface>[]>; /** * A set of reserved IPv4 addresses to assign to this Linode on creation. * * * **NOTE: IP reservation is not currently available to all users.** */ ipv4s?: pulumi.Input<pulumi.Input<string>[]>; /** * The Linode's label is for display purposes only. If no label is provided for a Linode, a default will be assigned. */ label?: pulumi.Input<string>; /** * Various fields related to the Linode Metadata service. */ metadatas?: pulumi.Input<pulumi.Input<inputs.InstanceMetadata>[]>; /** * The type of migration to use when updating the type or region of a Linode. (`cold`, `warm`; default `cold`) * * * `interface` - (Optional) A list of network interfaces to be assigned to the Linode on creation. If an explicit config or disk is defined, interfaces must be declared in the `config` block. */ migrationType?: pulumi.Input<string>; /** * Information about the Placement Group this Linode is assigned to. */ placementGroup?: pulumi.Input<inputs.InstancePlacementGroup>; /** * If true, changes to the Linode's assigned Placement Group will be ignored. This is necessary when using this resource in conjunction with the linode.PlacementGroupAssignment resource. */ placementGroupExternallyManaged?: pulumi.Input<boolean>; /** * If true, the created Linode will have private networking enabled, allowing use of the 192.168.128.0/17 network within the Linode's region. It can be enabled on an existing Linode but it can't be disabled. */ privateIp?: pulumi.Input<boolean>; /** * This is the location where the Linode is deployed. Examples are `"us-east"`, `"us-west"`, `"ap-south"`, etc. See all regions [here](https://api.linode.com/v4/regions). *Changing `region` will trigger a migration of this Linode. Migration operations are typically long-running operations, so the update timeout should be adjusted accordingly.*. */ region: pulumi.Input<string>; /** * If true, changes in Linode type will attempt to upsize or downsize implicitly created disks. This must be false if explicit disks are defined. *This is an irreversible action as Linode disks cannot be automatically downsized.* * * * `alerts.0.cpu` - (Optional) The percentage of CPU usage required to trigger an alert. If the average CPU usage over two hours exceeds this value, we'll send you an alert. If this is set to 0, the alert is disabled. * * * `alerts.0.network_in` - (Optional) The amount of incoming traffic, in Mbit/s, required to trigger an alert. If the average incoming traffic over two hours exceeds this value, we'll send you an alert. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.network_out` - (Optional) The amount of outbound traffic, in Mbit/s, required to trigger an alert. If the average outbound traffic over two hours exceeds this value, we'll send you an alert. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.transfer_quota` - (Optional) The percentage of network transfer that may be used before an alert is triggered. When this value is exceeded, we'll alert you. If this is set to 0 (zero), the alert is disabled. * * * `alerts.0.io` - (Optional) The amount of disk IO operation per second required to trigger an alert. If the average disk IO over two hours exceeds this value, we'll send you an alert. If set to 0, this alert is disabled. */ resizeDisk?: pulumi.Input<boolean>; /** * The password that will be initially assigned to the 'root' user account. */ rootPass?: pulumi.Input<string>; /** * A set of IPv4 addresses to be shared with the Instance. These IP addresses can be both private and public, but must be in the same region as the instance. * * * `metadata.0.user_data` - (Optional) The base64-encoded user-defined data exposed to this instance through the Linode Metadata service. Refer to the base64encode(...) function for information on encoding content for this field. * * * `placement_group.0.id` - (Optional) The ID of the Placement Group to assign this Linode to. */ sharedIpv4s?: pulumi.Input<pulumi.Input<string>[]>; /** * An object containing responses to any User Defined Fields present in the StackScript being deployed to this Linode. Only * accepted if 'stackscript_id' is given. The required values depend on the StackScript being deployed. */ stackscriptData?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * The StackScript to deploy to the newly created Linode. If provided, 'image' must also be provided, and must be an Image * that is compatible with this StackScript. */ stackscriptId?: pulumi.Input<number>; /** * When deploying from an Image, this field is optional with a Linode API default of 512mb, otherwise it is ignored. This * is used to set the swap disk size for the newly-created Linode. */ swapSize?: pulumi.Input<number>; /** * A list of tags applied to this object. Tags are case-insensitive and are for organizational purposes only. */ tags?: pulumi.Input<pulumi.Input<string>[]>; /** * The Linode type defines the pricing, CPU, disk, and RAM specs of the instance. Examples are `"g6-nanode-1"`, `"g6-standard-2"`, `"g6-highmem-16"`, `"g6-dedicated-16"`, etc. See all types [here](https://api.linode.com/v4/linode/types). * * - - - */ type?: pulumi.Input<string>; /** * The watchdog, named Lassie, is a Shutdown Watchdog that monitors your Linode and will reboot it if it powers off unexpectedly. It works by issuing a boot job when your Linode powers off without a shutdown job being responsible. To prevent a loop, Lassie will give up if there have been more than 5 boot jobs issued within 15 minutes. */ watchdogEnabled?: pulumi.Input<boolean>; }