pulumiverse-scaleway 1.16.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pulumiverse-scaleway might be problematic. Click here for more details.

Files changed (205) hide show
  1. pulumiverse_scaleway/__init__.py +1073 -0
  2. pulumiverse_scaleway/_inputs.py +8665 -0
  3. pulumiverse_scaleway/_utilities.py +327 -0
  4. pulumiverse_scaleway/account_project.py +316 -0
  5. pulumiverse_scaleway/account_ssh_key.py +450 -0
  6. pulumiverse_scaleway/apple_silicon_server.py +564 -0
  7. pulumiverse_scaleway/baremetal_server.py +1390 -0
  8. pulumiverse_scaleway/block_snapshot.py +391 -0
  9. pulumiverse_scaleway/block_volume.py +521 -0
  10. pulumiverse_scaleway/cockpit.py +299 -0
  11. pulumiverse_scaleway/cockpit_alert_manager.py +345 -0
  12. pulumiverse_scaleway/cockpit_grafana_user.py +326 -0
  13. pulumiverse_scaleway/cockpit_source.py +481 -0
  14. pulumiverse_scaleway/cockpit_token.py +461 -0
  15. pulumiverse_scaleway/config/__init__.py +8 -0
  16. pulumiverse_scaleway/config/__init__.pyi +56 -0
  17. pulumiverse_scaleway/config/vars.py +78 -0
  18. pulumiverse_scaleway/container.py +1387 -0
  19. pulumiverse_scaleway/container_cron.py +493 -0
  20. pulumiverse_scaleway/container_domain.py +400 -0
  21. pulumiverse_scaleway/container_namespace.py +589 -0
  22. pulumiverse_scaleway/container_token.py +454 -0
  23. pulumiverse_scaleway/container_trigger.py +478 -0
  24. pulumiverse_scaleway/database.py +407 -0
  25. pulumiverse_scaleway/database_acl.py +332 -0
  26. pulumiverse_scaleway/database_backup.py +574 -0
  27. pulumiverse_scaleway/database_instance.py +1636 -0
  28. pulumiverse_scaleway/database_privilege.py +422 -0
  29. pulumiverse_scaleway/database_read_replica.py +528 -0
  30. pulumiverse_scaleway/database_user.py +446 -0
  31. pulumiverse_scaleway/documentdb_database.py +450 -0
  32. pulumiverse_scaleway/documentdb_instance.py +812 -0
  33. pulumiverse_scaleway/documentdb_private_network_endpoint.py +352 -0
  34. pulumiverse_scaleway/documentdb_privilege.py +402 -0
  35. pulumiverse_scaleway/documentdb_read_replica.py +405 -0
  36. pulumiverse_scaleway/documentdb_user.py +442 -0
  37. pulumiverse_scaleway/domain_record.py +1074 -0
  38. pulumiverse_scaleway/domain_zone.py +458 -0
  39. pulumiverse_scaleway/flexible_ip.py +702 -0
  40. pulumiverse_scaleway/flexible_ip_mac_address.py +510 -0
  41. pulumiverse_scaleway/function.py +1145 -0
  42. pulumiverse_scaleway/function_cron.py +480 -0
  43. pulumiverse_scaleway/function_domain.py +361 -0
  44. pulumiverse_scaleway/function_namespace.py +533 -0
  45. pulumiverse_scaleway/function_token.py +462 -0
  46. pulumiverse_scaleway/function_trigger.py +478 -0
  47. pulumiverse_scaleway/get_account_project.py +164 -0
  48. pulumiverse_scaleway/get_account_ssh_key.py +201 -0
  49. pulumiverse_scaleway/get_availability_zones.py +131 -0
  50. pulumiverse_scaleway/get_baremetal_offer.py +245 -0
  51. pulumiverse_scaleway/get_baremetal_option.py +168 -0
  52. pulumiverse_scaleway/get_baremetal_os.py +174 -0
  53. pulumiverse_scaleway/get_baremetal_server.py +411 -0
  54. pulumiverse_scaleway/get_billing_consumptions.py +134 -0
  55. pulumiverse_scaleway/get_billing_invoices.py +154 -0
  56. pulumiverse_scaleway/get_block_snapshot.py +170 -0
  57. pulumiverse_scaleway/get_block_volume.py +186 -0
  58. pulumiverse_scaleway/get_cockpit.py +179 -0
  59. pulumiverse_scaleway/get_cockpit_plan.py +113 -0
  60. pulumiverse_scaleway/get_config.py +180 -0
  61. pulumiverse_scaleway/get_container.py +502 -0
  62. pulumiverse_scaleway/get_container_namespace.py +262 -0
  63. pulumiverse_scaleway/get_database.py +187 -0
  64. pulumiverse_scaleway/get_database_acl.py +143 -0
  65. pulumiverse_scaleway/get_database_backup.py +253 -0
  66. pulumiverse_scaleway/get_database_instance.py +404 -0
  67. pulumiverse_scaleway/get_database_privilege.py +181 -0
  68. pulumiverse_scaleway/get_documentdb_database.py +198 -0
  69. pulumiverse_scaleway/get_documentdb_instance.py +245 -0
  70. pulumiverse_scaleway/get_documentdb_load_balancer_endpoint.py +198 -0
  71. pulumiverse_scaleway/get_domain_record.py +334 -0
  72. pulumiverse_scaleway/get_domain_zone.py +225 -0
  73. pulumiverse_scaleway/get_flexible_ip.py +247 -0
  74. pulumiverse_scaleway/get_flexible_ips.py +240 -0
  75. pulumiverse_scaleway/get_function.py +357 -0
  76. pulumiverse_scaleway/get_function_namespace.py +227 -0
  77. pulumiverse_scaleway/get_iam_api_key.py +210 -0
  78. pulumiverse_scaleway/get_iam_application.py +210 -0
  79. pulumiverse_scaleway/get_iam_group.py +236 -0
  80. pulumiverse_scaleway/get_iam_ssh_key.py +212 -0
  81. pulumiverse_scaleway/get_iam_user.py +157 -0
  82. pulumiverse_scaleway/get_instance_image.py +305 -0
  83. pulumiverse_scaleway/get_instance_ip.py +204 -0
  84. pulumiverse_scaleway/get_instance_placement_group.py +212 -0
  85. pulumiverse_scaleway/get_instance_private_nic.py +215 -0
  86. pulumiverse_scaleway/get_instance_security_group.py +268 -0
  87. pulumiverse_scaleway/get_instance_server.py +502 -0
  88. pulumiverse_scaleway/get_instance_servers.py +187 -0
  89. pulumiverse_scaleway/get_instance_snapshot.py +248 -0
  90. pulumiverse_scaleway/get_instance_volume.py +215 -0
  91. pulumiverse_scaleway/get_iot_device.py +257 -0
  92. pulumiverse_scaleway/get_iot_hub.py +322 -0
  93. pulumiverse_scaleway/get_ipam_ip.py +419 -0
  94. pulumiverse_scaleway/get_ipam_ips.py +358 -0
  95. pulumiverse_scaleway/get_k8s_version.py +196 -0
  96. pulumiverse_scaleway/get_kubernetes_cluster.py +417 -0
  97. pulumiverse_scaleway/get_kubernetes_node_pool.py +436 -0
  98. pulumiverse_scaleway/get_lb_acls.py +198 -0
  99. pulumiverse_scaleway/get_lb_backend.py +486 -0
  100. pulumiverse_scaleway/get_lb_backends.py +196 -0
  101. pulumiverse_scaleway/get_lb_frontend.py +274 -0
  102. pulumiverse_scaleway/get_lb_frontends.py +196 -0
  103. pulumiverse_scaleway/get_lb_ips.py +198 -0
  104. pulumiverse_scaleway/get_lb_route.py +217 -0
  105. pulumiverse_scaleway/get_lb_routes.py +179 -0
  106. pulumiverse_scaleway/get_lbs.py +187 -0
  107. pulumiverse_scaleway/get_loadbalancer.py +339 -0
  108. pulumiverse_scaleway/get_loadbalancer_certificate.py +230 -0
  109. pulumiverse_scaleway/get_loadbalancer_ip.py +222 -0
  110. pulumiverse_scaleway/get_marketplace_image.py +147 -0
  111. pulumiverse_scaleway/get_mnq_sqs.py +150 -0
  112. pulumiverse_scaleway/get_object_bucket.py +278 -0
  113. pulumiverse_scaleway/get_object_bucket_policy.py +157 -0
  114. pulumiverse_scaleway/get_redis_cluster.py +347 -0
  115. pulumiverse_scaleway/get_registry_image.py +239 -0
  116. pulumiverse_scaleway/get_registry_namespace.py +199 -0
  117. pulumiverse_scaleway/get_secret.py +290 -0
  118. pulumiverse_scaleway/get_secret_version.py +303 -0
  119. pulumiverse_scaleway/get_tem_domain.py +367 -0
  120. pulumiverse_scaleway/get_vpc.py +246 -0
  121. pulumiverse_scaleway/get_vpc_gateway_network.py +287 -0
  122. pulumiverse_scaleway/get_vpc_private_network.py +282 -0
  123. pulumiverse_scaleway/get_vpc_public_gateway.py +304 -0
  124. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +305 -0
  125. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +382 -0
  126. pulumiverse_scaleway/get_vpc_public_gateway_ip.py +199 -0
  127. pulumiverse_scaleway/get_vpc_public_pat_rule.py +313 -0
  128. pulumiverse_scaleway/get_vpc_routes.py +208 -0
  129. pulumiverse_scaleway/get_vpcs.py +174 -0
  130. pulumiverse_scaleway/get_web_host_offer.py +192 -0
  131. pulumiverse_scaleway/get_webhosting.py +332 -0
  132. pulumiverse_scaleway/iam_api_key.py +620 -0
  133. pulumiverse_scaleway/iam_application.py +417 -0
  134. pulumiverse_scaleway/iam_group.py +566 -0
  135. pulumiverse_scaleway/iam_group_membership.py +323 -0
  136. pulumiverse_scaleway/iam_policy.py +727 -0
  137. pulumiverse_scaleway/iam_ssh_key.py +455 -0
  138. pulumiverse_scaleway/iam_user.py +466 -0
  139. pulumiverse_scaleway/instance_image.py +750 -0
  140. pulumiverse_scaleway/instance_ip.py +483 -0
  141. pulumiverse_scaleway/instance_ip_reverse_dns.py +308 -0
  142. pulumiverse_scaleway/instance_placement_group.py +479 -0
  143. pulumiverse_scaleway/instance_private_nic.py +454 -0
  144. pulumiverse_scaleway/instance_security_group.py +720 -0
  145. pulumiverse_scaleway/instance_security_group_rules.py +439 -0
  146. pulumiverse_scaleway/instance_server.py +1907 -0
  147. pulumiverse_scaleway/instance_snapshot.py +669 -0
  148. pulumiverse_scaleway/instance_user_data.py +435 -0
  149. pulumiverse_scaleway/instance_volume.py +535 -0
  150. pulumiverse_scaleway/iot_device.py +750 -0
  151. pulumiverse_scaleway/iot_hub.py +896 -0
  152. pulumiverse_scaleway/iot_network.py +425 -0
  153. pulumiverse_scaleway/iot_route.py +660 -0
  154. pulumiverse_scaleway/ipam_ip.py +666 -0
  155. pulumiverse_scaleway/ipam_ip_reverse_dns.py +318 -0
  156. pulumiverse_scaleway/job_definition.py +692 -0
  157. pulumiverse_scaleway/kubernetes_cluster.py +1538 -0
  158. pulumiverse_scaleway/kubernetes_node_pool.py +1255 -0
  159. pulumiverse_scaleway/loadbalancer.py +1095 -0
  160. pulumiverse_scaleway/loadbalancer_acl.py +520 -0
  161. pulumiverse_scaleway/loadbalancer_backend.py +1588 -0
  162. pulumiverse_scaleway/loadbalancer_certificate.py +460 -0
  163. pulumiverse_scaleway/loadbalancer_frontend.py +829 -0
  164. pulumiverse_scaleway/loadbalancer_ip.py +514 -0
  165. pulumiverse_scaleway/loadbalancer_route.py +523 -0
  166. pulumiverse_scaleway/mnq_nats_account.py +334 -0
  167. pulumiverse_scaleway/mnq_nats_credentials.py +328 -0
  168. pulumiverse_scaleway/mnq_sns.py +306 -0
  169. pulumiverse_scaleway/mnq_sns_credentials.py +413 -0
  170. pulumiverse_scaleway/mnq_sns_topic.py +659 -0
  171. pulumiverse_scaleway/mnq_sns_topic_subscription.py +699 -0
  172. pulumiverse_scaleway/mnq_sqs.py +304 -0
  173. pulumiverse_scaleway/mnq_sqs_credentials.py +413 -0
  174. pulumiverse_scaleway/mnq_sqs_queue.py +800 -0
  175. pulumiverse_scaleway/object_bucket.py +888 -0
  176. pulumiverse_scaleway/object_bucket_acl.py +592 -0
  177. pulumiverse_scaleway/object_bucket_lock_configuration.py +393 -0
  178. pulumiverse_scaleway/object_bucket_policy.py +671 -0
  179. pulumiverse_scaleway/object_bucket_website_configuration.py +532 -0
  180. pulumiverse_scaleway/object_item.py +711 -0
  181. pulumiverse_scaleway/outputs.py +11663 -0
  182. pulumiverse_scaleway/provider.py +327 -0
  183. pulumiverse_scaleway/pulumi-plugin.json +6 -0
  184. pulumiverse_scaleway/py.typed +0 -0
  185. pulumiverse_scaleway/redis_cluster.py +1166 -0
  186. pulumiverse_scaleway/registry_namespace.py +458 -0
  187. pulumiverse_scaleway/sdb_database.py +428 -0
  188. pulumiverse_scaleway/secret.py +560 -0
  189. pulumiverse_scaleway/secret_version.py +482 -0
  190. pulumiverse_scaleway/tem_domain.py +950 -0
  191. pulumiverse_scaleway/tem_domain_validation.py +303 -0
  192. pulumiverse_scaleway/vpc.py +536 -0
  193. pulumiverse_scaleway/vpc_gateway_network.py +866 -0
  194. pulumiverse_scaleway/vpc_private_network.py +734 -0
  195. pulumiverse_scaleway/vpc_public_gateway.py +789 -0
  196. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +933 -0
  197. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +514 -0
  198. pulumiverse_scaleway/vpc_public_gateway_ip.py +457 -0
  199. pulumiverse_scaleway/vpc_public_gateway_ip_reverse_dns.py +306 -0
  200. pulumiverse_scaleway/vpc_public_gateway_pat_rule.py +591 -0
  201. pulumiverse_scaleway/webhosting.py +805 -0
  202. pulumiverse_scaleway-1.16.0.dist-info/METADATA +69 -0
  203. pulumiverse_scaleway-1.16.0.dist-info/RECORD +205 -0
  204. pulumiverse_scaleway-1.16.0.dist-info/WHEEL +5 -0
  205. pulumiverse_scaleway-1.16.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1907 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['InstanceServerArgs', 'InstanceServer']
