1. Packages
  2. Ionoscloud
  3. API Docs
  4. compute
  5. Server
IonosCloud v0.2.2 published on Monday, May 12, 2025 by ionos-cloud

ionoscloud.compute.Server

Explore with Pulumi AI

ionoscloud logo
IonosCloud v0.2.2 published on Monday, May 12, 2025 by ionos-cloud

    Manages a Server on IonosCloud.

    Example Usage

    This resource will create an operational server. After this section completes, the provisioner can be called.

    ENTERPRISE Server

    import * as pulumi from "@pulumi/pulumi";
    import * as ionoscloud from "@ionos-cloud/sdk-pulumi";
    import * as ionoscloud from "@pulumi/ionoscloud";
    import * as random from "@pulumi/random";
    
    const example = ionoscloud.compute.getImage({
        type: "HDD",
        cloudInit: "V1",
        imageAlias: "ubuntu:latest",
        location: "us/las",
    });
    const exampleDatacenter = new ionoscloud.compute.Datacenter("example", {
        name: "Datacenter Example",
        location: "us/las",
        description: "Datacenter Description",
        secAuthProtection: false,
    });
    const exampleLan = new ionoscloud.compute.Lan("example", {
        datacenterId: exampleDatacenter.id,
        "public": true,
        name: "Lan Example",
    });
    const exampleIPBlock = new ionoscloud.compute.IPBlock("example", {
        location: exampleDatacenter.location,
        size: 4,
        name: "IP Block Example",
    });
    const serverImagePassword = new random.index.Password("server_image_password", {
        length: 16,
        special: false,
    });
    const exampleServer = new ionoscloud.compute.Server("example", {
        name: "Server Example",
        datacenterId: exampleDatacenter.id,
        cores: 1,
        ram: 1024,
        availabilityZone: "ZONE_1",
        cpuFamily: "INTEL_XEON",
        imageName: example.then(example => example.name),
        imagePassword: serverImagePassword.result,
        type: "ENTERPRISE",
        volume: {
            name: "system",
            size: 5,
            diskType: "SSD Standard",
            userData: "foo",
            bus: "VIRTIO",
            availabilityZone: "ZONE_1",
        },
        nic: {
            lan: exampleLan.id,
            name: "system",
            dhcp: true,
            firewallActive: true,
            firewallType: "BIDIRECTIONAL",
            ips: [
                exampleIPBlock.ips[0],
                exampleIPBlock.ips[1],
            ],
            firewalls: [{
                protocol: "TCP",
                name: "SSH",
                portRangeStart: 22,
                portRangeEnd: 22,
                sourceMac: "00:0a:95:9d:68:17",
                sourceIp: exampleIPBlock.ips[2],
                targetIp: exampleIPBlock.ips[3],
                type: "EGRESS",
            }],
        },
        labels: [
            {
                key: "labelkey1",
                value: "labelvalue1",
            },
            {
                key: "labelkey2",
                value: "labelvalue2",
            },
        ],
    });
    
    import pulumi
    import pulumi_ionoscloud as ionoscloud
    import pulumi_random as random
    
    example = ionoscloud.compute.get_image(type="HDD",
        cloud_init="V1",
        image_alias="ubuntu:latest",
        location="us/las")
    example_datacenter = ionoscloud.compute.Datacenter("example",
        name="Datacenter Example",
        location="us/las",
        description="Datacenter Description",
        sec_auth_protection=False)
    example_lan = ionoscloud.compute.Lan("example",
        datacenter_id=example_datacenter.id,
        public=True,
        name="Lan Example")
    example_ip_block = ionoscloud.compute.IPBlock("example",
        location=example_datacenter.location,
        size=4,
        name="IP Block Example")
    server_image_password = random.index.Password("server_image_password",
        length=16,
        special=False)
    example_server = ionoscloud.compute.Server("example",
        name="Server Example",
        datacenter_id=example_datacenter.id,
        cores=1,
        ram=1024,
        availability_zone="ZONE_1",
        cpu_family="INTEL_XEON",
        image_name=example.name,
        image_password=server_image_password["result"],
        type="ENTERPRISE",
        volume={
            "name": "system",
            "size": 5,
            "disk_type": "SSD Standard",
            "user_data": "foo",
            "bus": "VIRTIO",
            "availability_zone": "ZONE_1",
        },
        nic={
            "lan": example_lan.id,
            "name": "system",
            "dhcp": True,
            "firewall_active": True,
            "firewall_type": "BIDIRECTIONAL",
            "ips": [
                example_ip_block.ips[0],
                example_ip_block.ips[1],
            ],
            "firewalls": [{
                "protocol": "TCP",
                "name": "SSH",
                "port_range_start": 22,
                "port_range_end": 22,
                "source_mac": "00:0a:95:9d:68:17",
                "source_ip": example_ip_block.ips[2],
                "target_ip": example_ip_block.ips[3],
                "type": "EGRESS",
            }],
        },
        labels=[
            {
                "key": "labelkey1",
                "value": "labelvalue1",
            },
            {
                "key": "labelkey2",
                "value": "labelvalue2",
            },
        ])
    
    package main
    
    import (
    	"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute"
    	"github.com/pulumi/pulumi-random/sdk/go/random"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := compute.GetImage(ctx, &compute.GetImageArgs{
    			Type:       pulumi.StringRef("HDD"),
    			CloudInit:  pulumi.StringRef("V1"),
    			ImageAlias: pulumi.StringRef("ubuntu:latest"),
    			Location:   pulumi.StringRef("us/las"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		exampleDatacenter, err := compute.NewDatacenter(ctx, "example", &compute.DatacenterArgs{
    			Name:              pulumi.String("Datacenter Example"),
    			Location:          pulumi.String("us/las"),
    			Description:       pulumi.String("Datacenter Description"),
    			SecAuthProtection: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		exampleLan, err := compute.NewLan(ctx, "example", &compute.LanArgs{
    			DatacenterId: exampleDatacenter.ID(),
    			Public:       pulumi.Bool(true),
    			Name:         pulumi.String("Lan Example"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleIPBlock, err := compute.NewIPBlock(ctx, "example", &compute.IPBlockArgs{
    			Location: exampleDatacenter.Location,
    			Size:     pulumi.Int(4),
    			Name:     pulumi.String("IP Block Example"),
    		})
    		if err != nil {
    			return err
    		}
    		serverImagePassword, err := random.NewPassword(ctx, "server_image_password", &random.PasswordArgs{
    			Length:  16,
    			Special: false,
    		})
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewServer(ctx, "example", &compute.ServerArgs{
    			Name:             pulumi.String("Server Example"),
    			DatacenterId:     exampleDatacenter.ID(),
    			Cores:            pulumi.Int(1),
    			Ram:              pulumi.Int(1024),
    			AvailabilityZone: pulumi.String("ZONE_1"),
    			CpuFamily:        pulumi.String("INTEL_XEON"),
    			ImageName:        pulumi.String(example.Name),
    			ImagePassword:    serverImagePassword.Result,
    			Type:             pulumi.String("ENTERPRISE"),
    			Volume: &compute.ServerVolumeArgs{
    				Name:             pulumi.String("system"),
    				Size:             pulumi.Int(5),
    				DiskType:         pulumi.String("SSD Standard"),
    				UserData:         pulumi.String("foo"),
    				Bus:              pulumi.String("VIRTIO"),
    				AvailabilityZone: pulumi.String("ZONE_1"),
    			},
    			Nic: &compute.ServerNicArgs{
    				Lan:            exampleLan.ID(),
    				Name:           pulumi.String("system"),
    				Dhcp:           pulumi.Bool(true),
    				FirewallActive: pulumi.Bool(true),
    				FirewallType:   pulumi.String("BIDIRECTIONAL"),
    				Ips: pulumi.StringArray{
    					exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {
    						return ips[0], nil
    					}).(pulumi.StringOutput),
    					exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {
    						return ips[1], nil
    					}).(pulumi.StringOutput),
    				},
    				Firewalls: compute.ServerNicFirewallArray{
    					&compute.ServerNicFirewallArgs{
    						Protocol:       pulumi.String("TCP"),
    						Name:           pulumi.String("SSH"),
    						PortRangeStart: pulumi.Int(22),
    						PortRangeEnd:   pulumi.Int(22),
    						SourceMac:      pulumi.String("00:0a:95:9d:68:17"),
    						SourceIp: exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {
    							return ips[2], nil
    						}).(pulumi.StringOutput),
    						TargetIp: exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {
    							return ips[3], nil
    						}).(pulumi.StringOutput),
    						Type: pulumi.String("EGRESS"),
    					},
    				},
    			},
    			Labels: compute.ServerLabelArray{
    				&compute.ServerLabelArgs{
    					Key:   pulumi.String("labelkey1"),
    					Value: pulumi.String("labelvalue1"),
    				},
    				&compute.ServerLabelArgs{
    					Key:   pulumi.String("labelkey2"),
    					Value: pulumi.String("labelvalue2"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;
    using Ionoscloud = Pulumi.Ionoscloud;
    using Random = Pulumi.Random;
    
    return await Deployment.RunAsync(() => 
    {
        var example = Ionoscloud.Compute.GetImage.Invoke(new()
        {
            Type = "HDD",
            CloudInit = "V1",
            ImageAlias = "ubuntu:latest",
            Location = "us/las",
        });
    
        var exampleDatacenter = new Ionoscloud.Compute.Datacenter("example", new()
        {
            Name = "Datacenter Example",
            Location = "us/las",
            Description = "Datacenter Description",
            SecAuthProtection = false,
        });
    
        var exampleLan = new Ionoscloud.Compute.Lan("example", new()
        {
            DatacenterId = exampleDatacenter.Id,
            Public = true,
            Name = "Lan Example",
        });
    
        var exampleIPBlock = new Ionoscloud.Compute.IPBlock("example", new()
        {
            Location = exampleDatacenter.Location,
            Size = 4,
            Name = "IP Block Example",
        });
    
        var serverImagePassword = new Random.Index.Password("server_image_password", new()
        {
            Length = 16,
            Special = false,
        });
    
        var exampleServer = new Ionoscloud.Compute.Server("example", new()
        {
            Name = "Server Example",
            DatacenterId = exampleDatacenter.Id,
            Cores = 1,
            Ram = 1024,
            AvailabilityZone = "ZONE_1",
            CpuFamily = "INTEL_XEON",
            ImageName = example.Apply(getImageResult => getImageResult.Name),
            ImagePassword = serverImagePassword.Result,
            Type = "ENTERPRISE",
            Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs
            {
                Name = "system",
                Size = 5,
                DiskType = "SSD Standard",
                UserData = "foo",
                Bus = "VIRTIO",
                AvailabilityZone = "ZONE_1",
            },
            Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs
            {
                Lan = exampleLan.Id,
                Name = "system",
                Dhcp = true,
                FirewallActive = true,
                FirewallType = "BIDIRECTIONAL",
                Ips = new[]
                {
                    exampleIPBlock.Ips.Apply(ips => ips[0]),
                    exampleIPBlock.Ips.Apply(ips => ips[1]),
                },
                Firewalls = new[]
                {
                    new Ionoscloud.Compute.Inputs.ServerNicFirewallArgs
                    {
                        Protocol = "TCP",
                        Name = "SSH",
                        PortRangeStart = 22,
                        PortRangeEnd = 22,
                        SourceMac = "00:0a:95:9d:68:17",
                        SourceIp = exampleIPBlock.Ips.Apply(ips => ips[2]),
                        TargetIp = exampleIPBlock.Ips.Apply(ips => ips[3]),
                        Type = "EGRESS",
                    },
                },
            },
            Labels = new[]
            {
                new Ionoscloud.Compute.Inputs.ServerLabelArgs
                {
                    Key = "labelkey1",
                    Value = "labelvalue1",
                },
                new Ionoscloud.Compute.Inputs.ServerLabelArgs
                {
                    Key = "labelkey2",
                    Value = "labelvalue2",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.ionoscloud.compute.ComputeFunctions;
    import com.pulumi.ionoscloud.compute.inputs.GetImageArgs;
    import com.pulumi.ionoscloud.compute.Datacenter;
    import com.pulumi.ionoscloud.compute.DatacenterArgs;
    import com.pulumi.ionoscloud.compute.Lan;
    import com.pulumi.ionoscloud.compute.LanArgs;
    import com.pulumi.ionoscloud.compute.IPBlock;
    import com.pulumi.ionoscloud.compute.IPBlockArgs;
    import com.pulumi.random.password;
    import com.pulumi.random.PasswordArgs;
    import com.pulumi.ionoscloud.compute.Server;
    import com.pulumi.ionoscloud.compute.ServerArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerLabelArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var example = ComputeFunctions.getImage(GetImageArgs.builder()
                .type("HDD")
                .cloudInit("V1")
                .imageAlias("ubuntu:latest")
                .location("us/las")
                .build());
    
            var exampleDatacenter = new Datacenter("exampleDatacenter", DatacenterArgs.builder()
                .name("Datacenter Example")
                .location("us/las")
                .description("Datacenter Description")
                .secAuthProtection(false)
                .build());
    
            var exampleLan = new Lan("exampleLan", LanArgs.builder()
                .datacenterId(exampleDatacenter.id())
                .public_(true)
                .name("Lan Example")
                .build());
    
            var exampleIPBlock = new IPBlock("exampleIPBlock", IPBlockArgs.builder()
                .location(exampleDatacenter.location())
                .size(4)
                .name("IP Block Example")
                .build());
    
            var serverImagePassword = new Password("serverImagePassword", PasswordArgs.builder()
                .length(16)
                .special(false)
                .build());
    
            var exampleServer = new Server("exampleServer", ServerArgs.builder()
                .name("Server Example")
                .datacenterId(exampleDatacenter.id())
                .cores(1)
                .ram(1024)
                .availabilityZone("ZONE_1")
                .cpuFamily("INTEL_XEON")
                .imageName(example.applyValue(getImageResult -> getImageResult.name()))
                .imagePassword(serverImagePassword.result())
                .type("ENTERPRISE")
                .volume(ServerVolumeArgs.builder()
                    .name("system")
                    .size(5)
                    .diskType("SSD Standard")
                    .userData("foo")
                    .bus("VIRTIO")
                    .availabilityZone("ZONE_1")
                    .build())
                .nic(ServerNicArgs.builder()
                    .lan(exampleLan.id())
                    .name("system")
                    .dhcp(true)
                    .firewallActive(true)
                    .firewallType("BIDIRECTIONAL")
                    .ips(                
                        exampleIPBlock.ips().applyValue(ips -> ips[0]),
                        exampleIPBlock.ips().applyValue(ips -> ips[1]))
                    .firewalls(ServerNicFirewallArgs.builder()
                        .protocol("TCP")
                        .name("SSH")
                        .portRangeStart(22)
                        .portRangeEnd(22)
                        .sourceMac("00:0a:95:9d:68:17")
                        .sourceIp(exampleIPBlock.ips().applyValue(ips -> ips[2]))
                        .targetIp(exampleIPBlock.ips().applyValue(ips -> ips[3]))
                        .type("EGRESS")
                        .build())
                    .build())
                .labels(            
                    ServerLabelArgs.builder()
                        .key("labelkey1")
                        .value("labelvalue1")
                        .build(),
                    ServerLabelArgs.builder()
                        .key("labelkey2")
                        .value("labelvalue2")
                        .build())
                .build());
    
        }
    }
    
    resources:
      exampleDatacenter:
        type: ionoscloud:compute:Datacenter
        name: example
        properties:
          name: Datacenter Example
          location: us/las
          description: Datacenter Description
          secAuthProtection: false
      exampleLan:
        type: ionoscloud:compute:Lan
        name: example
        properties:
          datacenterId: ${exampleDatacenter.id}
          public: true
          name: Lan Example
      exampleIPBlock:
        type: ionoscloud:compute:IPBlock
        name: example
        properties:
          location: ${exampleDatacenter.location}
          size: 4
          name: IP Block Example
      exampleServer:
        type: ionoscloud:compute:Server
        name: example
        properties:
          name: Server Example
          datacenterId: ${exampleDatacenter.id}
          cores: 1
          ram: 1024
          availabilityZone: ZONE_1
          cpuFamily: INTEL_XEON
          imageName: ${example.name}
          imagePassword: ${serverImagePassword.result}
          type: ENTERPRISE
          volume:
            name: system
            size: 5
            diskType: SSD Standard
            userData: foo
            bus: VIRTIO
            availabilityZone: ZONE_1
          nic:
            lan: ${exampleLan.id}
            name: system
            dhcp: true
            firewallActive: true
            firewallType: BIDIRECTIONAL
            ips:
              - ${exampleIPBlock.ips[0]}
              - ${exampleIPBlock.ips[1]}
            firewalls:
              - protocol: TCP
                name: SSH
                portRangeStart: 22
                portRangeEnd: 22
                sourceMac: 00:0a:95:9d:68:17
                sourceIp: ${exampleIPBlock.ips[2]}
                targetIp: ${exampleIPBlock.ips[3]}
                type: EGRESS
          labels:
            - key: labelkey1
              value: labelvalue1
            - key: labelkey2
              value: labelvalue2
      serverImagePassword:
        type: random:password
        name: server_image_password
        properties:
          length: 16
          special: false
    variables:
      example:
        fn::invoke:
          function: ionoscloud:compute:getImage
          arguments:
            type: HDD
            cloudInit: V1
            imageAlias: ubuntu:latest
            location: us/las
    

    With IPv6 Enabled

    import * as pulumi from "@pulumi/pulumi";
    import * as ionoscloud from "@ionos-cloud/sdk-pulumi";
    import * as random from "@pulumi/random";
    
    const example = new ionoscloud.compute.Datacenter("example", {
        name: "Resource Server Test",
        location: "us/las",
    });
    const webserverIpblock = new ionoscloud.compute.IPBlock("webserver_ipblock", {
        location: "us/las",
        size: 4,
        name: "webserver_ipblock",
    });
    const exampleLan = new ionoscloud.compute.Lan("example", {
        datacenterId: example.id,
        "public": true,
        name: "public",
        ipv6CidrBlock: "ipv6_cidr_block_from_lan",
    });
    const serverImagePassword = new random.index.Password("server_image_password", {
        length: 16,
        special: false,
    });
    const exampleServer = new ionoscloud.compute.Server("example", {
        name: "Resource Server Test",
        datacenterId: example.id,
        cores: 1,
        ram: 1024,
        availabilityZone: "ZONE_1",
        cpuFamily: "INTEL_XEON",
        imageName: "ubuntu:latest",
        imagePassword: serverImagePassword.result,
        type: "ENTERPRISE",
        volume: {
            name: "system",
            size: 5,
            diskType: "SSD Standard",
            userData: "foo",
            bus: "VIRTIO",
            availabilityZone: "ZONE_1",
        },
        nic: {
            lan: exampleLan.id,
            name: "system",
            dhcp: true,
            firewallActive: true,
            firewallType: "BIDIRECTIONAL",
            ips: [
                webserverIpblock.ips[0],
                webserverIpblock.ips[1],
            ],
            dhcpv6: true,
            ipv6CidrBlock: "ipv6_cidr_block_from_lan",
            ipv6Ips: [
                "ipv6_ip1",
                "ipv6_ip2",
                "ipv6_ip3",
            ],
            firewalls: [{
                protocol: "TCP",
                name: "SSH",
                portRangeStart: 22,
                portRangeEnd: 22,
                sourceMac: "00:0a:95:9d:68:17",
                sourceIp: webserverIpblock.ips[2],
                targetIp: webserverIpblock.ips[3],
                type: "EGRESS",
            }],
        },
    });
    
    import pulumi
    import pulumi_ionoscloud as ionoscloud
    import pulumi_random as random
    
    example = ionoscloud.compute.Datacenter("example",
        name="Resource Server Test",
        location="us/las")
    webserver_ipblock = ionoscloud.compute.IPBlock("webserver_ipblock",
        location="us/las",
        size=4,
        name="webserver_ipblock")
    example_lan = ionoscloud.compute.Lan("example",
        datacenter_id=example.id,
        public=True,
        name="public",
        ipv6_cidr_block="ipv6_cidr_block_from_lan")
    server_image_password = random.index.Password("server_image_password",
        length=16,
        special=False)
    example_server = ionoscloud.compute.Server("example",
        name="Resource Server Test",
        datacenter_id=example.id,
        cores=1,
        ram=1024,
        availability_zone="ZONE_1",
        cpu_family="INTEL_XEON",
        image_name="ubuntu:latest",
        image_password=server_image_password["result"],
        type="ENTERPRISE",
        volume={
            "name": "system",
            "size": 5,
            "disk_type": "SSD Standard",
            "user_data": "foo",
            "bus": "VIRTIO",
            "availability_zone": "ZONE_1",
        },
        nic={
            "lan": example_lan.id,
            "name": "system",
            "dhcp": True,
            "firewall_active": True,
            "firewall_type": "BIDIRECTIONAL",
            "ips": [
                webserver_ipblock.ips[0],
                webserver_ipblock.ips[1],
            ],
            "dhcpv6": True,
            "ipv6_cidr_block": "ipv6_cidr_block_from_lan",
            "ipv6_ips": [
                "ipv6_ip1",
                "ipv6_ip2",
                "ipv6_ip3",
            ],
            "firewalls": [{
                "protocol": "TCP",
                "name": "SSH",
                "port_range_start": 22,
                "port_range_end": 22,
                "source_mac": "00:0a:95:9d:68:17",
                "source_ip": webserver_ipblock.ips[2],
                "target_ip": webserver_ipblock.ips[3],
                "type": "EGRESS",
            }],
        })
    
    package main
    
    import (
    	"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute"
    	"github.com/pulumi/pulumi-random/sdk/go/random"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := compute.NewDatacenter(ctx, "example", &compute.DatacenterArgs{
    			Name:     pulumi.String("Resource Server Test"),
    			Location: pulumi.String("us/las"),
    		})
    		if err != nil {
    			return err
    		}
    		webserverIpblock, err := compute.NewIPBlock(ctx, "webserver_ipblock", &compute.IPBlockArgs{
    			Location: pulumi.String("us/las"),
    			Size:     pulumi.Int(4),
    			Name:     pulumi.String("webserver_ipblock"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleLan, err := compute.NewLan(ctx, "example", &compute.LanArgs{
    			DatacenterId:  example.ID(),
    			Public:        pulumi.Bool(true),
    			Name:          pulumi.String("public"),
    			Ipv6CidrBlock: pulumi.String("ipv6_cidr_block_from_lan"),
    		})
    		if err != nil {
    			return err
    		}
    		serverImagePassword, err := random.NewPassword(ctx, "server_image_password", &random.PasswordArgs{
    			Length:  16,
    			Special: false,
    		})
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewServer(ctx, "example", &compute.ServerArgs{
    			Name:             pulumi.String("Resource Server Test"),
    			DatacenterId:     example.ID(),
    			Cores:            pulumi.Int(1),
    			Ram:              pulumi.Int(1024),
    			AvailabilityZone: pulumi.String("ZONE_1"),
    			CpuFamily:        pulumi.String("INTEL_XEON"),
    			ImageName:        pulumi.String("ubuntu:latest"),
    			ImagePassword:    serverImagePassword.Result,
    			Type:             pulumi.String("ENTERPRISE"),
    			Volume: &compute.ServerVolumeArgs{
    				Name:             pulumi.String("system"),
    				Size:             pulumi.Int(5),
    				DiskType:         pulumi.String("SSD Standard"),
    				UserData:         pulumi.String("foo"),
    				Bus:              pulumi.String("VIRTIO"),
    				AvailabilityZone: pulumi.String("ZONE_1"),
    			},
    			Nic: &compute.ServerNicArgs{
    				Lan:            exampleLan.ID(),
    				Name:           pulumi.String("system"),
    				Dhcp:           pulumi.Bool(true),
    				FirewallActive: pulumi.Bool(true),
    				FirewallType:   pulumi.String("BIDIRECTIONAL"),
    				Ips: pulumi.StringArray{
    					webserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {
    						return ips[0], nil
    					}).(pulumi.StringOutput),
    					webserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {
    						return ips[1], nil
    					}).(pulumi.StringOutput),
    				},
    				Dhcpv6:        pulumi.Bool(true),
    				Ipv6CidrBlock: pulumi.String("ipv6_cidr_block_from_lan"),
    				Ipv6Ips: pulumi.StringArray{
    					pulumi.String("ipv6_ip1"),
    					pulumi.String("ipv6_ip2"),
    					pulumi.String("ipv6_ip3"),
    				},
    				Firewalls: compute.ServerNicFirewallArray{
    					&compute.ServerNicFirewallArgs{
    						Protocol:       pulumi.String("TCP"),
    						Name:           pulumi.String("SSH"),
    						PortRangeStart: pulumi.Int(22),
    						PortRangeEnd:   pulumi.Int(22),
    						SourceMac:      pulumi.String("00:0a:95:9d:68:17"),
    						SourceIp: webserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {
    							return ips[2], nil
    						}).(pulumi.StringOutput),
    						TargetIp: webserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {
    							return ips[3], nil
    						}).(pulumi.StringOutput),
    						Type: pulumi.String("EGRESS"),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;
    using Random = Pulumi.Random;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Ionoscloud.Compute.Datacenter("example", new()
        {
            Name = "Resource Server Test",
            Location = "us/las",
        });
    
        var webserverIpblock = new Ionoscloud.Compute.IPBlock("webserver_ipblock", new()
        {
            Location = "us/las",
            Size = 4,
            Name = "webserver_ipblock",
        });
    
        var exampleLan = new Ionoscloud.Compute.Lan("example", new()
        {
            DatacenterId = example.Id,
            Public = true,
            Name = "public",
            Ipv6CidrBlock = "ipv6_cidr_block_from_lan",
        });
    
        var serverImagePassword = new Random.Index.Password("server_image_password", new()
        {
            Length = 16,
            Special = false,
        });
    
        var exampleServer = new Ionoscloud.Compute.Server("example", new()
        {
            Name = "Resource Server Test",
            DatacenterId = example.Id,
            Cores = 1,
            Ram = 1024,
            AvailabilityZone = "ZONE_1",
            CpuFamily = "INTEL_XEON",
            ImageName = "ubuntu:latest",
            ImagePassword = serverImagePassword.Result,
            Type = "ENTERPRISE",
            Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs
            {
                Name = "system",
                Size = 5,
                DiskType = "SSD Standard",
                UserData = "foo",
                Bus = "VIRTIO",
                AvailabilityZone = "ZONE_1",
            },
            Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs
            {
                Lan = exampleLan.Id,
                Name = "system",
                Dhcp = true,
                FirewallActive = true,
                FirewallType = "BIDIRECTIONAL",
                Ips = new[]
                {
                    webserverIpblock.Ips.Apply(ips => ips[0]),
                    webserverIpblock.Ips.Apply(ips => ips[1]),
                },
                Dhcpv6 = true,
                Ipv6CidrBlock = "ipv6_cidr_block_from_lan",
                Ipv6Ips = new[]
                {
                    "ipv6_ip1",
                    "ipv6_ip2",
                    "ipv6_ip3",
                },
                Firewalls = new[]
                {
                    new Ionoscloud.Compute.Inputs.ServerNicFirewallArgs
                    {
                        Protocol = "TCP",
                        Name = "SSH",
                        PortRangeStart = 22,
                        PortRangeEnd = 22,
                        SourceMac = "00:0a:95:9d:68:17",
                        SourceIp = webserverIpblock.Ips.Apply(ips => ips[2]),
                        TargetIp = webserverIpblock.Ips.Apply(ips => ips[3]),
                        Type = "EGRESS",
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.ionoscloud.compute.Datacenter;
    import com.pulumi.ionoscloud.compute.DatacenterArgs;
    import com.pulumi.ionoscloud.compute.IPBlock;
    import com.pulumi.ionoscloud.compute.IPBlockArgs;
    import com.pulumi.ionoscloud.compute.Lan;
    import com.pulumi.ionoscloud.compute.LanArgs;
    import com.pulumi.random.password;
    import com.pulumi.random.PasswordArgs;
    import com.pulumi.ionoscloud.compute.Server;
    import com.pulumi.ionoscloud.compute.ServerArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Datacenter("example", DatacenterArgs.builder()
                .name("Resource Server Test")
                .location("us/las")
                .build());
    
            var webserverIpblock = new IPBlock("webserverIpblock", IPBlockArgs.builder()
                .location("us/las")
                .size(4)
                .name("webserver_ipblock")
                .build());
    
            var exampleLan = new Lan("exampleLan", LanArgs.builder()
                .datacenterId(example.id())
                .public_(true)
                .name("public")
                .ipv6CidrBlock("ipv6_cidr_block_from_lan")
                .build());
    
            var serverImagePassword = new Password("serverImagePassword", PasswordArgs.builder()
                .length(16)
                .special(false)
                .build());
    
            var exampleServer = new Server("exampleServer", ServerArgs.builder()
                .name("Resource Server Test")
                .datacenterId(example.id())
                .cores(1)
                .ram(1024)
                .availabilityZone("ZONE_1")
                .cpuFamily("INTEL_XEON")
                .imageName("ubuntu:latest")
                .imagePassword(serverImagePassword.result())
                .type("ENTERPRISE")
                .volume(ServerVolumeArgs.builder()
                    .name("system")
                    .size(5)
                    .diskType("SSD Standard")
                    .userData("foo")
                    .bus("VIRTIO")
                    .availabilityZone("ZONE_1")
                    .build())
                .nic(ServerNicArgs.builder()
                    .lan(exampleLan.id())
                    .name("system")
                    .dhcp(true)
                    .firewallActive(true)
                    .firewallType("BIDIRECTIONAL")
                    .ips(                
                        webserverIpblock.ips().applyValue(ips -> ips[0]),
                        webserverIpblock.ips().applyValue(ips -> ips[1]))
                    .dhcpv6(true)
                    .ipv6CidrBlock("ipv6_cidr_block_from_lan")
                    .ipv6Ips(                
                        "ipv6_ip1",
                        "ipv6_ip2",
                        "ipv6_ip3")
                    .firewalls(ServerNicFirewallArgs.builder()
                        .protocol("TCP")
                        .name("SSH")
                        .portRangeStart(22)
                        .portRangeEnd(22)
                        .sourceMac("00:0a:95:9d:68:17")
                        .sourceIp(webserverIpblock.ips().applyValue(ips -> ips[2]))
                        .targetIp(webserverIpblock.ips().applyValue(ips -> ips[3]))
                        .type("EGRESS")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: ionoscloud:compute:Datacenter
        properties:
          name: Resource Server Test
          location: us/las
      webserverIpblock:
        type: ionoscloud:compute:IPBlock
        name: webserver_ipblock
        properties:
          location: us/las
          size: 4
          name: webserver_ipblock
      exampleLan:
        type: ionoscloud:compute:Lan
        name: example
        properties:
          datacenterId: ${example.id}
          public: true
          name: public
          ipv6CidrBlock: ipv6_cidr_block_from_lan
      exampleServer:
        type: ionoscloud:compute:Server
        name: example
        properties:
          name: Resource Server Test
          datacenterId: ${example.id}
          cores: 1
          ram: 1024
          availabilityZone: ZONE_1
          cpuFamily: INTEL_XEON
          imageName: ubuntu:latest
          imagePassword: ${serverImagePassword.result}
          type: ENTERPRISE
          volume:
            name: system
            size: 5
            diskType: SSD Standard
            userData: foo
            bus: VIRTIO
            availabilityZone: ZONE_1
          nic:
            lan: ${exampleLan.id}
            name: system
            dhcp: true
            firewallActive: true
            firewallType: BIDIRECTIONAL
            ips:
              - ${webserverIpblock.ips[0]}
              - ${webserverIpblock.ips[1]}
            dhcpv6: true
            ipv6CidrBlock: ipv6_cidr_block_from_lan
            ipv6Ips:
              - ipv6_ip1
              - ipv6_ip2
              - ipv6_ip3
            firewalls:
              - protocol: TCP
                name: SSH
                portRangeStart: 22
                portRangeEnd: 22
                sourceMac: 00:0a:95:9d:68:17
                sourceIp: ${webserverIpblock.ips[2]}
                targetIp: ${webserverIpblock.ips[3]}
                type: EGRESS
      serverImagePassword:
        type: random:password
        name: server_image_password
        properties:
          length: 16
          special: false
    

    CUBE Server

    import * as pulumi from "@pulumi/pulumi";
    import * as ionoscloud from "@ionos-cloud/sdk-pulumi";
    import * as ionoscloud from "@pulumi/ionoscloud";
    import * as random from "@pulumi/random";
    
    const example = ionoscloud.compute.getTemplate({
        name: "Basic Cube XS",
    });
    const exampleDatacenter = new ionoscloud.compute.Datacenter("example", {
        name: "Datacenter Example",
        location: "de/txl",
    });
    const exampleLan = new ionoscloud.compute.Lan("example", {
        datacenterId: exampleDatacenter.id,
        "public": true,
        name: "Lan Example",
    });
    const serverImagePassword = new random.index.Password("server_image_password", {
        length: 16,
        special: false,
    });
    const exampleServer = new ionoscloud.compute.Server("example", {
        name: "Server Example",
        availabilityZone: "ZONE_2",
        imageName: "ubuntu:latest",
        type: "CUBE",
        templateUuid: example.then(example => example.id),
        imagePassword: serverImagePassword.result,
        datacenterId: exampleDatacenter.id,
        volume: {
            name: "Volume Example",
            licenceType: "LINUX",
            diskType: "DAS",
        },
        nic: {
            lan: exampleLan.id,
            name: "Nic Example",
            dhcp: true,
            firewallActive: true,
        },
    });
    
    import pulumi
    import pulumi_ionoscloud as ionoscloud
    import pulumi_random as random
    
    example = ionoscloud.compute.get_template(name="Basic Cube XS")
    example_datacenter = ionoscloud.compute.Datacenter("example",
        name="Datacenter Example",
        location="de/txl")
    example_lan = ionoscloud.compute.Lan("example",
        datacenter_id=example_datacenter.id,
        public=True,
        name="Lan Example")
    server_image_password = random.index.Password("server_image_password",
        length=16,
        special=False)
    example_server = ionoscloud.compute.Server("example",
        name="Server Example",
        availability_zone="ZONE_2",
        image_name="ubuntu:latest",
        type="CUBE",
        template_uuid=example.id,
        image_password=server_image_password["result"],
        datacenter_id=example_datacenter.id,
        volume={
            "name": "Volume Example",
            "licence_type": "LINUX",
            "disk_type": "DAS",
        },
        nic={
            "lan": example_lan.id,
            "name": "Nic Example",
            "dhcp": True,
            "firewall_active": True,
        })
    
    package main
    
    import (
    	"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute"
    	"github.com/pulumi/pulumi-random/sdk/go/random"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := compute.GetTemplate(ctx, &compute.GetTemplateArgs{
    			Name: pulumi.StringRef("Basic Cube XS"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		exampleDatacenter, err := compute.NewDatacenter(ctx, "example", &compute.DatacenterArgs{
    			Name:     pulumi.String("Datacenter Example"),
    			Location: pulumi.String("de/txl"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleLan, err := compute.NewLan(ctx, "example", &compute.LanArgs{
    			DatacenterId: exampleDatacenter.ID(),
    			Public:       pulumi.Bool(true),
    			Name:         pulumi.String("Lan Example"),
    		})
    		if err != nil {
    			return err
    		}
    		serverImagePassword, err := random.NewPassword(ctx, "server_image_password", &random.PasswordArgs{
    			Length:  16,
    			Special: false,
    		})
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewServer(ctx, "example", &compute.ServerArgs{
    			Name:             pulumi.String("Server Example"),
    			AvailabilityZone: pulumi.String("ZONE_2"),
    			ImageName:        pulumi.String("ubuntu:latest"),
    			Type:             pulumi.String("CUBE"),
    			TemplateUuid:     pulumi.String(example.Id),
    			ImagePassword:    serverImagePassword.Result,
    			DatacenterId:     exampleDatacenter.ID(),
    			Volume: &compute.ServerVolumeArgs{
    				Name:        pulumi.String("Volume Example"),
    				LicenceType: pulumi.String("LINUX"),
    				DiskType:    pulumi.String("DAS"),
    			},
    			Nic: &compute.ServerNicArgs{
    				Lan:            exampleLan.ID(),
    				Name:           pulumi.String("Nic Example"),
    				Dhcp:           pulumi.Bool(true),
    				FirewallActive: pulumi.Bool(true),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;
    using Ionoscloud = Pulumi.Ionoscloud;
    using Random = Pulumi.Random;
    
    return await Deployment.RunAsync(() => 
    {
        var example = Ionoscloud.Compute.GetTemplate.Invoke(new()
        {
            Name = "Basic Cube XS",
        });
    
        var exampleDatacenter = new Ionoscloud.Compute.Datacenter("example", new()
        {
            Name = "Datacenter Example",
            Location = "de/txl",
        });
    
        var exampleLan = new Ionoscloud.Compute.Lan("example", new()
        {
            DatacenterId = exampleDatacenter.Id,
            Public = true,
            Name = "Lan Example",
        });
    
        var serverImagePassword = new Random.Index.Password("server_image_password", new()
        {
            Length = 16,
            Special = false,
        });
    
        var exampleServer = new Ionoscloud.Compute.Server("example", new()
        {
            Name = "Server Example",
            AvailabilityZone = "ZONE_2",
            ImageName = "ubuntu:latest",
            Type = "CUBE",
            TemplateUuid = example.Apply(getTemplateResult => getTemplateResult.Id),
            ImagePassword = serverImagePassword.Result,
            DatacenterId = exampleDatacenter.Id,
            Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs
            {
                Name = "Volume Example",
                LicenceType = "LINUX",
                DiskType = "DAS",
            },
            Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs
            {
                Lan = exampleLan.Id,
                Name = "Nic Example",
                Dhcp = true,
                FirewallActive = true,
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.ionoscloud.compute.ComputeFunctions;
    import com.pulumi.ionoscloud.compute.inputs.GetTemplateArgs;
    import com.pulumi.ionoscloud.compute.Datacenter;
    import com.pulumi.ionoscloud.compute.DatacenterArgs;
    import com.pulumi.ionoscloud.compute.Lan;
    import com.pulumi.ionoscloud.compute.LanArgs;
    import com.pulumi.random.password;
    import com.pulumi.random.PasswordArgs;
    import com.pulumi.ionoscloud.compute.Server;
    import com.pulumi.ionoscloud.compute.ServerArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var example = ComputeFunctions.getTemplate(GetTemplateArgs.builder()
                .name("Basic Cube XS")
                .build());
    
            var exampleDatacenter = new Datacenter("exampleDatacenter", DatacenterArgs.builder()
                .name("Datacenter Example")
                .location("de/txl")
                .build());
    
            var exampleLan = new Lan("exampleLan", LanArgs.builder()
                .datacenterId(exampleDatacenter.id())
                .public_(true)
                .name("Lan Example")
                .build());
    
            var serverImagePassword = new Password("serverImagePassword", PasswordArgs.builder()
                .length(16)
                .special(false)
                .build());
    
            var exampleServer = new Server("exampleServer", ServerArgs.builder()
                .name("Server Example")
                .availabilityZone("ZONE_2")
                .imageName("ubuntu:latest")
                .type("CUBE")
                .templateUuid(example.applyValue(getTemplateResult -> getTemplateResult.id()))
                .imagePassword(serverImagePassword.result())
                .datacenterId(exampleDatacenter.id())
                .volume(ServerVolumeArgs.builder()
                    .name("Volume Example")
                    .licenceType("LINUX")
                    .diskType("DAS")
                    .build())
                .nic(ServerNicArgs.builder()
                    .lan(exampleLan.id())
                    .name("Nic Example")
                    .dhcp(true)
                    .firewallActive(true)
                    .build())
                .build());
    
        }
    }
    
    resources:
      exampleDatacenter:
        type: ionoscloud:compute:Datacenter
        name: example
        properties:
          name: Datacenter Example
          location: de/txl
      exampleLan:
        type: ionoscloud:compute:Lan
        name: example
        properties:
          datacenterId: ${exampleDatacenter.id}
          public: true
          name: Lan Example
      exampleServer:
        type: ionoscloud:compute:Server
        name: example
        properties:
          name: Server Example
          availabilityZone: ZONE_2
          imageName: ubuntu:latest
          type: CUBE
          templateUuid: ${example.id}
          imagePassword: ${serverImagePassword.result}
          datacenterId: ${exampleDatacenter.id}
          volume:
            name: Volume Example
            licenceType: LINUX
            diskType: DAS
          nic:
            lan: ${exampleLan.id}
            name: Nic Example
            dhcp: true
            firewallActive: true
      serverImagePassword:
        type: random:password
        name: server_image_password
        properties:
          length: 16
          special: false
    variables:
      example:
        fn::invoke:
          function: ionoscloud:compute:getTemplate
          arguments:
            name: Basic Cube XS
    

    Server that boots from CDROM

    import * as pulumi from "@pulumi/pulumi";
    import * as ionoscloud from "@ionos-cloud/sdk-pulumi";
    import * as ionoscloud from "@pulumi/ionoscloud";
    
    const cdromDatacenter = new ionoscloud.compute.Datacenter("cdrom", {
        name: "CDROM Test",
        location: "de/txl",
        description: "CDROM image test",
        secAuthProtection: false,
    });
    const _public = new ionoscloud.compute.Lan("public", {
        datacenterId: cdromDatacenter.id,
        "public": true,
        name: "Uplink",
    });
    const cdrom = ionoscloud.compute.getImage({
        imageAlias: "ubuntu:latest_iso",
        type: "CDROM",
        location: "de/txl",
        cloudInit: "NONE",
    });
    const test = new ionoscloud.compute.Server("test", {
        datacenterId: cdromDatacenter.id,
        name: "ubuntu_latest_from_cdrom",
        cores: 1,
        ram: 1024,
        cpuFamily: cdromDatacenter.cpuArchitectures.apply(cpuArchitectures => cpuArchitectures[0].cpuFamily),
        type: "ENTERPRISE",
        volume: {
            name: "hdd0",
            diskType: "HDD",
            size: 50,
            licenceType: "OTHER",
        },
        nic: {
            lan: 1,
            dhcp: true,
            firewallActive: false,
        },
    });
    
    import pulumi
    import pulumi_ionoscloud as ionoscloud
    
    cdrom_datacenter = ionoscloud.compute.Datacenter("cdrom",
        name="CDROM Test",
        location="de/txl",
        description="CDROM image test",
        sec_auth_protection=False)
    public = ionoscloud.compute.Lan("public",
        datacenter_id=cdrom_datacenter.id,
        public=True,
        name="Uplink")
    cdrom = ionoscloud.compute.get_image(image_alias="ubuntu:latest_iso",
        type="CDROM",
        location="de/txl",
        cloud_init="NONE")
    test = ionoscloud.compute.Server("test",
        datacenter_id=cdrom_datacenter.id,
        name="ubuntu_latest_from_cdrom",
        cores=1,
        ram=1024,
        cpu_family=cdrom_datacenter.cpu_architectures[0].cpu_family,
        type="ENTERPRISE",
        volume={
            "name": "hdd0",
            "disk_type": "HDD",
            "size": 50,
            "licence_type": "OTHER",
        },
        nic={
            "lan": 1,
            "dhcp": True,
            "firewall_active": False,
        })
    
    package main
    
    import (
    	"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		cdromDatacenter, err := compute.NewDatacenter(ctx, "cdrom", &compute.DatacenterArgs{
    			Name:              pulumi.String("CDROM Test"),
    			Location:          pulumi.String("de/txl"),
    			Description:       pulumi.String("CDROM image test"),
    			SecAuthProtection: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewLan(ctx, "public", &compute.LanArgs{
    			DatacenterId: cdromDatacenter.ID(),
    			Public:       pulumi.Bool(true),
    			Name:         pulumi.String("Uplink"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = compute.GetImage(ctx, &compute.GetImageArgs{
    			ImageAlias: pulumi.StringRef("ubuntu:latest_iso"),
    			Type:       pulumi.StringRef("CDROM"),
    			Location:   pulumi.StringRef("de/txl"),
    			CloudInit:  pulumi.StringRef("NONE"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewServer(ctx, "test", &compute.ServerArgs{
    			DatacenterId: cdromDatacenter.ID(),
    			Name:         pulumi.String("ubuntu_latest_from_cdrom"),
    			Cores:        pulumi.Int(1),
    			Ram:          pulumi.Int(1024),
    			CpuFamily: pulumi.String(cdromDatacenter.CpuArchitectures.ApplyT(func(cpuArchitectures []compute.DatacenterCpuArchitecture) (*string, error) {
    				return &cpuArchitectures[0].CpuFamily, nil
    			}).(pulumi.StringPtrOutput)),
    			Type: pulumi.String("ENTERPRISE"),
    			Volume: &compute.ServerVolumeArgs{
    				Name:        pulumi.String("hdd0"),
    				DiskType:    pulumi.String("HDD"),
    				Size:        pulumi.Int(50),
    				LicenceType: pulumi.String("OTHER"),
    			},
    			Nic: &compute.ServerNicArgs{
    				Lan:            pulumi.Int(1),
    				Dhcp:           pulumi.Bool(true),
    				FirewallActive: pulumi.Bool(false),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;
    using Ionoscloud = Pulumi.Ionoscloud;
    
    return await Deployment.RunAsync(() => 
    {
        var cdromDatacenter = new Ionoscloud.Compute.Datacenter("cdrom", new()
        {
            Name = "CDROM Test",
            Location = "de/txl",
            Description = "CDROM image test",
            SecAuthProtection = false,
        });
    
        var @public = new Ionoscloud.Compute.Lan("public", new()
        {
            DatacenterId = cdromDatacenter.Id,
            Public = true,
            Name = "Uplink",
        });
    
        var cdrom = Ionoscloud.Compute.GetImage.Invoke(new()
        {
            ImageAlias = "ubuntu:latest_iso",
            Type = "CDROM",
            Location = "de/txl",
            CloudInit = "NONE",
        });
    
        var test = new Ionoscloud.Compute.Server("test", new()
        {
            DatacenterId = cdromDatacenter.Id,
            Name = "ubuntu_latest_from_cdrom",
            Cores = 1,
            Ram = 1024,
            CpuFamily = cdromDatacenter.CpuArchitectures.Apply(cpuArchitectures => cpuArchitectures[0].CpuFamily),
            Type = "ENTERPRISE",
            Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs
            {
                Name = "hdd0",
                DiskType = "HDD",
                Size = 50,
                LicenceType = "OTHER",
            },
            Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs
            {
                Lan = 1,
                Dhcp = true,
                FirewallActive = false,
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.ionoscloud.compute.Datacenter;
    import com.pulumi.ionoscloud.compute.DatacenterArgs;
    import com.pulumi.ionoscloud.compute.Lan;
    import com.pulumi.ionoscloud.compute.LanArgs;
    import com.pulumi.ionoscloud.compute.ComputeFunctions;
    import com.pulumi.ionoscloud.compute.inputs.GetImageArgs;
    import com.pulumi.ionoscloud.compute.Server;
    import com.pulumi.ionoscloud.compute.ServerArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;
    import com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cdromDatacenter = new Datacenter("cdromDatacenter", DatacenterArgs.builder()
                .name("CDROM Test")
                .location("de/txl")
                .description("CDROM image test")
                .secAuthProtection(false)
                .build());
    
            var public_ = new Lan("public", LanArgs.builder()
                .datacenterId(cdromDatacenter.id())
                .public_(true)
                .name("Uplink")
                .build());
    
            final var cdrom = ComputeFunctions.getImage(GetImageArgs.builder()
                .imageAlias("ubuntu:latest_iso")
                .type("CDROM")
                .location("de/txl")
                .cloudInit("NONE")
                .build());
    
            var test = new Server("test", ServerArgs.builder()
                .datacenterId(cdromDatacenter.id())
                .name("ubuntu_latest_from_cdrom")
                .cores(1)
                .ram(1024)
                .cpuFamily(cdromDatacenter.cpuArchitectures().applyValue(cpuArchitectures -> cpuArchitectures[0].cpuFamily()))
                .type("ENTERPRISE")
                .volume(ServerVolumeArgs.builder()
                    .name("hdd0")
                    .diskType("HDD")
                    .size(50)
                    .licenceType("OTHER")
                    .build())
                .nic(ServerNicArgs.builder()
                    .lan(1)
                    .dhcp(true)
                    .firewallActive(false)
                    .build())
                .build());
    
        }
    }
    
    resources:
      cdromDatacenter:
        type: ionoscloud:compute:Datacenter
        name: cdrom
        properties:
          name: CDROM Test
          location: de/txl
          description: CDROM image test
          secAuthProtection: false
      public:
        type: ionoscloud:compute:Lan
        properties:
          datacenterId: ${cdromDatacenter.id}
          public: true
          name: Uplink
      test:
        type: ionoscloud:compute:Server
        properties:
          datacenterId: ${cdromDatacenter.id}
          name: ubuntu_latest_from_cdrom
          cores: 1
          ram: 1024
          cpuFamily: ${cdromDatacenter.cpuArchitectures[0].cpuFamily}
          type: ENTERPRISE
          volume:
            name: hdd0
            diskType: HDD
            size: 50
            licenceType: OTHER
          nic:
            lan: 1
            dhcp: true
            firewallActive: false
    variables:
      cdrom:
        fn::invoke:
          function: ionoscloud:compute:getImage
          arguments:
            imageAlias: ubuntu:latest_iso
            type: CDROM
            location: de/txl
            cloudInit: NONE
    

    Notes

    Please note that for any secondary volume, you need to set the licence_type property to UNKNOWN

    ⚠️ Note: Important for deleting an firewall rule from within a list of inline resources defined on the same nic. There is one limitation to removing one firewall rule from the middle of the list of firewall rules. The existing rules will be modified and the last one will be deleted.

    Create Server Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Server(name: string, args: ServerArgs, opts?: CustomResourceOptions);
    @overload
    def Server(resource_name: str,
               args: ServerArgs,
               opts: Optional[ResourceOptions] = None)
    
    @overload
    def Server(resource_name: str,
               opts: Optional[ResourceOptions] = None,
               datacenter_id: Optional[str] = None,
               volume: Optional[ServerVolumeArgs] = None,
               image_password: Optional[str] = None,
               labels: Optional[Sequence[ServerLabelArgs]] = None,
               cores: Optional[int] = None,
               cpu_family: Optional[str] = None,
               boot_cdrom: Optional[str] = None,
               firewallrule_ids: Optional[Sequence[str]] = None,
               hostname: Optional[str] = None,
               image_name: Optional[str] = None,
               allow_replace: Optional[bool] = None,
               boot_image: Optional[str] = None,
               name: Optional[str] = None,
               nic: Optional[ServerNicArgs] = None,
               ram: Optional[int] = None,
               security_groups_ids: Optional[Sequence[str]] = None,
               ssh_key_paths: Optional[Sequence[str]] = None,
               ssh_keys: Optional[Sequence[str]] = None,
               template_uuid: Optional[str] = None,
               type: Optional[str] = None,
               vm_state: Optional[str] = None,
               availability_zone: Optional[str] = None)
    func NewServer(ctx *Context, name string, args ServerArgs, opts ...ResourceOption) (*Server, error)
    public Server(string name, ServerArgs args, CustomResourceOptions? opts = null)
    public Server(String name, ServerArgs args)
    public Server(String name, ServerArgs args, CustomResourceOptions options)
    
    type: ionoscloud:compute:Server
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args ServerArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args ServerArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args ServerArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args ServerArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args ServerArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var serverResource = new Ionoscloud.Compute.Server("serverResource", new()
    {
        DatacenterId = "string",
        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs
        {
            DiskType = "string",
            LicenceType = "string",
            Name = "string",
            Bus = "string",
            AvailabilityZone = "string",
            DeviceNumber = 0,
            DiscVirtioHotPlug = false,
            DiscVirtioHotUnplug = false,
            BackupUnitId = "string",
            BootServer = "string",
            CpuHotPlug = false,
            NicHotPlug = false,
            NicHotUnplug = false,
            PciSlot = 0,
            RamHotPlug = false,
            Size = 0,
            UserData = "string",
        },
        ImagePassword = "string",
        Labels = new[]
        {
            new Ionoscloud.Compute.Inputs.ServerLabelArgs
            {
                Key = "string",
                Value = "string",
            },
        },
        Cores = 0,
        CpuFamily = "string",
        FirewallruleIds = new[]
        {
            "string",
        },
        Hostname = "string",
        ImageName = "string",
        AllowReplace = false,
        BootImage = "string",
        Name = "string",
        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs
        {
            Lan = 0,
            Id = "string",
            Ipv6CidrBlock = "string",
            FirewallActive = false,
            FirewallType = "string",
            Firewalls = new[]
            {
                new Ionoscloud.Compute.Inputs.ServerNicFirewallArgs
                {
                    Protocol = "string",
                    IcmpCode = "string",
                    IcmpType = "string",
                    Id = "string",
                    Name = "string",
                    PortRangeEnd = 0,
                    PortRangeStart = 0,
                    SourceIp = "string",
                    SourceMac = "string",
                    TargetIp = "string",
                    Type = "string",
                },
            },
            DeviceNumber = 0,
            Ips = new[]
            {
                "string",
            },
            Dhcpv6 = false,
            Ipv6Ips = new[]
            {
                "string",
            },
            Dhcp = false,
            Mac = "string",
            Name = "string",
            PciSlot = 0,
            SecurityGroupsIds = new[]
            {
                "string",
            },
        },
        Ram = 0,
        SecurityGroupsIds = new[]
        {
            "string",
        },
        SshKeys = new[]
        {
            "string",
        },
        TemplateUuid = "string",
        Type = "string",
        VmState = "string",
        AvailabilityZone = "string",
    });
    
    example, err := compute.NewServer(ctx, "serverResource", &compute.ServerArgs{
    	DatacenterId: pulumi.String("string"),
    	Volume: &compute.ServerVolumeArgs{
    		DiskType:            pulumi.String("string"),
    		LicenceType:         pulumi.String("string"),
    		Name:                pulumi.String("string"),
    		Bus:                 pulumi.String("string"),
    		AvailabilityZone:    pulumi.String("string"),
    		DeviceNumber:        pulumi.Int(0),
    		DiscVirtioHotPlug:   pulumi.Bool(false),
    		DiscVirtioHotUnplug: pulumi.Bool(false),
    		BackupUnitId:        pulumi.String("string"),
    		BootServer:          pulumi.String("string"),
    		CpuHotPlug:          pulumi.Bool(false),
    		NicHotPlug:          pulumi.Bool(false),
    		NicHotUnplug:        pulumi.Bool(false),
    		PciSlot:             pulumi.Int(0),
    		RamHotPlug:          pulumi.Bool(false),
    		Size:                pulumi.Int(0),
    		UserData:            pulumi.String("string"),
    	},
    	ImagePassword: pulumi.String("string"),
    	Labels: compute.ServerLabelArray{
    		&compute.ServerLabelArgs{
    			Key:   pulumi.String("string"),
    			Value: pulumi.String("string"),
    		},
    	},
    	Cores:     pulumi.Int(0),
    	CpuFamily: pulumi.String("string"),
    	FirewallruleIds: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	Hostname:     pulumi.String("string"),
    	ImageName:    pulumi.String("string"),
    	AllowReplace: pulumi.Bool(false),
    	BootImage:    pulumi.String("string"),
    	Name:         pulumi.String("string"),
    	Nic: &compute.ServerNicArgs{
    		Lan:            pulumi.Int(0),
    		Id:             pulumi.String("string"),
    		Ipv6CidrBlock:  pulumi.String("string"),
    		FirewallActive: pulumi.Bool(false),
    		FirewallType:   pulumi.String("string"),
    		Firewalls: compute.ServerNicFirewallArray{
    			&compute.ServerNicFirewallArgs{
    				Protocol:       pulumi.String("string"),
    				IcmpCode:       pulumi.String("string"),
    				IcmpType:       pulumi.String("string"),
    				Id:             pulumi.String("string"),
    				Name:           pulumi.String("string"),
    				PortRangeEnd:   pulumi.Int(0),
    				PortRangeStart: pulumi.Int(0),
    				SourceIp:       pulumi.String("string"),
    				SourceMac:      pulumi.String("string"),
    				TargetIp:       pulumi.String("string"),
    				Type:           pulumi.String("string"),
    			},
    		},
    		DeviceNumber: pulumi.Int(0),
    		Ips: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    		Dhcpv6: pulumi.Bool(false),
    		Ipv6Ips: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    		Dhcp:    pulumi.Bool(false),
    		Mac:     pulumi.String("string"),
    		Name:    pulumi.String("string"),
    		PciSlot: pulumi.Int(0),
    		SecurityGroupsIds: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    	},
    	Ram: pulumi.Int(0),
    	SecurityGroupsIds: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	SshKeys: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	TemplateUuid:     pulumi.String("string"),
    	Type:             pulumi.String("string"),
    	VmState:          pulumi.String("string"),
    	AvailabilityZone: pulumi.String("string"),
    })
    
    var serverResource = new Server("serverResource", ServerArgs.builder()
        .datacenterId("string")
        .volume(ServerVolumeArgs.builder()
            .diskType("string")
            .licenceType("string")
            .name("string")
            .bus("string")
            .availabilityZone("string")
            .deviceNumber(0)
            .discVirtioHotPlug(false)
            .discVirtioHotUnplug(false)
            .backupUnitId("string")
            .bootServer("string")
            .cpuHotPlug(false)
            .nicHotPlug(false)
            .nicHotUnplug(false)
            .pciSlot(0)
            .ramHotPlug(false)
            .size(0)
            .userData("string")
            .build())
        .imagePassword("string")
        .labels(ServerLabelArgs.builder()
            .key("string")
            .value("string")
            .build())
        .cores(0)
        .cpuFamily("string")
        .firewallruleIds("string")
        .hostname("string")
        .imageName("string")
        .allowReplace(false)
        .bootImage("string")
        .name("string")
        .nic(ServerNicArgs.builder()
            .lan(0)
            .id("string")
            .ipv6CidrBlock("string")
            .firewallActive(false)
            .firewallType("string")
            .firewalls(ServerNicFirewallArgs.builder()
                .protocol("string")
                .icmpCode("string")
                .icmpType("string")
                .id("string")
                .name("string")
                .portRangeEnd(0)
                .portRangeStart(0)
                .sourceIp("string")
                .sourceMac("string")
                .targetIp("string")
                .type("string")
                .build())
            .deviceNumber(0)
            .ips("string")
            .dhcpv6(false)
            .ipv6Ips("string")
            .dhcp(false)
            .mac("string")
            .name("string")
            .pciSlot(0)
            .securityGroupsIds("string")
            .build())
        .ram(0)
        .securityGroupsIds("string")
        .sshKeys("string")
        .templateUuid("string")
        .type("string")
        .vmState("string")
        .availabilityZone("string")
        .build());
    
    server_resource = ionoscloud.compute.Server("serverResource",
        datacenter_id="string",
        volume={
            "disk_type": "string",
            "licence_type": "string",
            "name": "string",
            "bus": "string",
            "availability_zone": "string",
            "device_number": 0,
            "disc_virtio_hot_plug": False,
            "disc_virtio_hot_unplug": False,
            "backup_unit_id": "string",
            "boot_server": "string",
            "cpu_hot_plug": False,
            "nic_hot_plug": False,
            "nic_hot_unplug": False,
            "pci_slot": 0,
            "ram_hot_plug": False,
            "size": 0,
            "user_data": "string",
        },
        image_password="string",
        labels=[{
            "key": "string",
            "value": "string",
        }],
        cores=0,
        cpu_family="string",
        firewallrule_ids=["string"],
        hostname="string",
        image_name="string",
        allow_replace=False,
        boot_image="string",
        name="string",
        nic={
            "lan": 0,
            "id": "string",
            "ipv6_cidr_block": "string",
            "firewall_active": False,
            "firewall_type": "string",
            "firewalls": [{
                "protocol": "string",
                "icmp_code": "string",
                "icmp_type": "string",
                "id": "string",
                "name": "string",
                "port_range_end": 0,
                "port_range_start": 0,
                "source_ip": "string",
                "source_mac": "string",
                "target_ip": "string",
                "type": "string",
            }],
            "device_number": 0,
            "ips": ["string"],
            "dhcpv6": False,
            "ipv6_ips": ["string"],
            "dhcp": False,
            "mac": "string",
            "name": "string",
            "pci_slot": 0,
            "security_groups_ids": ["string"],
        },
        ram=0,
        security_groups_ids=["string"],
        ssh_keys=["string"],
        template_uuid="string",
        type="string",
        vm_state="string",
        availability_zone="string")
    
    const serverResource = new ionoscloud.compute.Server("serverResource", {
        datacenterId: "string",
        volume: {
            diskType: "string",
            licenceType: "string",
            name: "string",
            bus: "string",
            availabilityZone: "string",
            deviceNumber: 0,
            discVirtioHotPlug: false,
            discVirtioHotUnplug: false,
            backupUnitId: "string",
            bootServer: "string",
            cpuHotPlug: false,
            nicHotPlug: false,
            nicHotUnplug: false,
            pciSlot: 0,
            ramHotPlug: false,
            size: 0,
            userData: "string",
        },
        imagePassword: "string",
        labels: [{
            key: "string",
            value: "string",
        }],
        cores: 0,
        cpuFamily: "string",
        firewallruleIds: ["string"],
        hostname: "string",
        imageName: "string",
        allowReplace: false,
        bootImage: "string",
        name: "string",
        nic: {
            lan: 0,
            id: "string",
            ipv6CidrBlock: "string",
            firewallActive: false,
            firewallType: "string",
            firewalls: [{
                protocol: "string",
                icmpCode: "string",
                icmpType: "string",
                id: "string",
                name: "string",
                portRangeEnd: 0,
                portRangeStart: 0,
                sourceIp: "string",
                sourceMac: "string",
                targetIp: "string",
                type: "string",
            }],
            deviceNumber: 0,
            ips: ["string"],
            dhcpv6: false,
            ipv6Ips: ["string"],
            dhcp: false,
            mac: "string",
            name: "string",
            pciSlot: 0,
            securityGroupsIds: ["string"],
        },
        ram: 0,
        securityGroupsIds: ["string"],
        sshKeys: ["string"],
        templateUuid: "string",
        type: "string",
        vmState: "string",
        availabilityZone: "string",
    });
    
    type: ionoscloud:compute:Server
    properties:
        allowReplace: false
        availabilityZone: string
        bootImage: string
        cores: 0
        cpuFamily: string
        datacenterId: string
        firewallruleIds:
            - string
        hostname: string
        imageName: string
        imagePassword: string
        labels:
            - key: string
              value: string
        name: string
        nic:
            deviceNumber: 0
            dhcp: false
            dhcpv6: false
            firewallActive: false
            firewallType: string
            firewalls:
                - icmpCode: string
                  icmpType: string
                  id: string
                  name: string
                  portRangeEnd: 0
                  portRangeStart: 0
                  protocol: string
                  sourceIp: string
                  sourceMac: string
                  targetIp: string
                  type: string
            id: string
            ips:
                - string
            ipv6CidrBlock: string
            ipv6Ips:
                - string
            lan: 0
            mac: string
            name: string
            pciSlot: 0
            securityGroupsIds:
                - string
        ram: 0
        securityGroupsIds:
            - string
        sshKeys:
            - string
        templateUuid: string
        type: string
        vmState: string
        volume:
            availabilityZone: string
            backupUnitId: string
            bootServer: string
            bus: string
            cpuHotPlug: false
            deviceNumber: 0
            discVirtioHotPlug: false
            discVirtioHotUnplug: false
            diskType: string
            licenceType: string
            name: string
            nicHotPlug: false
            nicHotUnplug: false
            pciSlot: 0
            ramHotPlug: false
            size: 0
            userData: string
    

    Server Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The Server resource accepts the following input properties:

    DatacenterId string
    [string] The ID of a Virtual Data Center.
    Volume Ionoscloud.ServerVolume
    See the Volume section.
    AllowReplace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    AvailabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    BootCdrom string
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    BootImage string
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    Cores int
    (Computed)[integer] Number of server CPU cores.
    CpuFamily string
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    FirewallruleIds List<string>
    The associated firewall rules.
    Hostname string
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    ImageName string
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    ImagePassword string
    [string] Required if ssh_key_path is not provided.
    Labels List<Ionoscloud.ServerLabel>
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    Name string
    [string] The name of the server.
    Nic Ionoscloud.ServerNic
    See the Nic section.
    Ram int
    (Computed)[integer] The amount of memory for the server in MB.
    SecurityGroupsIds List<string>
    The list of Security Group IDs for the
    SshKeyPaths List<string>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    SshKeys List<string>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    TemplateUuid string
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    Type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    VmState string
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    DatacenterId string
    [string] The ID of a Virtual Data Center.
    Volume ServerVolumeArgs
    See the Volume section.
    AllowReplace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    AvailabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    BootCdrom string
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    BootImage string
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    Cores int
    (Computed)[integer] Number of server CPU cores.
    CpuFamily string
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    FirewallruleIds []string
    The associated firewall rules.
    Hostname string
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    ImageName string
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    ImagePassword string
    [string] Required if ssh_key_path is not provided.
    Labels []ServerLabelArgs
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    Name string
    [string] The name of the server.
    Nic ServerNicArgs
    See the Nic section.
    Ram int
    (Computed)[integer] The amount of memory for the server in MB.
    SecurityGroupsIds []string
    The list of Security Group IDs for the
    SshKeyPaths []string
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    SshKeys []string
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    TemplateUuid string
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    Type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    VmState string
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    datacenterId String
    [string] The ID of a Virtual Data Center.
    volume ServerVolume
    See the Volume section.
    allowReplace Boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    availabilityZone String
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    bootCdrom String
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    bootImage String
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    cores Integer
    (Computed)[integer] Number of server CPU cores.
    cpuFamily String
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    firewallruleIds List<String>
    The associated firewall rules.
    hostname String
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    imageName String
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    imagePassword String
    [string] Required if ssh_key_path is not provided.
    labels List<ServerLabel>
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    name String
    [string] The name of the server.
    nic ServerNic
    See the Nic section.
    ram Integer
    (Computed)[integer] The amount of memory for the server in MB.
    securityGroupsIds List<String>
    The list of Security Group IDs for the
    sshKeyPaths List<String>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    sshKeys List<String>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    templateUuid String
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    type String
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    vmState String
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    datacenterId string
    [string] The ID of a Virtual Data Center.
    volume ServerVolume
    See the Volume section.
    allowReplace boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    availabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    bootCdrom string
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    bootImage string
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    cores number
    (Computed)[integer] Number of server CPU cores.
    cpuFamily string
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    firewallruleIds string[]
    The associated firewall rules.
    hostname string
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    imageName string
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    imagePassword string
    [string] Required if ssh_key_path is not provided.
    labels ServerLabel[]
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    name string
    [string] The name of the server.
    nic ServerNic
    See the Nic section.
    ram number
    (Computed)[integer] The amount of memory for the server in MB.
    securityGroupsIds string[]
    The list of Security Group IDs for the
    sshKeyPaths string[]
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    sshKeys string[]
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    templateUuid string
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    vmState string
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    datacenter_id str
    [string] The ID of a Virtual Data Center.
    volume ServerVolumeArgs
    See the Volume section.
    allow_replace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    availability_zone str
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    boot_cdrom str
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    boot_image str
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    cores int
    (Computed)[integer] Number of server CPU cores.
    cpu_family str
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    firewallrule_ids Sequence[str]
    The associated firewall rules.
    hostname str
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    image_name str
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    image_password str
    [string] Required if ssh_key_path is not provided.
    labels Sequence[ServerLabelArgs]
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    name str
    [string] The name of the server.
    nic ServerNicArgs
    See the Nic section.
    ram int
    (Computed)[integer] The amount of memory for the server in MB.
    security_groups_ids Sequence[str]
    The list of Security Group IDs for the
    ssh_key_paths Sequence[str]
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    ssh_keys Sequence[str]
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    template_uuid str
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    type str
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    vm_state str
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    datacenterId String
    [string] The ID of a Virtual Data Center.
    volume Property Map
    See the Volume section.
    allowReplace Boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    availabilityZone String
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    bootCdrom String
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    bootImage String
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    cores Number
    (Computed)[integer] Number of server CPU cores.
    cpuFamily String
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    firewallruleIds List<String>
    The associated firewall rules.
    hostname String
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    imageName String
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    imagePassword String
    [string] Required if ssh_key_path is not provided.
    labels List<Property Map>
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    name String
    [string] The name of the server.
    nic Property Map
    See the Nic section.
    ram Number
    (Computed)[integer] The amount of memory for the server in MB.
    securityGroupsIds List<String>
    The list of Security Group IDs for the
    sshKeyPaths List<String>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    sshKeys List<String>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    templateUuid String
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    type String
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    vmState String
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Server resource produces the following output properties:

    BootVolume string
    The associated boot volume.
    FirewallruleId string
    The associated firewall rule.
    Id string
    The provider-assigned unique ID for this managed resource.
    InlineVolumeIds List<string>
    A list with the IDs for the volumes that are defined inside the server resource.
    PrimaryIp string
    The associated IP address.
    PrimaryNic string
    The associated NIC.
    BootVolume string
    The associated boot volume.
    FirewallruleId string
    The associated firewall rule.
    Id string
    The provider-assigned unique ID for this managed resource.
    InlineVolumeIds []string
    A list with the IDs for the volumes that are defined inside the server resource.
    PrimaryIp string
    The associated IP address.
    PrimaryNic string
    The associated NIC.
    bootVolume String
    The associated boot volume.
    firewallruleId String
    The associated firewall rule.
    id String
    The provider-assigned unique ID for this managed resource.
    inlineVolumeIds List<String>
    A list with the IDs for the volumes that are defined inside the server resource.
    primaryIp String
    The associated IP address.
    primaryNic String
    The associated NIC.
    bootVolume string
    The associated boot volume.
    firewallruleId string
    The associated firewall rule.
    id string
    The provider-assigned unique ID for this managed resource.
    inlineVolumeIds string[]
    A list with the IDs for the volumes that are defined inside the server resource.
    primaryIp string
    The associated IP address.
    primaryNic string
    The associated NIC.
    boot_volume str
    The associated boot volume.
    firewallrule_id str
    The associated firewall rule.
    id str
    The provider-assigned unique ID for this managed resource.
    inline_volume_ids Sequence[str]
    A list with the IDs for the volumes that are defined inside the server resource.
    primary_ip str
    The associated IP address.
    primary_nic str
    The associated NIC.
    bootVolume String
    The associated boot volume.
    firewallruleId String
    The associated firewall rule.
    id String
    The provider-assigned unique ID for this managed resource.
    inlineVolumeIds List<String>
    A list with the IDs for the volumes that are defined inside the server resource.
    primaryIp String
    The associated IP address.
    primaryNic String
    The associated NIC.

    Look up Existing Server Resource

    Get an existing Server resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: ServerState, opts?: CustomResourceOptions): Server
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            allow_replace: Optional[bool] = None,
            availability_zone: Optional[str] = None,
            boot_cdrom: Optional[str] = None,
            boot_image: Optional[str] = None,
            boot_volume: Optional[str] = None,
            cores: Optional[int] = None,
            cpu_family: Optional[str] = None,
            datacenter_id: Optional[str] = None,
            firewallrule_id: Optional[str] = None,
            firewallrule_ids: Optional[Sequence[str]] = None,
            hostname: Optional[str] = None,
            image_name: Optional[str] = None,
            image_password: Optional[str] = None,
            inline_volume_ids: Optional[Sequence[str]] = None,
            labels: Optional[Sequence[ServerLabelArgs]] = None,
            name: Optional[str] = None,
            nic: Optional[ServerNicArgs] = None,
            primary_ip: Optional[str] = None,
            primary_nic: Optional[str] = None,
            ram: Optional[int] = None,
            security_groups_ids: Optional[Sequence[str]] = None,
            ssh_key_paths: Optional[Sequence[str]] = None,
            ssh_keys: Optional[Sequence[str]] = None,
            template_uuid: Optional[str] = None,
            type: Optional[str] = None,
            vm_state: Optional[str] = None,
            volume: Optional[ServerVolumeArgs] = None) -> Server
    func GetServer(ctx *Context, name string, id IDInput, state *ServerState, opts ...ResourceOption) (*Server, error)
    public static Server Get(string name, Input<string> id, ServerState? state, CustomResourceOptions? opts = null)
    public static Server get(String name, Output<String> id, ServerState state, CustomResourceOptions options)
    resources:  _:    type: ionoscloud:compute:Server    get:      id: ${id}
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AllowReplace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    AvailabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    BootCdrom string
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    BootImage string
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    BootVolume string
    The associated boot volume.
    Cores int
    (Computed)[integer] Number of server CPU cores.
    CpuFamily string
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    DatacenterId string
    [string] The ID of a Virtual Data Center.
    FirewallruleId string
    The associated firewall rule.
    FirewallruleIds List<string>
    The associated firewall rules.
    Hostname string
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    ImageName string
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    ImagePassword string
    [string] Required if ssh_key_path is not provided.
    InlineVolumeIds List<string>
    A list with the IDs for the volumes that are defined inside the server resource.
    Labels List<Ionoscloud.ServerLabel>
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    Name string
    [string] The name of the server.
    Nic Ionoscloud.ServerNic
    See the Nic section.
    PrimaryIp string
    The associated IP address.
    PrimaryNic string
    The associated NIC.
    Ram int
    (Computed)[integer] The amount of memory for the server in MB.
    SecurityGroupsIds List<string>
    The list of Security Group IDs for the
    SshKeyPaths List<string>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    SshKeys List<string>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    TemplateUuid string
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    Type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    VmState string
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    Volume Ionoscloud.ServerVolume
    See the Volume section.
    AllowReplace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    AvailabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    BootCdrom string
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    BootImage string
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    BootVolume string
    The associated boot volume.
    Cores int
    (Computed)[integer] Number of server CPU cores.
    CpuFamily string
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    DatacenterId string
    [string] The ID of a Virtual Data Center.
    FirewallruleId string
    The associated firewall rule.
    FirewallruleIds []string
    The associated firewall rules.
    Hostname string
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    ImageName string
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    ImagePassword string
    [string] Required if ssh_key_path is not provided.
    InlineVolumeIds []string
    A list with the IDs for the volumes that are defined inside the server resource.
    Labels []ServerLabelArgs
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    Name string
    [string] The name of the server.
    Nic ServerNicArgs
    See the Nic section.
    PrimaryIp string
    The associated IP address.
    PrimaryNic string
    The associated NIC.
    Ram int
    (Computed)[integer] The amount of memory for the server in MB.
    SecurityGroupsIds []string
    The list of Security Group IDs for the
    SshKeyPaths []string
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    SshKeys []string
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    TemplateUuid string
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    Type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    VmState string
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    Volume ServerVolumeArgs
    See the Volume section.
    allowReplace Boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    availabilityZone String
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    bootCdrom String
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    bootImage String
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    bootVolume String
    The associated boot volume.
    cores Integer
    (Computed)[integer] Number of server CPU cores.
    cpuFamily String
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    datacenterId String
    [string] The ID of a Virtual Data Center.
    firewallruleId String
    The associated firewall rule.
    firewallruleIds List<String>
    The associated firewall rules.
    hostname String
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    imageName String
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    imagePassword String
    [string] Required if ssh_key_path is not provided.
    inlineVolumeIds List<String>
    A list with the IDs for the volumes that are defined inside the server resource.
    labels List<ServerLabel>
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    name String
    [string] The name of the server.
    nic ServerNic
    See the Nic section.
    primaryIp String
    The associated IP address.
    primaryNic String
    The associated NIC.
    ram Integer
    (Computed)[integer] The amount of memory for the server in MB.
    securityGroupsIds List<String>
    The list of Security Group IDs for the
    sshKeyPaths List<String>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    sshKeys List<String>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    templateUuid String
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    type String
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    vmState String
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    volume ServerVolume
    See the Volume section.
    allowReplace boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    availabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    bootCdrom string
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    bootImage string
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    bootVolume string
    The associated boot volume.
    cores number
    (Computed)[integer] Number of server CPU cores.
    cpuFamily string
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    datacenterId string
    [string] The ID of a Virtual Data Center.
    firewallruleId string
    The associated firewall rule.
    firewallruleIds string[]
    The associated firewall rules.
    hostname string
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    imageName string
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    imagePassword string
    [string] Required if ssh_key_path is not provided.
    inlineVolumeIds string[]
    A list with the IDs for the volumes that are defined inside the server resource.
    labels ServerLabel[]
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    name string
    [string] The name of the server.
    nic ServerNic
    See the Nic section.
    primaryIp string
    The associated IP address.
    primaryNic string
    The associated NIC.
    ram number
    (Computed)[integer] The amount of memory for the server in MB.
    securityGroupsIds string[]
    The list of Security Group IDs for the
    sshKeyPaths string[]
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    sshKeys string[]
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    templateUuid string
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    vmState string
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    volume ServerVolume
    See the Volume section.
    allow_replace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    availability_zone str
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    boot_cdrom str
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    boot_image str
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    boot_volume str
    The associated boot volume.
    cores int
    (Computed)[integer] Number of server CPU cores.
    cpu_family str
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    datacenter_id str
    [string] The ID of a Virtual Data Center.
    firewallrule_id str
    The associated firewall rule.
    firewallrule_ids Sequence[str]
    The associated firewall rules.
    hostname str
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    image_name str
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    image_password str
    [string] Required if ssh_key_path is not provided.
    inline_volume_ids Sequence[str]
    A list with the IDs for the volumes that are defined inside the server resource.
    labels Sequence[ServerLabelArgs]
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    name str
    [string] The name of the server.
    nic ServerNicArgs
    See the Nic section.
    primary_ip str
    The associated IP address.
    primary_nic str
    The associated NIC.
    ram int
    (Computed)[integer] The amount of memory for the server in MB.
    security_groups_ids Sequence[str]
    The list of Security Group IDs for the
    ssh_key_paths Sequence[str]
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    ssh_keys Sequence[str]
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    template_uuid str
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    type str
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    vm_state str
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    volume ServerVolumeArgs
    See the Volume section.
    allowReplace Boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks.

    ⚠ WARNING

    Image_name under volume level is deprecated, please use image_name under server level ssh_key_path and ssh_keys fields are immutable.

    ⚠ WARNING

    If you want to create a CUBE server, you have to provide the template_uuid. In this case you can not set cores, ram and volume.size arguments, these being mutually exclusive with template_uuid.

    In all the other cases (ENTERPRISE servers) you have to provide values for cores, ram and volume size.

    availabilityZone String
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    bootCdrom String
    DEPRECATED Please refer to ionoscloud.compute.BootDeviceSelection (Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the ionoscloud.compute.getImage data source.

    Deprecated: Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server.

    bootImage String
    [string] The image or snapshot UUID / name. May also be an image alias. It is required if licence_type is not provided.
    bootVolume String
    The associated boot volume.
    cores Number
    (Computed)[integer] Number of server CPU cores.
    cpuFamily String
    [string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: "INTEL_SKYLAKE" or "INTEL_XEON".
    datacenterId String
    [string] The ID of a Virtual Data Center.
    firewallruleId String
    The associated firewall rule.
    firewallruleIds List<String>
    The associated firewall rules.
    hostname String
    (Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server
    imageName String
    [string] The name, ID or alias of the image. May also be a snapshot ID. It is required if licence_type is not provided. Attribute is immutable.
    imagePassword String
    [string] Required if ssh_key_path is not provided.
    inlineVolumeIds List<String>
    A list with the IDs for the volumes that are defined inside the server resource.
    labels List<Property Map>
    [set] A label can be seen as an object with only two required fields: key and value, both of the string type. Please check the example presented above to see how a label can be used in the plan. A server can have multiple labels.
    name String
    [string] The name of the server.
    nic Property Map
    See the Nic section.
    primaryIp String
    The associated IP address.
    primaryNic String
    The associated NIC.
    ram Number
    (Computed)[integer] The amount of memory for the server in MB.
    securityGroupsIds List<String>
    The list of Security Group IDs for the
    sshKeyPaths List<String>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Will be renamed to ssh_keys in the future, to allow users to set both the ssh key path or directly the ssh key

    sshKeys List<String>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.
    templateUuid String
    [string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource
    type String
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    vmState String
    [string] Sets the power state of the server. E.g: RUNNING, SHUTOFF or SUSPENDED. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise.
    volume Property Map
    See the Volume section.

    Supporting Types

    ServerLabel, ServerLabelArgs

    Key string
    [string] The key of the label.
    Value string
    [string] The value of the label.
    Key string
    [string] The key of the label.
    Value string
    [string] The value of the label.
    key String
    [string] The key of the label.
    value String
    [string] The value of the label.
    key string
    [string] The key of the label.
    value string
    [string] The value of the label.
    key str
    [string] The key of the label.
    value str
    [string] The value of the label.
    key String
    [string] The key of the label.
    value String
    [string] The value of the label.

    ServerNic, ServerNicArgs

    Lan int
    DeviceNumber int
    Dhcp bool
    Dhcpv6 bool
    Indicates whether this NIC receives an IPv6 address through DHCP.
    FirewallActive bool
    FirewallType string
    Firewalls List<Ionoscloud.ServerNicFirewall>
    Allows to define firewall rules inline in the server. See the Firewall section.
    Id string
    Ips List<string>
    Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.
    Ipv6CidrBlock string
    IPv6 CIDR block assigned to the NIC.
    Ipv6Ips List<string>
    Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.
    Mac string
    Name string
    [string] The name of the server.
    PciSlot int
    SecurityGroupsIds List<string>
    The list of Security Group IDs for the
    Lan int
    DeviceNumber int
    Dhcp bool
    Dhcpv6 bool
    Indicates whether this NIC receives an IPv6 address through DHCP.
    FirewallActive bool
    FirewallType string
    Firewalls []ServerNicFirewall
    Allows to define firewall rules inline in the server. See the Firewall section.
    Id string
    Ips []string
    Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.
    Ipv6CidrBlock string
    IPv6 CIDR block assigned to the NIC.
    Ipv6Ips []string
    Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.
    Mac string
    Name string
    [string] The name of the server.
    PciSlot int
    SecurityGroupsIds []string
    The list of Security Group IDs for the
    lan Integer
    deviceNumber Integer
    dhcp Boolean
    dhcpv6 Boolean
    Indicates whether this NIC receives an IPv6 address through DHCP.
    firewallActive Boolean
    firewallType String
    firewalls List<ServerNicFirewall>
    Allows to define firewall rules inline in the server. See the Firewall section.
    id String
    ips List<String>
    Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.
    ipv6CidrBlock String
    IPv6 CIDR block assigned to the NIC.
    ipv6Ips List<String>
    Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.
    mac String
    name String
    [string] The name of the server.
    pciSlot Integer
    securityGroupsIds List<String>
    The list of Security Group IDs for the
    lan number
    deviceNumber number
    dhcp boolean
    dhcpv6 boolean
    Indicates whether this NIC receives an IPv6 address through DHCP.
    firewallActive boolean
    firewallType string
    firewalls ServerNicFirewall[]
    Allows to define firewall rules inline in the server. See the Firewall section.
    id string
    ips string[]
    Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.
    ipv6CidrBlock string
    IPv6 CIDR block assigned to the NIC.
    ipv6Ips string[]
    Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.
    mac string
    name string
    [string] The name of the server.
    pciSlot number
    securityGroupsIds string[]
    The list of Security Group IDs for the
    lan int
    device_number int
    dhcp bool
    dhcpv6 bool
    Indicates whether this NIC receives an IPv6 address through DHCP.
    firewall_active bool
    firewall_type str
    firewalls Sequence[ServerNicFirewall]
    Allows to define firewall rules inline in the server. See the Firewall section.
    id str
    ips Sequence[str]
    Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.
    ipv6_cidr_block str
    IPv6 CIDR block assigned to the NIC.
    ipv6_ips Sequence[str]
    Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.
    mac str
    name str
    [string] The name of the server.
    pci_slot int
    security_groups_ids Sequence[str]
    The list of Security Group IDs for the
    lan Number
    deviceNumber Number
    dhcp Boolean
    dhcpv6 Boolean
    Indicates whether this NIC receives an IPv6 address through DHCP.
    firewallActive Boolean
    firewallType String
    firewalls List<Property Map>
    Allows to define firewall rules inline in the server. See the Firewall section.
    id String
    ips List<String>
    Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.
    ipv6CidrBlock String
    IPv6 CIDR block assigned to the NIC.
    ipv6Ips List<String>
    Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.
    mac String
    name String
    [string] The name of the server.
    pciSlot Number
    securityGroupsIds List<String>
    The list of Security Group IDs for the

    ServerNicFirewall, ServerNicFirewallArgs

    Protocol string
    IcmpCode string
    IcmpType string
    Id string
    Name string
    [string] The name of the server.
    PortRangeEnd int
    PortRangeStart int
    SourceIp string
    SourceMac string
    TargetIp string
    Type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    Protocol string
    IcmpCode string
    IcmpType string
    Id string
    Name string
    [string] The name of the server.
    PortRangeEnd int
    PortRangeStart int
    SourceIp string
    SourceMac string
    TargetIp string
    Type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    protocol String
    icmpCode String
    icmpType String
    id String
    name String
    [string] The name of the server.
    portRangeEnd Integer
    portRangeStart Integer
    sourceIp String
    sourceMac String
    targetIp String
    type String
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    protocol string
    icmpCode string
    icmpType string
    id string
    name string
    [string] The name of the server.
    portRangeEnd number
    portRangeStart number
    sourceIp string
    sourceMac string
    targetIp string
    type string
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    protocol str
    icmp_code str
    icmp_type str
    id str
    name str
    [string] The name of the server.
    port_range_end int
    port_range_start int
    source_ip str
    source_mac str
    target_ip str
    type str
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.
    protocol String
    icmpCode String
    icmpType String
    id String
    name String
    [string] The name of the server.
    portRangeEnd Number
    portRangeStart Number
    sourceIp String
    sourceMac String
    targetIp String
    type String
    (Computed)[string] Server usages: ENTERPRISE or CUBE. This property is immutable.

    ServerVolume, ServerVolumeArgs

    DiskType string
    AvailabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    BackupUnitId string
    The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.
    BootServer string
    The UUID of the attached server.
    Bus string
    CpuHotPlug bool
    DeviceNumber int
    DiscVirtioHotPlug bool
    DiscVirtioHotUnplug bool
    ImagePassword string
    [string] Required if ssh_key_path is not provided.

    Deprecated: Please use image_password under server level

    LicenceType string
    [string] Sets the OS type of the server.
    Name string
    [string] The name of the server.
    NicHotPlug bool
    NicHotUnplug bool
    PciSlot int
    RamHotPlug bool
    Size int
    The size of the volume in GB.
    SshKeyPaths List<string>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Please use ssh_key_path under server level

    SshKeys List<string>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.

    Deprecated: Please use ssh_keys under server level

    UserData string
    The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.
    DiskType string
    AvailabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    BackupUnitId string
    The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.
    BootServer string
    The UUID of the attached server.
    Bus string
    CpuHotPlug bool
    DeviceNumber int
    DiscVirtioHotPlug bool
    DiscVirtioHotUnplug bool
    ImagePassword string
    [string] Required if ssh_key_path is not provided.

    Deprecated: Please use image_password under server level

    LicenceType string
    [string] Sets the OS type of the server.
    Name string
    [string] The name of the server.
    NicHotPlug bool
    NicHotUnplug bool
    PciSlot int
    RamHotPlug bool
    Size int
    The size of the volume in GB.
    SshKeyPaths []string
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Please use ssh_key_path under server level

    SshKeys []string
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.

    Deprecated: Please use ssh_keys under server level

    UserData string
    The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.
    diskType String
    availabilityZone String
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    backupUnitId String
    The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.
    bootServer String
    The UUID of the attached server.
    bus String
    cpuHotPlug Boolean
    deviceNumber Integer
    discVirtioHotPlug Boolean
    discVirtioHotUnplug Boolean
    imagePassword String
    [string] Required if ssh_key_path is not provided.

    Deprecated: Please use image_password under server level

    licenceType String
    [string] Sets the OS type of the server.
    name String
    [string] The name of the server.
    nicHotPlug Boolean
    nicHotUnplug Boolean
    pciSlot Integer
    ramHotPlug Boolean
    size Integer
    The size of the volume in GB.
    sshKeyPaths List<String>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Please use ssh_key_path under server level

    sshKeys List<String>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.

    Deprecated: Please use ssh_keys under server level

    userData String
    The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.
    diskType string
    availabilityZone string
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    backupUnitId string
    The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.
    bootServer string
    The UUID of the attached server.
    bus string
    cpuHotPlug boolean
    deviceNumber number
    discVirtioHotPlug boolean
    discVirtioHotUnplug boolean
    imagePassword string
    [string] Required if ssh_key_path is not provided.

    Deprecated: Please use image_password under server level

    licenceType string
    [string] Sets the OS type of the server.
    name string
    [string] The name of the server.
    nicHotPlug boolean
    nicHotUnplug boolean
    pciSlot number
    ramHotPlug boolean
    size number
    The size of the volume in GB.
    sshKeyPaths string[]
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Please use ssh_key_path under server level

    sshKeys string[]
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.

    Deprecated: Please use ssh_keys under server level

    userData string
    The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.
    disk_type str
    availability_zone str
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    backup_unit_id str
    The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.
    boot_server str
    The UUID of the attached server.
    bus str
    cpu_hot_plug bool
    device_number int
    disc_virtio_hot_plug bool
    disc_virtio_hot_unplug bool
    image_password str
    [string] Required if ssh_key_path is not provided.

    Deprecated: Please use image_password under server level

    licence_type str
    [string] Sets the OS type of the server.
    name str
    [string] The name of the server.
    nic_hot_plug bool
    nic_hot_unplug bool
    pci_slot int
    ram_hot_plug bool
    size int
    The size of the volume in GB.
    ssh_key_paths Sequence[str]
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Please use ssh_key_path under server level

    ssh_keys Sequence[str]
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.

    Deprecated: Please use ssh_keys under server level

    user_data str
    The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.
    diskType String
    availabilityZone String
    [string] The availability zone in which the server should exist. E.g: AUTO, ZONE_1, ZONE_2. This property is immutable.
    backupUnitId String
    The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.
    bootServer String
    The UUID of the attached server.
    bus String
    cpuHotPlug Boolean
    deviceNumber Number
    discVirtioHotPlug Boolean
    discVirtioHotUnplug Boolean
    imagePassword String
    [string] Required if ssh_key_path is not provided.

    Deprecated: Please use image_password under server level

    licenceType String
    [string] Sets the OS type of the server.
    name String
    [string] The name of the server.
    nicHotPlug Boolean
    nicHotUnplug Boolean
    pciSlot Number
    ramHotPlug Boolean
    size Number
    The size of the volume in GB.
    sshKeyPaths List<String>
    [list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if image_password is not provided. Does not support ~ expansion to homedir in the given path. This property is immutable.

    Deprecated: Please use ssh_key_path under server level

    sshKeys List<String>
    [list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support ~ expansion to homedir in the given path.

    Deprecated: Please use ssh_keys under server level

    userData String
    The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.

    Import

    Resource Server can be imported using the resource id and the datacenter id, e.g.. Passing only resource id and datacenter id means that the first nic found linked to the server will be attached to it.

    $ pulumi import ionoscloud:compute/server:Server myserver datacenter uuid/server uuid
    

    Optionally, you can pass primary_nic and firewallrule_id so pulumi will know to import also the first nic and firewall rule (if it exists on the server):

    $ pulumi import ionoscloud:compute/server:Server myserver datacenter uuid/server uuid/primary nic id/firewall rule id
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    ionoscloud ionos-cloud/pulumi-ionoscloud
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the ionoscloud Terraform Provider.
    ionoscloud logo
    IonosCloud v0.2.2 published on Monday, May 12, 2025 by ionos-cloud