getInstanceSerialPort function
Future<GetInstanceSerialPortResult>
getInstanceSerialPort(
- GetInstanceSerialPortArgs args, {
- InvokeOptions? options,
Get the serial port output from a Compute Instance. For more information see the official API documentation.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const serial = gcp.compute.getInstanceSerialPort({
instance: "my-instance",
zone: "us-central1-a",
port: 1,
});
export const serialOut = serial.then(serial => serial.contents);
import pulumi
import pulumi_gcp as gcp
serial = gcp.compute.get_instance_serial_port(instance="my-instance",
zone="us-central1-a",
port=1)
pulumi.export("serialOut", serial.contents)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()
{
Instance = "my-instance",
Zone = "us-central1-a",
Port = 1,
});
return new Dictionary<string, object?>
{
["serialOut"] = serial.Apply(getInstanceSerialPortResult => getInstanceSerialPortResult.Contents),
};
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
serial, err := compute.GetInstanceSerialPort(ctx, &compute.GetInstanceSerialPortArgs{
Instance: "my-instance",
Zone: pulumi.StringRef("us-central1-a"),
Port: 1,
}, nil)
if err != nil {
return err
}
ctx.Export("serialOut", serial.Contents)
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
data "gcp_compute_getinstanceserialport" "serial" {
instance = "my-instance"
zone = "us-central1-a"
port = 1
}
output "serialOut" {
value = data.gcp_compute_getinstanceserialport.serial.contents
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.ComputeFunctions;
import com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()
.instance("my-instance")
.zone("us-central1-a")
.port(1)
.build());
ctx.export("serialOut", serial.contents());
}
}
variables:
serial:
fn::invoke:
function: gcp:compute:getInstanceSerialPort
arguments:
instance: my-instance
zone: us-central1-a
port: 1
outputs:
serialOut: ${serial.contents}
Using the serial port output to generate a windows password, derived from the official guide:
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const windows = new gcp.compute.Instance("windows", {
networkInterfaces: [{
accessConfigs: [{}],
network: "default",
}],
name: "windows-instance",
machineType: "e2-medium",
zone: "us-central1-a",
bootDisk: {
initializeParams: {
image: "windows-cloud/windows-2019",
},
},
metadata: {
"serial-port-logging-enable": "TRUE",
"windows-keys": JSON.stringify({
email: "example.user@example.com",
expireOn: "2020-04-14T01:37:19Z",
exponent: "AQAB",
modulus: "wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==",
userName: "example-user",
}),
},
serviceAccount: {
scopes: [
"userinfo-email",
"compute-ro",
"storage-ro",
],
},
});
const serial = gcp.compute.getInstanceSerialPortOutput({
instance: windows.name,
zone: windows.zone,
port: 4,
});
export const serialOut = serial.contents;
import pulumi
import json
import pulumi_gcp as gcp
windows = gcp.compute.Instance("windows",
network_interfaces=[{
"access_configs": [{}],
"network": "default",
}],
name="windows-instance",
machine_type="e2-medium",
zone="us-central1-a",
boot_disk={
"initialize_params": {
"image": "windows-cloud/windows-2019",
},
},
metadata={
"serial-port-logging-enable": "TRUE",
"windows-keys": json.dumps({
"email": "example.user@example.com",
"expireOn": "2020-04-14T01:37:19Z",
"exponent": "AQAB",
"modulus": "wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==",
"userName": "example-user",
}),
},
service_account={
"scopes": [
"userinfo-email",
"compute-ro",
"storage-ro",
],
})
serial = gcp.compute.get_instance_serial_port_output(instance=windows.name,
zone=windows.zone,
port=4)
pulumi.export("serialOut", serial.contents)
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var windows = new Gcp.Compute.Instance("windows", new()
{
NetworkInterfaces = new[]
{
new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs
{
AccessConfigs = new[]
{
null,
},
Network = "default",
},
},
Name = "windows-instance",
MachineType = "e2-medium",
Zone = "us-central1-a",
BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs
{
InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs
{
Image = "windows-cloud/windows-2019",
},
},
Metadata =
{
{ "serial-port-logging-enable", "TRUE" },
{ "windows-keys", JsonSerializer.Serialize(new Dictionary<string, object?>
{
["email"] = "example.user@example.com",
["expireOn"] = "2020-04-14T01:37:19Z",
["exponent"] = "AQAB",
["modulus"] = "wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==",
["userName"] = "example-user",
}) },
},
ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs
{
Scopes = new[]
{
"userinfo-email",
"compute-ro",
"storage-ro",
},
},
});
var serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()
{
Instance = windows.Name,
Zone = windows.Zone,
Port = 4,
});
return new Dictionary<string, object?>
{
["serialOut"] = serial.Apply(getInstanceSerialPortResult => getInstanceSerialPortResult.Contents),
};
});
package main
import (
"encoding/json"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
tmpJSON0, err := json.Marshal(map[string]string{
"email": "example.user@example.com",
"expireOn": "2020-04-14T01:37:19Z",
"exponent": "AQAB",
"modulus": "wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==",
"userName": "example-user",
})
if err != nil {
return err
}
json0 := string(tmpJSON0)
windows, err := compute.NewInstance(ctx, "windows", &compute.InstanceArgs{
NetworkInterfaces: compute.InstanceNetworkInterfaceArray{
&compute.InstanceNetworkInterfaceArgs{
AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{
&compute.InstanceNetworkInterfaceAccessConfigArgs{},
},
Network: pulumi.String("default"),
},
},
Name: pulumi.String("windows-instance"),
MachineType: pulumi.String("e2-medium"),
Zone: pulumi.String("us-central1-a"),
BootDisk: &compute.InstanceBootDiskArgs{
InitializeParams: &compute.InstanceBootDiskInitializeParamsArgs{
Image: pulumi.String("windows-cloud/windows-2019"),
},
},
Metadata: pulumi.StringMap{
"serial-port-logging-enable": pulumi.String("TRUE"),
"windows-keys": pulumi.String(json0),
},
ServiceAccount: &compute.InstanceServiceAccountArgs{
Scopes: pulumi.StringArray{
pulumi.String("userinfo-email"),
pulumi.String("compute-ro"),
pulumi.String("storage-ro"),
},
},
})
if err != nil {
return err
}
serial := compute.GetInstanceSerialPortOutput(ctx, compute.GetInstanceSerialPortOutputArgs{
Instance: windows.Name,
Zone: windows.Zone,
Port: pulumi.Int(4),
}, nil)
ctx.Export("serialOut", serial.Contents())
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
data "gcp_compute_getinstanceserialport" "serial" {
instance = gcp_compute_instance.windows.name
zone = gcp_compute_instance.windows.zone
port = 4
}
resource "gcp_compute_instance" "windows" {
network_interfaces {
access_configs {
}
network = "default"
}
name = "windows-instance"
machine_type = "e2-medium"
zone = "us-central1-a"
boot_disk = {
initialize_params = {
image = "windows-cloud/windows-2019"
}
}
metadata = {
"serial-port-logging-enable" = "TRUE"
"windows-keys" = jsonencode({
"email" = "example.user@example.com"
"expireOn" = "2020-04-14T01:37:19Z"
"exponent" = "AQAB"
"modulus" = "wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q=="
"userName" = "example-user"
})
}
service_account = {
scopes = ["userinfo-email", "compute-ro", "storage-ro"]
}
}
output "serialOut" {
value = data.gcp_compute_getinstanceserialport.serial.contents
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.Instance;
import com.pulumi.gcp.compute.InstanceArgs;
import com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;
import com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceAccessConfigArgs;
import com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;
import com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;
import com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;
import com.pulumi.gcp.compute.ComputeFunctions;
import com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.ArrayList;
import java.util.Arrays;
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 windows = new Instance("windows", InstanceArgs.builder()
.networkInterfaces(InstanceNetworkInterfaceArgs.builder()
.accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()
.build())
.network("default")
.build())
.name("windows-instance")
.machineType("e2-medium")
.zone("us-central1-a")
.bootDisk(InstanceBootDiskArgs.builder()
.initializeParams(InstanceBootDiskInitializeParamsArgs.builder()
.image("windows-cloud/windows-2019")
.build())
.build())
.metadata(Map.ofEntries(
Map.entry("serial-port-logging-enable", "TRUE"),
Map.entry("windows-keys", serializeJson(
jsonObject(
jsonProperty("email", "example.user@example.com"),
jsonProperty("expireOn", "2020-04-14T01:37:19Z"),
jsonProperty("exponent", "AQAB"),
jsonProperty("modulus", "wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q=="),
jsonProperty("userName", "example-user")
)))
))
.serviceAccount(InstanceServiceAccountArgs.builder()
.scopes(
"userinfo-email",
"compute-ro",
"storage-ro")
.build())
.build());
final var serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()
.instance(windows.name())
.zone(windows.zone())
.port(4)
.build());
ctx.export("serialOut", serial.applyValue(_serial -> _serial.contents()));
}
}
resources:
windows:
type: gcp:compute:Instance
properties:
networkInterfaces:
- accessConfigs:
- {}
network: default
name: windows-instance
machineType: e2-medium
zone: us-central1-a
bootDisk:
initializeParams:
image: windows-cloud/windows-2019
metadata:
serial-port-logging-enable: TRUE
windows-keys:
fn::toJSON:
email: example.user@example.com
expireOn: 2020-04-14T01:37:19Z
exponent: AQAB
modulus: wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==
userName: example-user
serviceAccount:
scopes:
- userinfo-email
- compute-ro
- storage-ro
variables:
serial:
fn::invoke:
function: gcp:compute:getInstanceSerialPort
arguments:
instance: ${windows.name}
zone: ${windows.zone}
port: 4
outputs:
serialOut: ${serial.contents}
args Arguments passed to this invoke. Arguments for getInstanceSerialPort.
options Invoke options controlling this call.
Implementation
Future<GetInstanceSerialPortResult> getInstanceSerialPort(
GetInstanceSerialPortArgs args, {
pulumi.InvokeOptions? options,
}) async {
final deployment = pulumi.Deployment.instance;
final result = await deployment.invoke<Map<String, dynamic>>(
'gcp:compute/getInstanceSerialPort:getInstanceSerialPort',
args.toMap(),
options: pulumi.toDeploymentInvokeOptions(options),
);
return GetInstanceSerialPortResult.fromMap(result);
}