20
+
21
+ @pulumi.input_type
22
+ class InstanceServerArgs:
23
+ def __init__(__self__, *,
24
+ type: pulumi.Input[str],
25
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
26
+ boot_type: Optional[pulumi.Input[str]] = None,
27
+ bootscript_id: Optional[pulumi.Input[str]] = None,
28
+ cloud_init: Optional[pulumi.Input[str]] = None,
29
+ enable_dynamic_ip: Optional[pulumi.Input[bool]] = None,
30
+ enable_ipv6: Optional[pulumi.Input[bool]] = None,
31
+ image: Optional[pulumi.Input[str]] = None,
32
+ ip_id: Optional[pulumi.Input[str]] = None,
33
+ ip_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
34
+ name: Optional[pulumi.Input[str]] = None,
35
+ placement_group_id: Optional[pulumi.Input[str]] = None,
36
+ private_networks: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPrivateNetworkArgs']]]] = None,
37
+ project_id: Optional[pulumi.Input[str]] = None,
38
+ public_ips: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPublicIpArgs']]]] = None,
39
+ replace_on_type_change: Optional[pulumi.Input[bool]] = None,
40
+ root_volume: Optional[pulumi.Input['InstanceServerRootVolumeArgs']] = None,
41
+ routed_ip_enabled: Optional[pulumi.Input[bool]] = None,
42
+ security_group_id: Optional[pulumi.Input[str]] = None,
43
+ state: Optional[pulumi.Input[str]] = None,
44
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
45
+ user_data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
46
+ zone: Optional[pulumi.Input[str]] = None):
47
+ """
48
+ The set of arguments for constructing a InstanceServer resource.
49
+ :param pulumi.Input[str] type: The commercial type of the server.
50
+ You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
51
+ Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
52
+ Use `replace_on_type_change` to trigger replacement instead of migration.
53
+
54
+ > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
55
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] additional_volume_ids: The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
56
+ attached to the server. Updates to this field will trigger a stop/start of the server.
57
+
58
+ > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
59
+
60
+ > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
61
+ :param pulumi.Input[str] boot_type: The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
62
+ :param pulumi.Input[str] bootscript_id: The ID of the bootscript to use (set boot_type to `bootscript`).
63
+ :param pulumi.Input[str] cloud_init: The cloud init script associated with this server
64
+ :param pulumi.Input[bool] enable_dynamic_ip: If true a dynamic IP will be attached to the server.
65
+ :param pulumi.Input[bool] enable_ipv6: Determines if IPv6 is enabled for the server. Useful only with `routed_ip_enabled` as false, otherwise ipv6 is always supported.
66
+ :param pulumi.Input[str] image: The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
67
+ to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
68
+
69
+ You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
70
+
71
+ To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
72
+ :param pulumi.Input[str] ip_id: The ID of the reserved IP that is attached to the server.
73
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_ids: List of ID of reserved IPs that are attached to the server. Cannot be used with `ip_id`.
74
+
75
+ > `ip_id` to `ip_ids` migration: if moving the ip from the old `ip_id` field to the new `ip_ids`, it should not detach the ip.
76
+ :param pulumi.Input[str] name: The name of the server.
77
+ :param pulumi.Input[str] placement_group_id: The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group the server is attached to.
78
+
79
+
80
+ > **Important:** When updating `placement_group_id` the `state` must be set to `stopped`, otherwise it will fail.
81
+ :param pulumi.Input[Sequence[pulumi.Input['InstanceServerPrivateNetworkArgs']]] private_networks: The private network associated with the server.
82
+ Use the `pn_id` key to attach a [private_network](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
83
+ :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
84
+ :param pulumi.Input[Sequence[pulumi.Input['InstanceServerPublicIpArgs']]] public_ips: The list of public IPs of the server.
85
+ :param pulumi.Input[bool] replace_on_type_change: If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
86
+ :param pulumi.Input['InstanceServerRootVolumeArgs'] root_volume: Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
87
+ :param pulumi.Input[bool] routed_ip_enabled: If true, the server will support routed ips only. Changing it to true will migrate the server and its IP to routed type.
88
+
89
+ > **Important:** Enabling routed ip will restart the server
90
+ :param pulumi.Input[str] security_group_id: The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
91
+ :param pulumi.Input[str] state: The state of the server. Possible values are: `started`, `stopped` or `standby`.
92
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
93
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_data: The user data associated with the server.
94
+ Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
95
+ You can define values using:
96
+ - string
97
+ - UTF-8 encoded file content using file
98
+ - Binary files using filebase64.
99
+ :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
100
+ """
101
+ pulumi.set(__self__, "type", type)
102
+ if additional_volume_ids is not None:
103
+ pulumi.set(__self__, "additional_volume_ids", additional_volume_ids)
104
+ if boot_type is not None:
105
+ pulumi.set(__self__, "boot_type", boot_type)
106
+ if bootscript_id is not None:
107
+ pulumi.set(__self__, "bootscript_id", bootscript_id)
108
+ if cloud_init is not None:
109
+ pulumi.set(__self__, "cloud_init", cloud_init)
110
+ if enable_dynamic_ip is not None:
111
+ pulumi.set(__self__, "enable_dynamic_ip", enable_dynamic_ip)
112
+ if enable_ipv6 is not None:
113
+ pulumi.set(__self__, "enable_ipv6", enable_ipv6)
114
+ if image is not None:
115
+ pulumi.set(__self__, "image", image)
116
+ if ip_id is not None:
117
+ pulumi.set(__self__, "ip_id", ip_id)
118
+ if ip_ids is not None:
119
+ pulumi.set(__self__, "ip_ids", ip_ids)
120
+ if name is not None:
121
+ pulumi.set(__self__, "name", name)
122
+ if placement_group_id is not None:
123
+ pulumi.set(__self__, "placement_group_id", placement_group_id)
124
+ if private_networks is not None:
125
+ pulumi.set(__self__, "private_networks", private_networks)
126
+ if project_id is not None:
127
+ pulumi.set(__self__, "project_id", project_id)
128
+ if public_ips is not None:
129
+ pulumi.set(__self__, "public_ips", public_ips)
130
+ if replace_on_type_change is not None:
131
+ pulumi.set(__self__, "replace_on_type_change", replace_on_type_change)
132
+ if root_volume is not None:
133
+ pulumi.set(__self__, "root_volume", root_volume)
134
+ if routed_ip_enabled is not None:
135
+ pulumi.set(__self__, "routed_ip_enabled", routed_ip_enabled)
136
+ if security_group_id is not None:
137
+ pulumi.set(__self__, "security_group_id", security_group_id)
138
+ if state is not None:
139
+ pulumi.set(__self__, "state", state)
140
+ if tags is not None:
141
+ pulumi.set(__self__, "tags", tags)
142
+ if user_data is not None:
143
+ pulumi.set(__self__, "user_data", user_data)
144
+ if zone is not None:
145
+ pulumi.set(__self__, "zone", zone)
146
+
147
+ @property
148
+ @pulumi.getter
149
+ def type(self) -> pulumi.Input[str]:
150
+ """
151
+ The commercial type of the server.
152
+ You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
153
+ Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
154
+ Use `replace_on_type_change` to trigger replacement instead of migration.
155
+
156
+ > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
157
+ """
158
+ return pulumi.get(self, "type")
159
+
160
+ @type.setter
161
+ def type(self, value: pulumi.Input[str]):
162
+ pulumi.set(self, "type", value)
163
+
164
+ @property
165
+ @pulumi.getter(name="additionalVolumeIds")
166
+ def additional_volume_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
167
+ """
168
+ The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
169
+ attached to the server. Updates to this field will trigger a stop/start of the server.
170
+
171
+ > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
172
+
173
+ > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
174
+ """
175
+ return pulumi.get(self, "additional_volume_ids")
176
+
177
+ @additional_volume_ids.setter
178
+ def additional_volume_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
179
+ pulumi.set(self, "additional_volume_ids", value)
180
+
181
+ @property
182
+ @pulumi.getter(name="bootType")
183
+ def boot_type(self) -> Optional[pulumi.Input[str]]:
184
+ """
185
+ The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
186
+ """
187
+ return pulumi.get(self, "boot_type")
188
+
189
+ @boot_type.setter
190
+ def boot_type(self, value: Optional[pulumi.Input[str]]):
191
+ pulumi.set(self, "boot_type", value)
192
+
193
+ @property
194
+ @pulumi.getter(name="bootscriptId")
195
+ def bootscript_id(self) -> Optional[pulumi.Input[str]]:
196
+ """
197
+ The ID of the bootscript to use (set boot_type to `bootscript`).
198
+ """
199
+ return pulumi.get(self, "bootscript_id")
200
+
201
+ @bootscript_id.setter
202
+ def bootscript_id(self, value: Optional[pulumi.Input[str]]):
203
+ pulumi.set(self, "bootscript_id", value)
204
+
205
+ @property
206
+ @pulumi.getter(name="cloudInit")
207
+ def cloud_init(self) -> Optional[pulumi.Input[str]]:
208
+ """
209
+ The cloud init script associated with this server
210
+ """
211
+ return pulumi.get(self, "cloud_init")
212
+
213
+ @cloud_init.setter
214
+ def cloud_init(self, value: Optional[pulumi.Input[str]]):
215
+ pulumi.set(self, "cloud_init", value)
216
+
217
+ @property
218
+ @pulumi.getter(name="enableDynamicIp")
219
+ def enable_dynamic_ip(self) -> Optional[pulumi.Input[bool]]:
220
+ """
221
+ If true a dynamic IP will be attached to the server.
222
+ """
223
+ return pulumi.get(self, "enable_dynamic_ip")
224
+
225
+ @enable_dynamic_ip.setter
226
+ def enable_dynamic_ip(self, value: Optional[pulumi.Input[bool]]):
227
+ pulumi.set(self, "enable_dynamic_ip", value)
228
+
229
+ @property
230
+ @pulumi.getter(name="enableIpv6")
231
+ def enable_ipv6(self) -> Optional[pulumi.Input[bool]]:
232
+ """
233
+ Determines if IPv6 is enabled for the server. Useful only with `routed_ip_enabled` as false, otherwise ipv6 is always supported.
234
+ """
235
+ return pulumi.get(self, "enable_ipv6")
236
+
237
+ @enable_ipv6.setter
238
+ def enable_ipv6(self, value: Optional[pulumi.Input[bool]]):
239
+ pulumi.set(self, "enable_ipv6", value)
240
+
241
+ @property
242
+ @pulumi.getter
243
+ def image(self) -> Optional[pulumi.Input[str]]:
244
+ """
245
+ The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
246
+ to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
247
+
248
+ You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
249
+
250
+ To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
251
+ """
252
+ return pulumi.get(self, "image")
253
+
254
+ @image.setter
255
+ def image(self, value: Optional[pulumi.Input[str]]):
256
+ pulumi.set(self, "image", value)
257
+
258
+ @property
259
+ @pulumi.getter(name="ipId")
260
+ def ip_id(self) -> Optional[pulumi.Input[str]]:
261
+ """
262
+ The ID of the reserved IP that is attached to the server.
263
+ """
264
+ return pulumi.get(self, "ip_id")
265
+
266
+ @ip_id.setter
267
+ def ip_id(self, value: Optional[pulumi.Input[str]]):
268
+ pulumi.set(self, "ip_id", value)
269
+
270
+ @property
271
+ @pulumi.getter(name="ipIds")
272
+ def ip_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
273
+ """
274
+ List of ID of reserved IPs that are attached to the server. Cannot be used with `ip_id`.
275
+
276
+ > `ip_id` to `ip_ids` migration: if moving the ip from the old `ip_id` field to the new `ip_ids`, it should not detach the ip.
277
+ """
278
+ return pulumi.get(self, "ip_ids")
279
+
280
+ @ip_ids.setter
281
+ def ip_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
282
+ pulumi.set(self, "ip_ids", value)
283
+
284
+ @property
285
+ @pulumi.getter
286
+ def name(self) -> Optional[pulumi.Input[str]]:
287
+ """
288
+ The name of the server.
289
+ """
290
+ return pulumi.get(self, "name")
291
+
292
+ @name.setter
293
+ def name(self, value: Optional[pulumi.Input[str]]):
294
+ pulumi.set(self, "name", value)
295
+
296
+ @property
297
+ @pulumi.getter(name="placementGroupId")
298
+ def placement_group_id(self) -> Optional[pulumi.Input[str]]:
299
+ """
300
+ The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group the server is attached to.
301
+
302
+
303
+ > **Important:** When updating `placement_group_id` the `state` must be set to `stopped`, otherwise it will fail.
304
+ """
305
+ return pulumi.get(self, "placement_group_id")
306
+
307
+ @placement_group_id.setter
308
+ def placement_group_id(self, value: Optional[pulumi.Input[str]]):
309
+ pulumi.set(self, "placement_group_id", value)
310
+
311
+ @property
312
+ @pulumi.getter(name="privateNetworks")
313
+ def private_networks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPrivateNetworkArgs']]]]:
314
+ """
315
+ The private network associated with the server.
316
+ Use the `pn_id` key to attach a [private_network](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
317
+ """
318
+ return pulumi.get(self, "private_networks")
319
+
320
+ @private_networks.setter
321
+ def private_networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPrivateNetworkArgs']]]]):
322
+ pulumi.set(self, "private_networks", value)
323
+
324
+ @property
325
+ @pulumi.getter(name="projectId")
326
+ def project_id(self) -> Optional[pulumi.Input[str]]:
327
+ """
328
+ `project_id`) The ID of the project the server is associated with.
329
+ """
330
+ return pulumi.get(self, "project_id")
331
+
332
+ @project_id.setter
333
+ def project_id(self, value: Optional[pulumi.Input[str]]):
334
+ pulumi.set(self, "project_id", value)
335
+
336
+ @property
337
+ @pulumi.getter(name="publicIps")
338
+ def public_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPublicIpArgs']]]]:
339
+ """
340
+ The list of public IPs of the server.
341
+ """
342
+ return pulumi.get(self, "public_ips")
343
+
344
+ @public_ips.setter
345
+ def public_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPublicIpArgs']]]]):
346
+ pulumi.set(self, "public_ips", value)
347
+
348
+ @property
349
+ @pulumi.getter(name="replaceOnTypeChange")
350
+ def replace_on_type_change(self) -> Optional[pulumi.Input[bool]]:
351
+ """
352
+ If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
353
+ """
354
+ return pulumi.get(self, "replace_on_type_change")
355
+
356
+ @replace_on_type_change.setter
357
+ def replace_on_type_change(self, value: Optional[pulumi.Input[bool]]):
358
+ pulumi.set(self, "replace_on_type_change", value)
359
+
360
+ @property
361
+ @pulumi.getter(name="rootVolume")
362
+ def root_volume(self) -> Optional[pulumi.Input['InstanceServerRootVolumeArgs']]:
363
+ """
364
+ Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
365
+ """
366
+ return pulumi.get(self, "root_volume")
367
+
368
+ @root_volume.setter
369
+ def root_volume(self, value: Optional[pulumi.Input['InstanceServerRootVolumeArgs']]):
370
+ pulumi.set(self, "root_volume", value)
371
+
372
+ @property
373
+ @pulumi.getter(name="routedIpEnabled")
374
+ def routed_ip_enabled(self) -> Optional[pulumi.Input[bool]]:
375
+ """
376
+ If true, the server will support routed ips only. Changing it to true will migrate the server and its IP to routed type.
377
+
378
+ > **Important:** Enabling routed ip will restart the server
379
+ """
380
+ return pulumi.get(self, "routed_ip_enabled")
381
+
382
+ @routed_ip_enabled.setter
383
+ def routed_ip_enabled(self, value: Optional[pulumi.Input[bool]]):
384
+ pulumi.set(self, "routed_ip_enabled", value)
385
+
386
+ @property
387
+ @pulumi.getter(name="securityGroupId")
388
+ def security_group_id(self) -> Optional[pulumi.Input[str]]:
389
+ """
390
+ The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
391
+ """
392
+ return pulumi.get(self, "security_group_id")
393
+
394
+ @security_group_id.setter
395
+ def security_group_id(self, value: Optional[pulumi.Input[str]]):
396
+ pulumi.set(self, "security_group_id", value)
397
+
398
+ @property
399
+ @pulumi.getter
400
+ def state(self) -> Optional[pulumi.Input[str]]:
401
+ """
402
+ The state of the server. Possible values are: `started`, `stopped` or `standby`.
403
+ """
404
+ return pulumi.get(self, "state")
405
+
406
+ @state.setter
407
+ def state(self, value: Optional[pulumi.Input[str]]):
408
+ pulumi.set(self, "state", value)
409
+
410
+ @property
411
+ @pulumi.getter
412
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
413
+ """
414
+ The tags associated with the server.
415
+ """
416
+ return pulumi.get(self, "tags")
417
+
418
+ @tags.setter
419
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
420
+ pulumi.set(self, "tags", value)
421
+
422
+ @property
423
+ @pulumi.getter(name="userData")
424
+ def user_data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
425
+ """
426
+ The user data associated with the server.
427
+ Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
428
+ You can define values using:
429
+ - string
430
+ - UTF-8 encoded file content using file
431
+ - Binary files using filebase64.
432
+ """
433
+ return pulumi.get(self, "user_data")
434
+
435
+ @user_data.setter
436
+ def user_data(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
437
+ pulumi.set(self, "user_data", value)
438
+
439
+ @property
440
+ @pulumi.getter
441
+ def zone(self) -> Optional[pulumi.Input[str]]:
442
+ """
443
+ `zone`) The zone in which the server should be created.
444
+ """
445
+ return pulumi.get(self, "zone")
446
+
447
+ @zone.setter
448
+ def zone(self, value: Optional[pulumi.Input[str]]):
449
+ pulumi.set(self, "zone", value)
450
+
451
+
452
+ @pulumi.input_type
453
+ class _InstanceServerState:
454
+ def __init__(__self__, *,
455
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
456
+ boot_type: Optional[pulumi.Input[str]] = None,
457
+ bootscript_id: Optional[pulumi.Input[str]] = None,
458
+ cloud_init: Optional[pulumi.Input[str]] = None,
459
+ enable_dynamic_ip: Optional[pulumi.Input[bool]] = None,
460
+ enable_ipv6: Optional[pulumi.Input[bool]] = None,
461
+ image: Optional[pulumi.Input[str]] = None,
462
+ ip_id: Optional[pulumi.Input[str]] = None,
463
+ ip_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
464
+ ipv6_address: Optional[pulumi.Input[str]] = None,
465
+ ipv6_gateway: Optional[pulumi.Input[str]] = None,
466
+ ipv6_prefix_length: Optional[pulumi.Input[int]] = None,
467
+ name: Optional[pulumi.Input[str]] = None,
468
+ organization_id: Optional[pulumi.Input[str]] = None,
469
+ placement_group_id: Optional[pulumi.Input[str]] = None,
470
+ placement_group_policy_respected: Optional[pulumi.Input[bool]] = None,
471
+ private_ip: Optional[pulumi.Input[str]] = None,
472
+ private_networks: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPrivateNetworkArgs']]]] = None,
473
+ project_id: Optional[pulumi.Input[str]] = None,
474
+ public_ip: Optional[pulumi.Input[str]] = None,
475
+ public_ips: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPublicIpArgs']]]] = None,
476
+ replace_on_type_change: Optional[pulumi.Input[bool]] = None,
477
+ root_volume: Optional[pulumi.Input['InstanceServerRootVolumeArgs']] = None,
478
+ routed_ip_enabled: Optional[pulumi.Input[bool]] = None,
479
+ security_group_id: Optional[pulumi.Input[str]] = None,
480
+ state: Optional[pulumi.Input[str]] = None,
481
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
482
+ type: Optional[pulumi.Input[str]] = None,
483
+ user_data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
484
+ zone: Optional[pulumi.Input[str]] = None):
485
+ """
486
+ Input properties used for looking up and filtering InstanceServer resources.
487
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] additional_volume_ids: The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
488
+ attached to the server. Updates to this field will trigger a stop/start of the server.
489
+
490
+ > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
491
+
492
+ > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
493
+ :param pulumi.Input[str] boot_type: The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
494
+ :param pulumi.Input[str] bootscript_id: The ID of the bootscript to use (set boot_type to `bootscript`).
495
+ :param pulumi.Input[str] cloud_init: The cloud init script associated with this server
496
+ :param pulumi.Input[bool] enable_dynamic_ip: If true a dynamic IP will be attached to the server.
497
+ :param pulumi.Input[bool] enable_ipv6: Determines if IPv6 is enabled for the server. Useful only with `routed_ip_enabled` as false, otherwise ipv6 is always supported.
498
+ :param pulumi.Input[str] image: The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
499
+ to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
500
+
501
+ You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
502
+
503
+ To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
504
+ :param pulumi.Input[str] ip_id: The ID of the reserved IP that is attached to the server.
505
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_ids: List of ID of reserved IPs that are attached to the server. Cannot be used with `ip_id`.
506
+
507
+ > `ip_id` to `ip_ids` migration: if moving the ip from the old `ip_id` field to the new `ip_ids`, it should not detach the ip.
508
+ :param pulumi.Input[str] ipv6_address: The default ipv6 address routed to the server. ( Only set when enable_ipv6 is set to true )
509
+ :param pulumi.Input[str] ipv6_gateway: The ipv6 gateway address. ( Only set when enable_ipv6 is set to true )
510
+ :param pulumi.Input[int] ipv6_prefix_length: The prefix length of the ipv6 subnet routed to the server. ( Only set when enable_ipv6 is set to true )
511
+ :param pulumi.Input[str] name: The name of the server.
512
+ :param pulumi.Input[str] organization_id: The organization ID the server is associated with.
513
+ :param pulumi.Input[str] placement_group_id: The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group the server is attached to.
514
+
515
+
516
+ > **Important:** When updating `placement_group_id` the `state` must be set to `stopped`, otherwise it will fail.
517
+ :param pulumi.Input[bool] placement_group_policy_respected: True when the placement group policy is respected.
518
+ :param pulumi.Input[str] private_ip: The Scaleway internal IP address of the server.
519
+ :param pulumi.Input[Sequence[pulumi.Input['InstanceServerPrivateNetworkArgs']]] private_networks: The private network associated with the server.
520
+ Use the `pn_id` key to attach a [private_network](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
521
+ :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
522
+ :param pulumi.Input[str] public_ip: The public IP address of the server.
523
+ :param pulumi.Input[Sequence[pulumi.Input['InstanceServerPublicIpArgs']]] public_ips: The list of public IPs of the server.
524
+ :param pulumi.Input[bool] replace_on_type_change: If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
525
+ :param pulumi.Input['InstanceServerRootVolumeArgs'] root_volume: Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
526
+ :param pulumi.Input[bool] routed_ip_enabled: If true, the server will support routed ips only. Changing it to true will migrate the server and its IP to routed type.
527
+
528
+ > **Important:** Enabling routed ip will restart the server
529
+ :param pulumi.Input[str] security_group_id: The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
530
+ :param pulumi.Input[str] state: The state of the server. Possible values are: `started`, `stopped` or `standby`.
531
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
532
+ :param pulumi.Input[str] type: The commercial type of the server.
533
+ You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
534
+ Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
535
+ Use `replace_on_type_change` to trigger replacement instead of migration.
536
+
537
+ > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
538
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_data: The user data associated with the server.
539
+ Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
540
+ You can define values using:
541
+ - string
542
+ - UTF-8 encoded file content using file
543
+ - Binary files using filebase64.
544
+ :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
545
+ """
546
+ if additional_volume_ids is not None:
547
+ pulumi.set(__self__, "additional_volume_ids", additional_volume_ids)
548
+ if boot_type is not None:
549
+ pulumi.set(__self__, "boot_type", boot_type)
550
+ if bootscript_id is not None:
551
+ pulumi.set(__self__, "bootscript_id", bootscript_id)
552
+ if cloud_init is not None:
553
+ pulumi.set(__self__, "cloud_init", cloud_init)
554
+ if enable_dynamic_ip is not None:
555
+ pulumi.set(__self__, "enable_dynamic_ip", enable_dynamic_ip)
556
+ if enable_ipv6 is not None:
557
+ pulumi.set(__self__, "enable_ipv6", enable_ipv6)
558
+ if image is not None:
559
+ pulumi.set(__self__, "image", image)
560
+ if ip_id is not None:
561
+ pulumi.set(__self__, "ip_id", ip_id)
562
+ if ip_ids is not None:
563
+ pulumi.set(__self__, "ip_ids", ip_ids)
564
+ if ipv6_address is not None:
565
+ pulumi.set(__self__, "ipv6_address", ipv6_address)
566
+ if ipv6_gateway is not None:
567
+ pulumi.set(__self__, "ipv6_gateway", ipv6_gateway)
568
+ if ipv6_prefix_length is not None:
569
+ pulumi.set(__self__, "ipv6_prefix_length", ipv6_prefix_length)
570
+ if name is not None:
571
+ pulumi.set(__self__, "name", name)
572
+ if organization_id is not None:
573
+ pulumi.set(__self__, "organization_id", organization_id)
574
+ if placement_group_id is not None:
575
+ pulumi.set(__self__, "placement_group_id", placement_group_id)
576
+ if placement_group_policy_respected is not None:
577
+ pulumi.set(__self__, "placement_group_policy_respected", placement_group_policy_respected)
578
+ if private_ip is not None:
579
+ pulumi.set(__self__, "private_ip", private_ip)
580
+ if private_networks is not None:
581
+ pulumi.set(__self__, "private_networks", private_networks)
582
+ if project_id is not None:
583
+ pulumi.set(__self__, "project_id", project_id)
584
+ if public_ip is not None:
585
+ pulumi.set(__self__, "public_ip", public_ip)
586
+ if public_ips is not None:
587
+ pulumi.set(__self__, "public_ips", public_ips)
588
+ if replace_on_type_change is not None:
589
+ pulumi.set(__self__, "replace_on_type_change", replace_on_type_change)
590
+ if root_volume is not None:
591
+ pulumi.set(__self__, "root_volume", root_volume)
592
+ if routed_ip_enabled is not None:
593
+ pulumi.set(__self__, "routed_ip_enabled", routed_ip_enabled)
594
+ if security_group_id is not None:
595
+ pulumi.set(__self__, "security_group_id", security_group_id)
596
+ if state is not None:
597
+ pulumi.set(__self__, "state", state)
598
+ if tags is not None:
599
+ pulumi.set(__self__, "tags", tags)
600
+ if type is not None:
601
+ pulumi.set(__self__, "type", type)
602
+ if user_data is not None:
603
+ pulumi.set(__self__, "user_data", user_data)
604
+ if zone is not None:
605
+ pulumi.set(__self__, "zone", zone)
606
+
607
+ @property
608
+ @pulumi.getter(name="additionalVolumeIds")
609
+ def additional_volume_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
610
+ """
611
+ The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
612
+ attached to the server. Updates to this field will trigger a stop/start of the server.
613
+
614
+ > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
615
+
616
+ > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
617
+ """
618
+ return pulumi.get(self, "additional_volume_ids")
619
+
620
+ @additional_volume_ids.setter
621
+ def additional_volume_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
622
+ pulumi.set(self, "additional_volume_ids", value)
623
+
624
+ @property
625
+ @pulumi.getter(name="bootType")
626
+ def boot_type(self) -> Optional[pulumi.Input[str]]:
627
+ """
628
+ The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
629
+ """
630
+ return pulumi.get(self, "boot_type")
631
+
632
+ @boot_type.setter
633
+ def boot_type(self, value: Optional[pulumi.Input[str]]):
634
+ pulumi.set(self, "boot_type", value)
635
+
636
+ @property
637
+ @pulumi.getter(name="bootscriptId")
638
+ def bootscript_id(self) -> Optional[pulumi.Input[str]]:
639
+ """
640
+ The ID of the bootscript to use (set boot_type to `bootscript`).
641
+ """
642
+ return pulumi.get(self, "bootscript_id")
643
+
644
+ @bootscript_id.setter
645
+ def bootscript_id(self, value: Optional[pulumi.Input[str]]):
646
+ pulumi.set(self, "bootscript_id", value)
647
+
648
+ @property
649
+ @pulumi.getter(name="cloudInit")
650
+ def cloud_init(self) -> Optional[pulumi.Input[str]]:
651
+ """
652
+ The cloud init script associated with this server
653
+ """
654
+ return pulumi.get(self, "cloud_init")
655
+
656
+ @cloud_init.setter
657
+ def cloud_init(self, value: Optional[pulumi.Input[str]]):
658
+ pulumi.set(self, "cloud_init", value)
659
+
660
+ @property
661
+ @pulumi.getter(name="enableDynamicIp")
662
+ def enable_dynamic_ip(self) -> Optional[pulumi.Input[bool]]:
663
+ """
664
+ If true a dynamic IP will be attached to the server.
665
+ """
666
+ return pulumi.get(self, "enable_dynamic_ip")
667
+
668
+ @enable_dynamic_ip.setter
669
+ def enable_dynamic_ip(self, value: Optional[pulumi.Input[bool]]):
670
+ pulumi.set(self, "enable_dynamic_ip", value)
671
+
672
+ @property
673
+ @pulumi.getter(name="enableIpv6")
674
+ def enable_ipv6(self) -> Optional[pulumi.Input[bool]]:
675
+ """
676
+ Determines if IPv6 is enabled for the server. Useful only with `routed_ip_enabled` as false, otherwise ipv6 is always supported.
677
+ """
678
+ return pulumi.get(self, "enable_ipv6")
679
+
680
+ @enable_ipv6.setter
681
+ def enable_ipv6(self, value: Optional[pulumi.Input[bool]]):
682
+ pulumi.set(self, "enable_ipv6", value)
683
+
684
+ @property
685
+ @pulumi.getter
686
+ def image(self) -> Optional[pulumi.Input[str]]:
687
+ """
688
+ The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
689
+ to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
690
+
691
+ You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
692
+
693
+ To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
694
+ """
695
+ return pulumi.get(self, "image")
696
+
697
+ @image.setter
698
+ def image(self, value: Optional[pulumi.Input[str]]):
699
+ pulumi.set(self, "image", value)
700
+
701
+ @property
702
+ @pulumi.getter(name="ipId")
703
+ def ip_id(self) -> Optional[pulumi.Input[str]]:
704
+ """
705
+ The ID of the reserved IP that is attached to the server.
706
+ """
707
+ return pulumi.get(self, "ip_id")
708
+
709
+ @ip_id.setter
710
+ def ip_id(self, value: Optional[pulumi.Input[str]]):
711
+ pulumi.set(self, "ip_id", value)
712
+
713
+ @property
714
+ @pulumi.getter(name="ipIds")
715
+ def ip_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
716
+ """
717
+ List of ID of reserved IPs that are attached to the server. Cannot be used with `ip_id`.
718
+
719
+ > `ip_id` to `ip_ids` migration: if moving the ip from the old `ip_id` field to the new `ip_ids`, it should not detach the ip.
720
+ """
721
+ return pulumi.get(self, "ip_ids")
722
+
723
+ @ip_ids.setter
724
+ def ip_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
725
+ pulumi.set(self, "ip_ids", value)
726
+
727
+ @property
728
+ @pulumi.getter(name="ipv6Address")
729
+ def ipv6_address(self) -> Optional[pulumi.Input[str]]:
730
+ """
731
+ The default ipv6 address routed to the server. ( Only set when enable_ipv6 is set to true )
732
+ """
733
+ return pulumi.get(self, "ipv6_address")
734
+
735
+ @ipv6_address.setter
736
+ def ipv6_address(self, value: Optional[pulumi.Input[str]]):
737
+ pulumi.set(self, "ipv6_address", value)
738
+
739
+ @property
740
+ @pulumi.getter(name="ipv6Gateway")
741
+ def ipv6_gateway(self) -> Optional[pulumi.Input[str]]:
742
+ """
743
+ The ipv6 gateway address. ( Only set when enable_ipv6 is set to true )
744
+ """
745
+ return pulumi.get(self, "ipv6_gateway")
746
+
747
+ @ipv6_gateway.setter
748
+ def ipv6_gateway(self, value: Optional[pulumi.Input[str]]):
749
+ pulumi.set(self, "ipv6_gateway", value)
750
+
751
+ @property
752
+ @pulumi.getter(name="ipv6PrefixLength")
753
+ def ipv6_prefix_length(self) -> Optional[pulumi.Input[int]]:
754
+ """
755
+ The prefix length of the ipv6 subnet routed to the server. ( Only set when enable_ipv6 is set to true )
756
+ """
757
+ return pulumi.get(self, "ipv6_prefix_length")
758
+
759
+ @ipv6_prefix_length.setter
760
+ def ipv6_prefix_length(self, value: Optional[pulumi.Input[int]]):
761
+ pulumi.set(self, "ipv6_prefix_length", value)
762
+
763
+ @property
764
+ @pulumi.getter
765
+ def name(self) -> Optional[pulumi.Input[str]]:
766
+ """
767
+ The name of the server.
768
+ """
769
+ return pulumi.get(self, "name")
770
+
771
+ @name.setter
772
+ def name(self, value: Optional[pulumi.Input[str]]):
773
+ pulumi.set(self, "name", value)
774
+
775
+ @property
776
+ @pulumi.getter(name="organizationId")
777
+ def organization_id(self) -> Optional[pulumi.Input[str]]:
778
+ """
779
+ The organization ID the server is associated with.
780
+ """
781
+ return pulumi.get(self, "organization_id")
782
+
783
+ @organization_id.setter
784
+ def organization_id(self, value: Optional[pulumi.Input[str]]):
785
+ pulumi.set(self, "organization_id", value)
786
+
787
+ @property
788
+ @pulumi.getter(name="placementGroupId")
789
+ def placement_group_id(self) -> Optional[pulumi.Input[str]]:
790
+ """
791
+ The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group the server is attached to.
792
+
793
+
794
+ > **Important:** When updating `placement_group_id` the `state` must be set to `stopped`, otherwise it will fail.
795
+ """
796
+ return pulumi.get(self, "placement_group_id")
797
+
798
+ @placement_group_id.setter
799
+ def placement_group_id(self, value: Optional[pulumi.Input[str]]):
800
+ pulumi.set(self, "placement_group_id", value)
801
+
802
+ @property
803
+ @pulumi.getter(name="placementGroupPolicyRespected")
804
+ def placement_group_policy_respected(self) -> Optional[pulumi.Input[bool]]:
805
+ """
806
+ True when the placement group policy is respected.
807
+ """
808
+ return pulumi.get(self, "placement_group_policy_respected")
809
+
810
+ @placement_group_policy_respected.setter
811
+ def placement_group_policy_respected(self, value: Optional[pulumi.Input[bool]]):
812
+ pulumi.set(self, "placement_group_policy_respected", value)
813
+
814
+ @property
815
+ @pulumi.getter(name="privateIp")
816
+ def private_ip(self) -> Optional[pulumi.Input[str]]:
817
+ """
818
+ The Scaleway internal IP address of the server.
819
+ """
820
+ return pulumi.get(self, "private_ip")
821
+
822
+ @private_ip.setter
823
+ def private_ip(self, value: Optional[pulumi.Input[str]]):
824
+ pulumi.set(self, "private_ip", value)
825
+
826
+ @property
827
+ @pulumi.getter(name="privateNetworks")
828
+ def private_networks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPrivateNetworkArgs']]]]:
829
+ """
830
+ The private network associated with the server.
831
+ Use the `pn_id` key to attach a [private_network](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
832
+ """
833
+ return pulumi.get(self, "private_networks")
834
+
835
+ @private_networks.setter
836
+ def private_networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPrivateNetworkArgs']]]]):
837
+ pulumi.set(self, "private_networks", value)
838
+
839
+ @property
840
+ @pulumi.getter(name="projectId")
841
+ def project_id(self) -> Optional[pulumi.Input[str]]:
842
+ """
843
+ `project_id`) The ID of the project the server is associated with.
844
+ """
845
+ return pulumi.get(self, "project_id")
846
+
847
+ @project_id.setter
848
+ def project_id(self, value: Optional[pulumi.Input[str]]):
849
+ pulumi.set(self, "project_id", value)
850
+
851
+ @property
852
+ @pulumi.getter(name="publicIp")
853
+ def public_ip(self) -> Optional[pulumi.Input[str]]:
854
+ """
855
+ The public IP address of the server.
856
+ """
857
+ return pulumi.get(self, "public_ip")
858
+
859
+ @public_ip.setter
860
+ def public_ip(self, value: Optional[pulumi.Input[str]]):
861
+ pulumi.set(self, "public_ip", value)
862
+
863
+ @property
864
+ @pulumi.getter(name="publicIps")
865
+ def public_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPublicIpArgs']]]]:
866
+ """
867
+ The list of public IPs of the server.
868
+ """
869
+ return pulumi.get(self, "public_ips")
870
+
871
+ @public_ips.setter
872
+ def public_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceServerPublicIpArgs']]]]):
873
+ pulumi.set(self, "public_ips", value)
874
+
875
+ @property
876
+ @pulumi.getter(name="replaceOnTypeChange")
877
+ def replace_on_type_change(self) -> Optional[pulumi.Input[bool]]:
878
+ """
879
+ If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
880
+ """
881
+ return pulumi.get(self, "replace_on_type_change")
882
+
883
+ @replace_on_type_change.setter
884
+ def replace_on_type_change(self, value: Optional[pulumi.Input[bool]]):
885
+ pulumi.set(self, "replace_on_type_change", value)
886
+
887
+ @property
888
+ @pulumi.getter(name="rootVolume")
889
+ def root_volume(self) -> Optional[pulumi.Input['InstanceServerRootVolumeArgs']]:
890
+ """
891
+ Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
892
+ """
893
+ return pulumi.get(self, "root_volume")
894
+
895
+ @root_volume.setter
896
+ def root_volume(self, value: Optional[pulumi.Input['InstanceServerRootVolumeArgs']]):
897
+ pulumi.set(self, "root_volume", value)
898
+
899
+ @property
900
+ @pulumi.getter(name="routedIpEnabled")
901
+ def routed_ip_enabled(self) -> Optional[pulumi.Input[bool]]:
902
+ """
903
+ If true, the server will support routed ips only. Changing it to true will migrate the server and its IP to routed type.
904
+
905
+ > **Important:** Enabling routed ip will restart the server
906
+ """
907
+ return pulumi.get(self, "routed_ip_enabled")
908
+
909
+ @routed_ip_enabled.setter
910
+ def routed_ip_enabled(self, value: Optional[pulumi.Input[bool]]):
911
+ pulumi.set(self, "routed_ip_enabled", value)
912
+
913
+ @property
914
+ @pulumi.getter(name="securityGroupId")
915
+ def security_group_id(self) -> Optional[pulumi.Input[str]]:
916
+ """
917
+ The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
918
+ """
919
+ return pulumi.get(self, "security_group_id")
920
+
921
+ @security_group_id.setter
922
+ def security_group_id(self, value: Optional[pulumi.Input[str]]):
923
+ pulumi.set(self, "security_group_id", value)
924
+
925
+ @property
926
+ @pulumi.getter
927
+ def state(self) -> Optional[pulumi.Input[str]]:
928
+ """
929
+ The state of the server. Possible values are: `started`, `stopped` or `standby`.
930
+ """
931
+ return pulumi.get(self, "state")
932
+
933
+ @state.setter
934
+ def state(self, value: Optional[pulumi.Input[str]]):
935
+ pulumi.set(self, "state", value)
936
+
937
+ @property
938
+ @pulumi.getter
939
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
940
+ """
941
+ The tags associated with the server.
942
+ """
943
+ return pulumi.get(self, "tags")
944
+
945
+ @tags.setter
946
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
947
+ pulumi.set(self, "tags", value)
948
+
949
+ @property
950
+ @pulumi.getter
951
+ def type(self) -> Optional[pulumi.Input[str]]:
952
+ """
953
+ The commercial type of the server.
954
+ You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
955
+ Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
956
+ Use `replace_on_type_change` to trigger replacement instead of migration.
957
+
958
+ > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
959
+ """
960
+ return pulumi.get(self, "type")
961
+
962
+ @type.setter
963
+ def type(self, value: Optional[pulumi.Input[str]]):
964
+ pulumi.set(self, "type", value)
965
+
966
+ @property
967
+ @pulumi.getter(name="userData")
968
+ def user_data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
969
+ """
970
+ The user data associated with the server.
971
+ Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
972
+ You can define values using:
973
+ - string
974
+ - UTF-8 encoded file content using file
975
+ - Binary files using filebase64.
976
+ """
977
+ return pulumi.get(self, "user_data")
978
+
979
+ @user_data.setter
980
+ def user_data(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
981
+ pulumi.set(self, "user_data", value)
982
+
983
+ @property
984
+ @pulumi.getter
985
+ def zone(self) -> Optional[pulumi.Input[str]]:
986
+ """
987
+ `zone`) The zone in which the server should be created.
988
+ """
989
+ return pulumi.get(self, "zone")
990
+
991
+ @zone.setter
992
+ def zone(self, value: Optional[pulumi.Input[str]]):
993
+ pulumi.set(self, "zone", value)
994
+
995
+
996
+ class InstanceServer(pulumi.CustomResource):
997
+ @overload
998
+ def __init__(__self__,
999
+ resource_name: str,
1000
+ opts: Optional[pulumi.ResourceOptions] = None,
1001
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1002
+ boot_type: Optional[pulumi.Input[str]] = None,
1003
+ bootscript_id: Optional[pulumi.Input[str]] = None,
1004
+ cloud_init: Optional[pulumi.Input[str]] = None,
1005
+ enable_dynamic_ip: Optional[pulumi.Input[bool]] = None,
1006
+ enable_ipv6: Optional[pulumi.Input[bool]] = None,
1007
+ image: Optional[pulumi.Input[str]] = None,
1008
+ ip_id: Optional[pulumi.Input[str]] = None,
1009
+ ip_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1010
+ name: Optional[pulumi.Input[str]] = None,
1011
+ placement_group_id: Optional[pulumi.Input[str]] = None,
1012
+ private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPrivateNetworkArgs', 'InstanceServerPrivateNetworkArgsDict']]]]] = None,
1013
+ project_id: Optional[pulumi.Input[str]] = None,
1014
+ public_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPublicIpArgs', 'InstanceServerPublicIpArgsDict']]]]] = None,
1015
+ replace_on_type_change: Optional[pulumi.Input[bool]] = None,
1016
+ root_volume: Optional[pulumi.Input[Union['InstanceServerRootVolumeArgs', 'InstanceServerRootVolumeArgsDict']]] = None,
1017
+ routed_ip_enabled: Optional[pulumi.Input[bool]] = None,
1018
+ security_group_id: Optional[pulumi.Input[str]] = None,
1019
+ state: Optional[pulumi.Input[str]] = None,
1020
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1021
+ type: Optional[pulumi.Input[str]] = None,
1022
+ user_data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1023
+ zone: Optional[pulumi.Input[str]] = None,
1024
+ __props__=None):
1025
+ """
1026
+ Creates and manages Scaleway compute Instances. For more information, see [the documentation](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances).
1027
+
1028
+ Please check our [FAQ - Instances](https://www.scaleway.com/en/docs/faq/instances).
1029
+
1030
+ ## Example Usage
1031
+
1032
+ ### Basic
1033
+
1034
+ ```python
1035
+ import pulumi
1036
+ import pulumiverse_scaleway as scaleway
1037
+
1038
+ public_ip = scaleway.InstanceIp("public_ip")
1039
+ web = scaleway.InstanceServer("web",
1040
+ type="DEV1-S",
1041
+ image="ubuntu_jammy",
1042
+ ip_id=public_ip.id)
1043
+ ```
1044
+
1045
+ ### With additional volumes and tags
1046
+
1047
+ ```python
1048
+ import pulumi
1049
+ import pulumiverse_scaleway as scaleway
1050
+
1051
+ data = scaleway.InstanceVolume("data",
1052
+ size_in_gb=100,
1053
+ type="b_ssd")
1054
+ web = scaleway.InstanceServer("web",
1055
+ type="DEV1-S",
1056
+ image="ubuntu_jammy",
1057
+ tags=[
1058
+ "hello",
1059
+ "public",
1060
+ ],
1061
+ root_volume={
1062
+ "delete_on_termination": False,
1063
+ },
1064
+ additional_volume_ids=[data.id])
1065
+ ```
1066
+
1067
+ ### With a reserved IP
1068
+
1069
+ ```python
1070
+ import pulumi
1071
+ import pulumiverse_scaleway as scaleway
1072
+
1073
+ ip = scaleway.InstanceIp("ip")
1074
+ web = scaleway.InstanceServer("web",
1075
+ type="DEV1-S",
1076
+ image="f974feac-abae-4365-b988-8ec7d1cec10d",
1077
+ tags=[
1078
+ "hello",
1079
+ "public",
1080
+ ],
1081
+ ip_id=ip.id)
1082
+ ```
1083
+
1084
+ ### With security group
1085
+
1086
+ ```python
1087
+ import pulumi
1088
+ import pulumiverse_scaleway as scaleway
1089
+
1090
+ www = scaleway.InstanceSecurityGroup("www",
1091
+ inbound_default_policy="drop",
1092
+ outbound_default_policy="accept",
1093
+ inbound_rules=[
1094
+ {
1095
+ "action": "accept",
1096
+ "port": 22,
1097
+ "ip": "212.47.225.64",
1098
+ },
1099
+ {
1100
+ "action": "accept",
1101
+ "port": 80,
1102
+ },
1103
+ {
1104
+ "action": "accept",
1105
+ "port": 443,
1106
+ },
1107
+ ],
1108
+ outbound_rules=[{
1109
+ "action": "drop",
1110
+ "ip_range": "10.20.0.0/24",
1111
+ }])
1112
+ web = scaleway.InstanceServer("web",
1113
+ type="DEV1-S",
1114
+ image="ubuntu_jammy",
1115
+ security_group_id=www.id)
1116
+ ```
1117
+
1118
+ ### With private network
1119
+
1120
+ ```python
1121
+ import pulumi
1122
+ import pulumiverse_scaleway as scaleway
1123
+
1124
+ pn01 = scaleway.VpcPrivateNetwork("pn01", name="private_network_instance")
1125
+ base = scaleway.InstanceServer("base",
1126
+ image="ubuntu_jammy",
1127
+ type="DEV1-S",
1128
+ private_networks=[{
1129
+ "pn_id": pn01.id,
1130
+ }])
1131
+ ```
1132
+
1133
+ ### Root volume configuration
1134
+
1135
+ ### Resized block volume with installed image
1136
+
1137
+ ```python
1138
+ import pulumi
1139
+ import pulumiverse_scaleway as scaleway
1140
+
1141
+ image = scaleway.InstanceServer("image",
1142
+ type="PRO2-XXS",
1143
+ image="ubuntu_jammy",
1144
+ root_volume={
1145
+ "volume_type": "b_ssd",
1146
+ "size_in_gb": 100,
1147
+ })
1148
+ ```
1149
+
1150
+ ### From snapshot
1151
+
1152
+ ```python
1153
+ import pulumi
1154
+ import pulumi_scaleway as scaleway
1155
+ import pulumiverse_scaleway as scaleway
1156
+
1157
+ snapshot = scaleway.get_instance_snapshot(name="my_snapshot")
1158
+ from_snapshot = scaleway.InstanceVolume("from_snapshot",
1159
+ from_snapshot_id=snapshot.id,
1160
+ type="b_ssd")
1161
+ from_snapshot_instance_server = scaleway.InstanceServer("from_snapshot",
1162
+ type="PRO2-XXS",
1163
+ root_volume={
1164
+ "volume_id": from_snapshot.id,
1165
+ })
1166
+ ```
1167
+
1168
+ ## Private Network
1169
+
1170
+ > **Important:** Updates to `private_network` will recreate a new private network interface.
1171
+
1172
+ - `pn_id` - (Required) The private network ID where to connect.
1173
+ - `mac_address` The private NIC MAC address.
1174
+ - `status` The private NIC state.
1175
+ - `zone` - (Defaults to provider `zone`) The zone in which the server must be created.
1176
+
1177
+ > **Important:**
1178
+
1179
+ - You can only attach an instance in the same zone as a private network.
1180
+ - Instance supports maximum 8 different private networks.
1181
+
1182
+ ## Import
1183
+
1184
+ Instance servers can be imported using the `{zone}/{id}`, e.g.
1185
+
1186
+ bash
1187
+
1188
+ ```sh
1189
+ $ pulumi import scaleway:index/instanceServer:InstanceServer web fr-par-1/11111111-1111-1111-1111-111111111111
1190
+ ```
1191
+
1192
+ :param str resource_name: The name of the resource.
1193
+ :param pulumi.ResourceOptions opts: Options for the resource.
1194
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] additional_volume_ids: The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
1195
+ attached to the server. Updates to this field will trigger a stop/start of the server.
1196
+
1197
+ > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
1198
+
1199
+ > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
1200
+ :param pulumi.Input[str] boot_type: The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
1201
+ :param pulumi.Input[str] bootscript_id: The ID of the bootscript to use (set boot_type to `bootscript`).
1202
+ :param pulumi.Input[str] cloud_init: The cloud init script associated with this server
1203
+ :param pulumi.Input[bool] enable_dynamic_ip: If true a dynamic IP will be attached to the server.
1204
+ :param pulumi.Input[bool] enable_ipv6: Determines if IPv6 is enabled for the server. Useful only with `routed_ip_enabled` as false, otherwise ipv6 is always supported.
1205
+ :param pulumi.Input[str] image: The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
1206
+ to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
1207
+
1208
+ You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
1209
+
1210
+ To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
1211
+ :param pulumi.Input[str] ip_id: The ID of the reserved IP that is attached to the server.
1212
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_ids: List of ID of reserved IPs that are attached to the server. Cannot be used with `ip_id`.
1213
+
1214
+ > `ip_id` to `ip_ids` migration: if moving the ip from the old `ip_id` field to the new `ip_ids`, it should not detach the ip.
1215
+ :param pulumi.Input[str] name: The name of the server.
1216
+ :param pulumi.Input[str] placement_group_id: The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group the server is attached to.
1217
+
1218
+
1219
+ > **Important:** When updating `placement_group_id` the `state` must be set to `stopped`, otherwise it will fail.
1220
+ :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPrivateNetworkArgs', 'InstanceServerPrivateNetworkArgsDict']]]] private_networks: The private network associated with the server.
1221
+ Use the `pn_id` key to attach a [private_network](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
1222
+ :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
1223
+ :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPublicIpArgs', 'InstanceServerPublicIpArgsDict']]]] public_ips: The list of public IPs of the server.
1224
+ :param pulumi.Input[bool] replace_on_type_change: If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
1225
+ :param pulumi.Input[Union['InstanceServerRootVolumeArgs', 'InstanceServerRootVolumeArgsDict']] root_volume: Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
1226
+ :param pulumi.Input[bool] routed_ip_enabled: If true, the server will support routed ips only. Changing it to true will migrate the server and its IP to routed type.
1227
+
1228
+ > **Important:** Enabling routed ip will restart the server
1229
+ :param pulumi.Input[str] security_group_id: The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
1230
+ :param pulumi.Input[str] state: The state of the server. Possible values are: `started`, `stopped` or `standby`.
1231
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
1232
+ :param pulumi.Input[str] type: The commercial type of the server.
1233
+ You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
1234
+ Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
1235
+ Use `replace_on_type_change` to trigger replacement instead of migration.
1236
+
1237
+ > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
1238
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_data: The user data associated with the server.
1239
+ Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
1240
+ You can define values using:
1241
+ - string
1242
+ - UTF-8 encoded file content using file
1243
+ - Binary files using filebase64.
1244
+ :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
1245
+ """
1246
+ ...
1247
+ @overload
1248
+ def __init__(__self__,
1249
+ resource_name: str,
1250
+ args: InstanceServerArgs,
1251
+ opts: Optional[pulumi.ResourceOptions] = None):
1252
+ """
1253
+ Creates and manages Scaleway compute Instances. For more information, see [the documentation](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances).
1254
+
1255
+ Please check our [FAQ - Instances](https://www.scaleway.com/en/docs/faq/instances).
1256
+
1257
+ ## Example Usage
1258
+
1259
+ ### Basic
1260
+
1261
+ ```python
1262
+ import pulumi
1263
+ import pulumiverse_scaleway as scaleway
1264
+
1265
+ public_ip = scaleway.InstanceIp("public_ip")
1266
+ web = scaleway.InstanceServer("web",
1267
+ type="DEV1-S",
1268
+ image="ubuntu_jammy",
1269
+ ip_id=public_ip.id)
1270
+ ```
1271
+
1272
+ ### With additional volumes and tags
1273
+
1274
+ ```python
1275
+ import pulumi
1276
+ import pulumiverse_scaleway as scaleway
1277
+
1278
+ data = scaleway.InstanceVolume("data",
1279
+ size_in_gb=100,
1280
+ type="b_ssd")
1281
+ web = scaleway.InstanceServer("web",
1282
+ type="DEV1-S",
1283
+ image="ubuntu_jammy",
1284
+ tags=[
1285
+ "hello",
1286
+ "public",
1287
+ ],
1288
+ root_volume={
1289
+ "delete_on_termination": False,
1290
+ },
1291
+ additional_volume_ids=[data.id])
1292
+ ```
1293
+
1294
+ ### With a reserved IP
1295
+
1296
+ ```python
1297
+ import pulumi
1298
+ import pulumiverse_scaleway as scaleway
1299
+
1300
+ ip = scaleway.InstanceIp("ip")
1301
+ web = scaleway.InstanceServer("web",
1302
+ type="DEV1-S",
1303
+ image="f974feac-abae-4365-b988-8ec7d1cec10d",
1304
+ tags=[
1305
+ "hello",
1306
+ "public",
1307
+ ],
1308
+ ip_id=ip.id)
1309
+ ```
1310
+
1311
+ ### With security group
1312
+
1313
+ ```python
1314
+ import pulumi
1315
+ import pulumiverse_scaleway as scaleway
1316
+
1317
+ www = scaleway.InstanceSecurityGroup("www",
1318
+ inbound_default_policy="drop",
1319
+ outbound_default_policy="accept",
1320
+ inbound_rules=[
1321
+ {
1322
+ "action": "accept",
1323
+ "port": 22,
1324
+ "ip": "212.47.225.64",
1325
+ },
1326
+ {
1327
+ "action": "accept",
1328
+ "port": 80,
1329
+ },
1330
+ {
1331
+ "action": "accept",
1332
+ "port": 443,
1333
+ },
1334
+ ],
1335
+ outbound_rules=[{
1336
+ "action": "drop",
1337
+ "ip_range": "10.20.0.0/24",
1338
+ }])
1339
+ web = scaleway.InstanceServer("web",
1340
+ type="DEV1-S",
1341
+ image="ubuntu_jammy",
1342
+ security_group_id=www.id)
1343
+ ```
1344
+
1345
+ ### With private network
1346
+
1347
+ ```python
1348
+ import pulumi
1349
+ import pulumiverse_scaleway as scaleway
1350
+
1351
+ pn01 = scaleway.VpcPrivateNetwork("pn01", name="private_network_instance")
1352
+ base = scaleway.InstanceServer("base",
1353
+ image="ubuntu_jammy",
1354
+ type="DEV1-S",
1355
+ private_networks=[{
1356
+ "pn_id": pn01.id,
1357
+ }])
1358
+ ```
1359
+
1360
+ ### Root volume configuration
1361
+
1362
+ ### Resized block volume with installed image
1363
+
1364
+ ```python
1365
+ import pulumi
1366
+ import pulumiverse_scaleway as scaleway
1367
+
1368
+ image = scaleway.InstanceServer("image",
1369
+ type="PRO2-XXS",
1370
+ image="ubuntu_jammy",
1371
+ root_volume={
1372
+ "volume_type": "b_ssd",
1373
+ "size_in_gb": 100,
1374
+ })
1375
+ ```
1376
+
1377
+ ### From snapshot
1378
+
1379
+ ```python
1380
+ import pulumi
1381
+ import pulumi_scaleway as scaleway
1382
+ import pulumiverse_scaleway as scaleway
1383
+
1384
+ snapshot = scaleway.get_instance_snapshot(name="my_snapshot")
1385
+ from_snapshot = scaleway.InstanceVolume("from_snapshot",
1386
+ from_snapshot_id=snapshot.id,
1387
+ type="b_ssd")
1388
+ from_snapshot_instance_server = scaleway.InstanceServer("from_snapshot",
1389
+ type="PRO2-XXS",
1390
+ root_volume={
1391
+ "volume_id": from_snapshot.id,
1392
+ })
1393
+ ```
1394
+
1395
+ ## Private Network
1396
+
1397
+ > **Important:** Updates to `private_network` will recreate a new private network interface.
1398
+
1399
+ - `pn_id` - (Required) The private network ID where to connect.
1400
+ - `mac_address` The private NIC MAC address.
1401
+ - `status` The private NIC state.
1402
+ - `zone` - (Defaults to provider `zone`) The zone in which the server must be created.
1403
+
1404
+ > **Important:**
1405
+
1406
+ - You can only attach an instance in the same zone as a private network.
1407
+ - Instance supports maximum 8 different private networks.
1408
+
1409
+ ## Import
1410
+
1411
+ Instance servers can be imported using the `{zone}/{id}`, e.g.
1412
+
1413
+ bash
1414
+
1415
+ ```sh
1416
+ $ pulumi import scaleway:index/instanceServer:InstanceServer web fr-par-1/11111111-1111-1111-1111-111111111111
1417
+ ```
1418
+
1419
+ :param str resource_name: The name of the resource.
1420
+ :param InstanceServerArgs args: The arguments to use to populate this resource's properties.
1421
+ :param pulumi.ResourceOptions opts: Options for the resource.
1422
+ """
1423
+ ...
1424
+ def __init__(__self__, resource_name: str, *args, **kwargs):
1425
+ resource_args, opts = _utilities.get_resource_args_opts(InstanceServerArgs, pulumi.ResourceOptions, *args, **kwargs)
1426
+ if resource_args is not None:
1427
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
1428
+ else:
1429
+ __self__._internal_init(resource_name, *args, **kwargs)
1430
+
1431
+ def _internal_init(__self__,
1432
+ resource_name: str,
1433
+ opts: Optional[pulumi.ResourceOptions] = None,
1434
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1435
+ boot_type: Optional[pulumi.Input[str]] = None,
1436
+ bootscript_id: Optional[pulumi.Input[str]] = None,
1437
+ cloud_init: Optional[pulumi.Input[str]] = None,
1438
+ enable_dynamic_ip: Optional[pulumi.Input[bool]] = None,
1439
+ enable_ipv6: Optional[pulumi.Input[bool]] = None,
1440
+ image: Optional[pulumi.Input[str]] = None,
1441
+ ip_id: Optional[pulumi.Input[str]] = None,
1442
+ ip_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1443
+ name: Optional[pulumi.Input[str]] = None,
1444
+ placement_group_id: Optional[pulumi.Input[str]] = None,
1445
+ private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPrivateNetworkArgs', 'InstanceServerPrivateNetworkArgsDict']]]]] = None,
1446
+ project_id: Optional[pulumi.Input[str]] = None,
1447
+ public_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPublicIpArgs', 'InstanceServerPublicIpArgsDict']]]]] = None,
1448
+ replace_on_type_change: Optional[pulumi.Input[bool]] = None,
1449
+ root_volume: Optional[pulumi.Input[Union['InstanceServerRootVolumeArgs', 'InstanceServerRootVolumeArgsDict']]] = None,
1450
+ routed_ip_enabled: Optional[pulumi.Input[bool]] = None,
1451
+ security_group_id: Optional[pulumi.Input[str]] = None,
1452
+ state: Optional[pulumi.Input[str]] = None,
1453
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1454
+ type: Optional[pulumi.Input[str]] = None,
1455
+ user_data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1456
+ zone: Optional[pulumi.Input[str]] = None,
1457
+ __props__=None):
1458
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
1459
+ if not isinstance(opts, pulumi.ResourceOptions):
1460
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
1461
+ if opts.id is None:
1462
+ if __props__ is not None:
1463
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
1464
+ __props__ = InstanceServerArgs.__new__(InstanceServerArgs)
1465
+
1466
+ __props__.__dict__["additional_volume_ids"] = additional_volume_ids
1467
+ __props__.__dict__["boot_type"] = boot_type
1468
+ __props__.__dict__["bootscript_id"] = bootscript_id
1469
+ __props__.__dict__["cloud_init"] = cloud_init
1470
+ __props__.__dict__["enable_dynamic_ip"] = enable_dynamic_ip
1471
+ __props__.__dict__["enable_ipv6"] = enable_ipv6
1472
+ __props__.__dict__["image"] = image
1473
+ __props__.__dict__["ip_id"] = ip_id
1474
+ __props__.__dict__["ip_ids"] = ip_ids
1475
+ __props__.__dict__["name"] = name
1476
+ __props__.__dict__["placement_group_id"] = placement_group_id
1477
+ __props__.__dict__["private_networks"] = private_networks
1478
+ __props__.__dict__["project_id"] = project_id
1479
+ __props__.__dict__["public_ips"] = public_ips
1480
+ __props__.__dict__["replace_on_type_change"] = replace_on_type_change
1481
+ __props__.__dict__["root_volume"] = root_volume
1482
+ __props__.__dict__["routed_ip_enabled"] = routed_ip_enabled
1483
+ __props__.__dict__["security_group_id"] = security_group_id
1484
+ __props__.__dict__["state"] = state
1485
+ __props__.__dict__["tags"] = tags
1486
+ if type is None and not opts.urn:
1487
+ raise TypeError("Missing required property 'type'")
1488
+ __props__.__dict__["type"] = type
1489
+ __props__.__dict__["user_data"] = user_data
1490
+ __props__.__dict__["zone"] = zone
1491
+ __props__.__dict__["ipv6_address"] = None
1492
+ __props__.__dict__["ipv6_gateway"] = None
1493
+ __props__.__dict__["ipv6_prefix_length"] = None
1494
+ __props__.__dict__["organization_id"] = None
1495
+ __props__.__dict__["placement_group_policy_respected"] = None
1496
+ __props__.__dict__["private_ip"] = None
1497
+ __props__.__dict__["public_ip"] = None
1498
+ super(InstanceServer, __self__).__init__(
1499
+ 'scaleway:index/instanceServer:InstanceServer',
1500
+ resource_name,
1501
+ __props__,
1502
+ opts)
1503
+
1504
+ @staticmethod
1505
+ def get(resource_name: str,
1506
+ id: pulumi.Input[str],
1507
+ opts: Optional[pulumi.ResourceOptions] = None,
1508
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1509
+ boot_type: Optional[pulumi.Input[str]] = None,
1510
+ bootscript_id: Optional[pulumi.Input[str]] = None,
1511
+ cloud_init: Optional[pulumi.Input[str]] = None,
1512
+ enable_dynamic_ip: Optional[pulumi.Input[bool]] = None,
1513
+ enable_ipv6: Optional[pulumi.Input[bool]] = None,
1514
+ image: Optional[pulumi.Input[str]] = None,
1515
+ ip_id: Optional[pulumi.Input[str]] = None,
1516
+ ip_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1517
+ ipv6_address: Optional[pulumi.Input[str]] = None,
1518
+ ipv6_gateway: Optional[pulumi.Input[str]] = None,
1519
+ ipv6_prefix_length: Optional[pulumi.Input[int]] = None,
1520
+ name: Optional[pulumi.Input[str]] = None,
1521
+ organization_id: Optional[pulumi.Input[str]] = None,
1522
+ placement_group_id: Optional[pulumi.Input[str]] = None,
1523
+ placement_group_policy_respected: Optional[pulumi.Input[bool]] = None,
1524
+ private_ip: Optional[pulumi.Input[str]] = None,
1525
+ private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPrivateNetworkArgs', 'InstanceServerPrivateNetworkArgsDict']]]]] = None,
1526
+ project_id: Optional[pulumi.Input[str]] = None,
1527
+ public_ip: Optional[pulumi.Input[str]] = None,
1528
+ public_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPublicIpArgs', 'InstanceServerPublicIpArgsDict']]]]] = None,
1529
+ replace_on_type_change: Optional[pulumi.Input[bool]] = None,
1530
+ root_volume: Optional[pulumi.Input[Union['InstanceServerRootVolumeArgs', 'InstanceServerRootVolumeArgsDict']]] = None,
1531
+ routed_ip_enabled: Optional[pulumi.Input[bool]] = None,
1532
+ security_group_id: Optional[pulumi.Input[str]] = None,
1533
+ state: Optional[pulumi.Input[str]] = None,
1534
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1535
+ type: Optional[pulumi.Input[str]] = None,
1536
+ user_data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1537
+ zone: Optional[pulumi.Input[str]] = None) -> 'InstanceServer':
1538
+ """
1539
+ Get an existing InstanceServer resource's state with the given name, id, and optional extra
1540
+ properties used to qualify the lookup.
1541
+
1542
+ :param str resource_name: The unique name of the resulting resource.
1543
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
1544
+ :param pulumi.ResourceOptions opts: Options for the resource.
1545
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] additional_volume_ids: The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
1546
+ attached to the server. Updates to this field will trigger a stop/start of the server.
1547
+
1548
+ > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
1549
+
1550
+ > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
1551
+ :param pulumi.Input[str] boot_type: The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
1552
+ :param pulumi.Input[str] bootscript_id: The ID of the bootscript to use (set boot_type to `bootscript`).
1553
+ :param pulumi.Input[str] cloud_init: The cloud init script associated with this server
1554
+ :param pulumi.Input[bool] enable_dynamic_ip: If true a dynamic IP will be attached to the server.
1555
+ :param pulumi.Input[bool] enable_ipv6: Determines if IPv6 is enabled for the server. Useful only with `routed_ip_enabled` as false, otherwise ipv6 is always supported.
1556
+ :param pulumi.Input[str] image: The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
1557
+ to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
1558
+
1559
+ You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
1560
+
1561
+ To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
1562
+ :param pulumi.Input[str] ip_id: The ID of the reserved IP that is attached to the server.
1563
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_ids: List of ID of reserved IPs that are attached to the server. Cannot be used with `ip_id`.
1564
+
1565
+ > `ip_id` to `ip_ids` migration: if moving the ip from the old `ip_id` field to the new `ip_ids`, it should not detach the ip.
1566
+ :param pulumi.Input[str] ipv6_address: The default ipv6 address routed to the server. ( Only set when enable_ipv6 is set to true )
1567
+ :param pulumi.Input[str] ipv6_gateway: The ipv6 gateway address. ( Only set when enable_ipv6 is set to true )
1568
+ :param pulumi.Input[int] ipv6_prefix_length: The prefix length of the ipv6 subnet routed to the server. ( Only set when enable_ipv6 is set to true )
1569
+ :param pulumi.Input[str] name: The name of the server.
1570
+ :param pulumi.Input[str] organization_id: The organization ID the server is associated with.
1571
+ :param pulumi.Input[str] placement_group_id: The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group the server is attached to.
1572
+
1573
+
1574
+ > **Important:** When updating `placement_group_id` the `state` must be set to `stopped`, otherwise it will fail.
1575
+ :param pulumi.Input[bool] placement_group_policy_respected: True when the placement group policy is respected.
1576
+ :param pulumi.Input[str] private_ip: The Scaleway internal IP address of the server.
1577
+ :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPrivateNetworkArgs', 'InstanceServerPrivateNetworkArgsDict']]]] private_networks: The private network associated with the server.
1578
+ Use the `pn_id` key to attach a [private_network](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
1579
+ :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
1580
+ :param pulumi.Input[str] public_ip: The public IP address of the server.
1581
+ :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceServerPublicIpArgs', 'InstanceServerPublicIpArgsDict']]]] public_ips: The list of public IPs of the server.
1582
+ :param pulumi.Input[bool] replace_on_type_change: If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
1583
+ :param pulumi.Input[Union['InstanceServerRootVolumeArgs', 'InstanceServerRootVolumeArgsDict']] root_volume: Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
1584
+ :param pulumi.Input[bool] routed_ip_enabled: If true, the server will support routed ips only. Changing it to true will migrate the server and its IP to routed type.
1585
+
1586
+ > **Important:** Enabling routed ip will restart the server
1587
+ :param pulumi.Input[str] security_group_id: The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
1588
+ :param pulumi.Input[str] state: The state of the server. Possible values are: `started`, `stopped` or `standby`.
1589
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
1590
+ :param pulumi.Input[str] type: The commercial type of the server.
1591
+ You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
1592
+ Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
1593
+ Use `replace_on_type_change` to trigger replacement instead of migration.
1594
+
1595
+ > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
1596
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_data: The user data associated with the server.
1597
+ Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
1598
+ You can define values using:
1599
+ - string
1600
+ - UTF-8 encoded file content using file
1601
+ - Binary files using filebase64.
1602
+ :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
1603
+ """
1604
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
1605
+
1606
+ __props__ = _InstanceServerState.__new__(_InstanceServerState)
1607
+
1608
+ __props__.__dict__["additional_volume_ids"] = additional_volume_ids
1609
+ __props__.__dict__["boot_type"] = boot_type
1610
+ __props__.__dict__["bootscript_id"] = bootscript_id
1611
+ __props__.__dict__["cloud_init"] = cloud_init
1612
+ __props__.__dict__["enable_dynamic_ip"] = enable_dynamic_ip
1613
+ __props__.__dict__["enable_ipv6"] = enable_ipv6
1614
+ __props__.__dict__["image"] = image
1615
+ __props__.__dict__["ip_id"] = ip_id
1616
+ __props__.__dict__["ip_ids"] = ip_ids
1617
+ __props__.__dict__["ipv6_address"] = ipv6_address
1618
+ __props__.__dict__["ipv6_gateway"] = ipv6_gateway
1619
+ __props__.__dict__["ipv6_prefix_length"] = ipv6_prefix_length
1620
+ __props__.__dict__["name"] = name
1621
+ __props__.__dict__["organization_id"] = organization_id
1622
+ __props__.__dict__["placement_group_id"] = placement_group_id
1623
+ __props__.__dict__["placement_group_policy_respected"] = placement_group_policy_respected
1624
+ __props__.__dict__["private_ip"] = private_ip
1625
+ __props__.__dict__["private_networks"] = private_networks
1626
+ __props__.__dict__["project_id"] = project_id
1627
+ __props__.__dict__["public_ip"] = public_ip
1628
+ __props__.__dict__["public_ips"] = public_ips
1629
+ __props__.__dict__["replace_on_type_change"] = replace_on_type_change
1630
+ __props__.__dict__["root_volume"] = root_volume
1631
+ __props__.__dict__["routed_ip_enabled"] = routed_ip_enabled
1632
+ __props__.__dict__["security_group_id"] = security_group_id
1633
+ __props__.__dict__["state"] = state
1634
+ __props__.__dict__["tags"] = tags
1635
+ __props__.__dict__["type"] = type
1636
+ __props__.__dict__["user_data"] = user_data
1637
+ __props__.__dict__["zone"] = zone
1638
+ return InstanceServer(resource_name, opts=opts, __props__=__props__)
1639
+
1640
+ @property
1641
+ @pulumi.getter(name="additionalVolumeIds")
1642
+ def additional_volume_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
1643
+ """
1644
+ The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
1645
+ attached to the server. Updates to this field will trigger a stop/start of the server.
1646
+
1647
+ > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
1648
+
1649
+ > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
1650
+ """
1651
+ return pulumi.get(self, "additional_volume_ids")
1652
+
1653
+ @property
1654
+ @pulumi.getter(name="bootType")
1655
+ def boot_type(self) -> pulumi.Output[Optional[str]]:
1656
+ """
1657
+ The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
1658
+ """
1659
+ return pulumi.get(self, "boot_type")
1660
+
1661
+ @property
1662
+ @pulumi.getter(name="bootscriptId")
1663
+ def bootscript_id(self) -> pulumi.Output[str]:
1664
+ """
1665
+ The ID of the bootscript to use (set boot_type to `bootscript`).
1666
+ """
1667
+ return pulumi.get(self, "bootscript_id")
1668
+
1669
+ @property
1670
+ @pulumi.getter(name="cloudInit")
1671
+ def cloud_init(self) -> pulumi.Output[str]:
1672
+ """
1673
+ The cloud init script associated with this server
1674
+ """
1675
+ return pulumi.get(self, "cloud_init")
1676
+
1677
+ @property
1678
+ @pulumi.getter(name="enableDynamicIp")
1679
+ def enable_dynamic_ip(self) -> pulumi.Output[Optional[bool]]:
1680
+ """
1681
+ If true a dynamic IP will be attached to the server.
1682
+ """
1683
+ return pulumi.get(self, "enable_dynamic_ip")
1684
+
1685
+ @property
1686
+ @pulumi.getter(name="enableIpv6")
1687
+ def enable_ipv6(self) -> pulumi.Output[Optional[bool]]:
1688
+ """
1689
+ Determines if IPv6 is enabled for the server. Useful only with `routed_ip_enabled` as false, otherwise ipv6 is always supported.
1690
+ """
1691
+ return pulumi.get(self, "enable_ipv6")
1692
+
1693
+ @property
1694
+ @pulumi.getter
1695
+ def image(self) -> pulumi.Output[Optional[str]]:
1696
+ """
1697
+ The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
1698
+ to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
1699
+
1700
+ You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
1701
+
1702
+ To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
1703
+ """
1704
+ return pulumi.get(self, "image")
1705
+
1706
+ @property
1707
+ @pulumi.getter(name="ipId")
1708
+ def ip_id(self) -> pulumi.Output[Optional[str]]:
1709
+ """
1710
+ The ID of the reserved IP that is attached to the server.
1711
+ """
1712
+ return pulumi.get(self, "ip_id")
1713
+
1714
+ @property
1715
+ @pulumi.getter(name="ipIds")
1716
+ def ip_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
1717
+ """
1718
+ List of ID of reserved IPs that are attached to the server. Cannot be used with `ip_id`.
1719
+
1720
+ > `ip_id` to `ip_ids` migration: if moving the ip from the old `ip_id` field to the new `ip_ids`, it should not detach the ip.
1721
+ """
1722
+ return pulumi.get(self, "ip_ids")
1723
+
1724
+ @property
1725
+ @pulumi.getter(name="ipv6Address")
1726
+ def ipv6_address(self) -> pulumi.Output[str]:
1727
+ """
1728
+ The default ipv6 address routed to the server. ( Only set when enable_ipv6 is set to true )
1729
+ """
1730
+ return pulumi.get(self, "ipv6_address")
1731
+
1732
+ @property
1733
+ @pulumi.getter(name="ipv6Gateway")
1734
+ def ipv6_gateway(self) -> pulumi.Output[str]:
1735
+ """
1736
+ The ipv6 gateway address. ( Only set when enable_ipv6 is set to true )
1737
+ """
1738
+ return pulumi.get(self, "ipv6_gateway")
1739
+
1740
+ @property
1741
+ @pulumi.getter(name="ipv6PrefixLength")
1742
+ def ipv6_prefix_length(self) -> pulumi.Output[int]:
1743
+ """
1744
+ The prefix length of the ipv6 subnet routed to the server. ( Only set when enable_ipv6 is set to true )
1745
+ """
1746
+ return pulumi.get(self, "ipv6_prefix_length")
1747
+
1748
+ @property
1749
+ @pulumi.getter
1750
+ def name(self) -> pulumi.Output[str]:
1751
+ """
1752
+ The name of the server.
1753
+ """
1754
+ return pulumi.get(self, "name")
1755
+
1756
+ @property
1757
+ @pulumi.getter(name="organizationId")
1758
+ def organization_id(self) -> pulumi.Output[str]:
1759
+ """
1760
+ The organization ID the server is associated with.
1761
+ """
1762
+ return pulumi.get(self, "organization_id")
1763
+
1764
+ @property
1765
+ @pulumi.getter(name="placementGroupId")
1766
+ def placement_group_id(self) -> pulumi.Output[Optional[str]]:
1767
+ """
1768
+ The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group the server is attached to.
1769
+
1770
+
1771
+ > **Important:** When updating `placement_group_id` the `state` must be set to `stopped`, otherwise it will fail.
1772
+ """
1773
+ return pulumi.get(self, "placement_group_id")
1774
+
1775
+ @property
1776
+ @pulumi.getter(name="placementGroupPolicyRespected")
1777
+ def placement_group_policy_respected(self) -> pulumi.Output[bool]:
1778
+ """
1779
+ True when the placement group policy is respected.
1780
+ """
1781
+ return pulumi.get(self, "placement_group_policy_respected")
1782
+
1783
+ @property
1784
+ @pulumi.getter(name="privateIp")
1785
+ def private_ip(self) -> pulumi.Output[str]:
1786
+ """
1787
+ The Scaleway internal IP address of the server.
1788
+ """
1789
+ return pulumi.get(self, "private_ip")
1790
+
1791
+ @property
1792
+ @pulumi.getter(name="privateNetworks")
1793
+ def private_networks(self) -> pulumi.Output[Optional[Sequence['outputs.InstanceServerPrivateNetwork']]]:
1794
+ """
1795
+ The private network associated with the server.
1796
+ Use the `pn_id` key to attach a [private_network](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
1797
+ """
1798
+ return pulumi.get(self, "private_networks")
1799
+
1800
+ @property
1801
+ @pulumi.getter(name="projectId")
1802
+ def project_id(self) -> pulumi.Output[str]:
1803
+ """
1804
+ `project_id`) The ID of the project the server is associated with.
1805
+ """
1806
+ return pulumi.get(self, "project_id")
1807
+
1808
+ @property
1809
+ @pulumi.getter(name="publicIp")
1810
+ def public_ip(self) -> pulumi.Output[str]:
1811
+ """
1812
+ The public IP address of the server.
1813
+ """
1814
+ return pulumi.get(self, "public_ip")
1815
+
1816
+ @property
1817
+ @pulumi.getter(name="publicIps")
1818
+ def public_ips(self) -> pulumi.Output[Sequence['outputs.InstanceServerPublicIp']]:
1819
+ """
1820
+ The list of public IPs of the server.
1821
+ """
1822
+ return pulumi.get(self, "public_ips")
1823
+
1824
+ @property
1825
+ @pulumi.getter(name="replaceOnTypeChange")
1826
+ def replace_on_type_change(self) -> pulumi.Output[Optional[bool]]:
1827
+ """
1828
+ If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
1829
+ """
1830
+ return pulumi.get(self, "replace_on_type_change")
1831
+
1832
+ @property
1833
+ @pulumi.getter(name="rootVolume")
1834
+ def root_volume(self) -> pulumi.Output['outputs.InstanceServerRootVolume']:
1835
+ """
1836
+ Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
1837
+ """
1838
+ return pulumi.get(self, "root_volume")
1839
+
1840
+ @property
1841
+ @pulumi.getter(name="routedIpEnabled")
1842
+ def routed_ip_enabled(self) -> pulumi.Output[bool]:
1843
+ """
1844
+ If true, the server will support routed ips only. Changing it to true will migrate the server and its IP to routed type.
1845
+
1846
+ > **Important:** Enabling routed ip will restart the server
1847
+ """
1848
+ return pulumi.get(self, "routed_ip_enabled")
1849
+
1850
+ @property
1851
+ @pulumi.getter(name="securityGroupId")
1852
+ def security_group_id(self) -> pulumi.Output[str]:
1853
+ """
1854
+ The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
1855
+ """
1856
+ return pulumi.get(self, "security_group_id")
1857
+
1858
+ @property
1859
+ @pulumi.getter
1860
+ def state(self) -> pulumi.Output[Optional[str]]:
1861
+ """
1862
+ The state of the server. Possible values are: `started`, `stopped` or `standby`.
1863
+ """
1864
+ return pulumi.get(self, "state")
1865
+
1866
+ @property
1867
+ @pulumi.getter
1868
+ def tags(self) -> pulumi.Output[Optional[Sequence[str]]]:
1869
+ """
1870
+ The tags associated with the server.
1871
+ """
1872
+ return pulumi.get(self, "tags")
1873
+
1874
+ @property
1875
+ @pulumi.getter
1876
+ def type(self) -> pulumi.Output[str]:
1877
+ """
1878
+ The commercial type of the server.
1879
+ You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
1880
+ Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
1881
+ Use `replace_on_type_change` to trigger replacement instead of migration.
1882
+
1883
+ > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
1884
+ """
1885
+ return pulumi.get(self, "type")
1886
+
1887
+ @property
1888
+ @pulumi.getter(name="userData")
1889
+ def user_data(self) -> pulumi.Output[Mapping[str, str]]:
1890
+ """
1891
+ The user data associated with the server.
1892
+ Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
1893
+ You can define values using:
1894
+ - string
1895
+ - UTF-8 encoded file content using file
1896
+ - Binary files using filebase64.
1897
+ """
1898
+ return pulumi.get(self, "user_data")
1899
+
1900
+ @property
1901
+ @pulumi.getter
1902
+ def zone(self) -> pulumi.Output[str]:
1903
+ """
1904
+ `zone`) The zone in which the server should be created.
1905
+ """
1906
+ return pulumi.get(self, "zone")
1907
+