bpmetadata

package
v0.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 18, 2023 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Cmd = &cobra.Command{
	Use:   "metadata",
	Short: "Generates blueprint metatda",
	Long:  `Generates metadata.yaml for specified blueprint`,
	Args:  cobra.NoArgs,
	RunE:  generate,
}
View Source
var Log = log.New()

bpmetadata log15 handler

Functions

func WriteMetadata

func WriteMetadata(obj *BlueprintMetadata, bpPath string) error

Types

type BlueprintActuationTool

type BlueprintActuationTool struct {
	// Set as "Terraform" for now until more flavors are supported.
	Flavor string `json:"type,omitempty" yaml:"type,omitempty"`

	// Required version for the actuation tool.
	// Autogenerated: For Terraform this is the `required_version` set in
	// `terraform` block. E.g.
	// terraform {
	//   required_version = ">= 0.13"
	// }
	Version string `json:",omitempty" yaml:",omitempty"`
}

type BlueprintArchitecture added in v0.5.4

type BlueprintArchitecture struct {
	DiagramURL  string `json:"diagram,omitempty" yaml:"diagram,omitempty"`
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
}

type BlueprintAuthor added in v0.6.0

type BlueprintAuthor struct {
	// Name of template author or organization.
	Title string `yaml:"author"`

	// Description of the author.
	Description string `yaml:"author,omitempty"`

	// Link to the author's website.
	URL string `yaml:"url,omitempty"`
}

type BlueprintCloudProduct added in v0.5.4

type BlueprintCloudProduct struct {
	// A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization")
	// product used in the blueprint.
	ProductId string `json:",omitempty" yaml:",omitempty"`

	// Url for the product.
	PageURL string `json:",omitempty" yaml:",omitempty"`

	// A label string for the product, if it is not an integrated GCP product.
	// E.g. "Data Studio"
	Label string `json:",omitempty" yaml:",omitempty"`
}

A GCP cloud product used in the blueprint. Manually authored.

type BlueprintContent

type BlueprintContent struct {
	// Diagrams are manually entered.
	Architecture  BlueprintArchitecture  `json:"architecture,omitempty" yaml:"architecture,omitempty"`
	Diagrams      []BlueprintDiagram     `json:",omitempty" yaml:",omitempty"`
	Documentation []BlueprintListContent `json:",omitempty" yaml:",omitempty"`
	SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"`
	Examples      []BlueprintMiscContent `json:",omitempty" yaml:",omitempty"`
}

BlueprintContent defines the detail for blueprint related content such as related documentation, diagrams, examples etc.

type BlueprintCostEstimate added in v0.5.4

type BlueprintCostEstimate struct {
	// Autogenerated: Set using the content defined under "### Cost" as a link
	// with a description E.g.
	// ### Cost
	// [View cost details](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add)
	Description string `json:",omitempty" yaml:",omitempty"`
	URL         string `json:",omitempty" yaml:",omitempty"`
}

The cost estimate for the blueprint based on preconfigured variables.

type BlueprintDescription

type BlueprintDescription struct {

	// Autogenerated: Markdown after "### Tagline".
	Tagline string `json:",omitempty" yaml:",omitempty"`

	// Autogenerated: Markdown after "### Detailed".
	Detailed string `json:",omitempty" yaml:",omitempty"`

	// Autogenerated: Markdown after "### PreDeploy".
	PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"`

	// Autogenerated: Markdown after "### Html".
	HTML string `json:"html,omitempty" yaml:"html,omitempty"`

	// Autogenerated: Markdown after "### EulaUrls".
	EulaURLs []string `json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"`

	// Autogenerated: Markdown after "### Architecture"
	// Deprecated. Use BlueprintContent.Architecture instead.
	Architecture []string `json:"architecture,omitempty" yaml:"architecture,omitempty"`
}

type BlueprintDiagram

type BlueprintDiagram struct {
	Name        string
	AltText     string `json:"altText,omitempty" yaml:"altText,omitempty"`
	Description string `json:",omitempty" yaml:",omitempty"`
}

BlueprintDiagram is manually entered.

type BlueprintInfo

type BlueprintInfo struct {
	// Title for the blueprint.
	// Autogenerated: First H1 text in readme.md.
	Title string

	// Blueprint source location and source type.
	// Autogen details in BlueprintRepoDetail.
	Source *BlueprintRepoDetail

	// Last released semantic version  for the packaged blueprint.
	// Autogenerated: From the `module_name` attribute of the `provider_meta "google"` block.
	// E.g.
	// provider_meta "google" {
	//  module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5"
	// }
	Version string `json:",omitempty" yaml:",omitempty"`

	// Actuation tool e.g. Terraform and its required version.
	// Autogen details in BlueprintActuationTool.
	ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"`

	// Various types of descriptions associated with the blueprint.
	// Autogen details in BlueprintDescription.
	Description *BlueprintDescription `json:",omitempty" yaml:",omitempty"`

	// Path to an image representing the icon for the blueprint.
	// Will be set as "assets/icon.png". Can be manually authored otherwise.
	Icon string `json:",omitempty" yaml:",omitempty"`

	// The time estimate for configuring and deploying the blueprint.
	// Autogen details in BlueprintTimeEstimate.
	DeploymentTime BlueprintTimeEstimate `json:"deploymentTime,omitempty" yaml:"deploymentTime,omitempty"`

	// The cost estimate for the blueprint based on preconfigured variables.
	// Autogen details in BlueprintCostEstimate.
	CostEstimate BlueprintCostEstimate `json:",omitempty" yaml:",omitempty"`

	// A list of GCP cloud products used in the blueprint.
	// Manually authored.
	CloudProducts []BlueprintCloudProduct `json:",omitempty" yaml:",omitempty"`

	// A configuration of fixed and dymanic GCP quotas that apply to the soltuion.
	// Manually authored.
	QuotaDetails []BlueprintQuotaDetail `json:",omitempty" yaml:",omitempty"`

	// Details on the author producing the blueprint.
	// Manually authored.
	Author BlueprintAuthor `json:",omitempty" yaml:",omitempty"`

	// Details on sotfware installed as part of the blueprint.
	// Manually authored.
	SoftwareGroups []BlueprintSoftwareGroup `json:",omitempty" yaml:",omitempty"`

	// Support offered, if any for the blueprint.
	// Manually authored.
	SupportInfo BlueprintSupport `json:",omitempty" yaml:",omitempty"`
}

type BlueprintInterface

type BlueprintInterface struct {
	Variables []BlueprintVariable `json:",omitempty" yaml:",omitempty"`
	// VariableGroups are manually entered.
	VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"`
	Outputs        []BlueprintOutput        `json:",omitempty" yaml:",omitempty"`
}

BlueprintInterface defines the input and output variables for the blueprint.

type BlueprintListContent

type BlueprintListContent struct {
	Title string
	URL   string `json:",omitempty" yaml:",omitempty"`
}

type BlueprintMetadata

type BlueprintMetadata struct {
	Meta yaml.ResourceMeta `json:",inline" yaml:",inline"`
	Spec BlueprintMetadataSpec
}

BlueprintMetadata defines the overall structure for blueprint metadata.

func CreateBlueprintMetadata

func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (*BlueprintMetadata, error)

func UnmarshalMetadata

func UnmarshalMetadata(bpPath string) (*BlueprintMetadata, error)

type BlueprintMetadataSpec

type BlueprintMetadataSpec struct {
	Info         BlueprintInfo         `json:",inline" yaml:",inline"`
	Content      BlueprintContent      `json:",inline" yaml:",inline"`
	Interfaces   BlueprintInterface    `json:",inline" yaml:",inline"`
	Requirements BlueprintRequirements `json:",inline" yaml:",inline"`
	UI           BlueprintUI           `json:",inline" yaml:",inline"`
}

BlueprintMetadataSpec defines the spec portion of the blueprint metadata. All immediate types within BlueprintMetadataSpec are inline and will not appear as nodes in metadata.

type BlueprintMiscContent

type BlueprintMiscContent struct {
	Name     string
	Location string
}

type BlueprintOutput

type BlueprintOutput struct {
	Name        string
	Description string `json:",omitempty" yaml:",omitempty"`
}

type BlueprintQuotaDetail added in v0.5.4

type BlueprintQuotaDetail struct {
	// DynamicVariable, if provided, associates the provided input variable
	// with the corresponding resource and quota type. In its absence, the quota
	// detail is assumed to be fixed.
	DynamicVariable string `json:"variable,omitempty" yaml:"variable,omitempty"`

	// ResourceType is the type of resource the quota will be applied to i.e.
	// GCE Instance or Disk etc.
	ResourceType QuotaResourceType `json:"type" yaml:"type"`

	// QuotaType is a key/value pair of the actual quotas an their corresponding
	// values.
	QuotaType map[QuotaType]string `json:"quotaType" yaml:"quotaType"`
}

type BlueprintRepoDetail

type BlueprintRepoDetail struct {
	// Autogenerated: URL from the .git dir.
	// Can be manually overriden with a custom URL if needed.
	Repo string

	// Set as "git" for now until more types are supported.
	SourceType string `json:"sourceType" yaml:"sourceType"`
}

type BlueprintRequirements

type BlueprintRequirements struct {
	Roles    []BlueprintRoles
	Services []string
}

BlueprintRequirements defines the roles required and the assocaited services that need to be enabled to provision blueprint resources.

type BlueprintRoles

type BlueprintRoles struct {
	Level string
	Roles []string
}

type BlueprintSoftware added in v0.6.0

type BlueprintSoftware struct {
	// User-visible title.
	Title string `yaml:"title"`

	// Software version.
	Version string `yaml:"title,omitempty"`

	// Link to development site or marketing page for this software.
	URL string `yaml:"url,omitempty"`

	// Link to license page.
	LicenseURL string `yaml:"licenseUrl,omitempty"`
}

A description of a piece of a single software component installed by the blueprint.

type BlueprintSoftwareGroup added in v0.6.0

type BlueprintSoftwareGroup struct {
	// Pre-defined software types.
	Type SoftwareGroupType `yaml:"type"`

	// Software components belonging to this group.
	Software []BlueprintSoftware `yaml:"software"`
}

A group of related software components for the blueprint.

type BlueprintSupport added in v0.6.0

type BlueprintSupport struct {
	//Description of the support option.
	Description string `yaml:"description,omitempty"`

	// Link to the page providing this support option.
	URL string `yaml:"url"`

	// The organization or group that provides the support option (e.g.:
	// "Community", "Google").
	Entity string `yaml:"entity,omitempty"`

	// Whether to show the customer's support ID.
	ShowSupportId bool `yaml:"showSupportId,omitempty"`
}

A description of a support option

type BlueprintTimeEstimate added in v0.5.4

type BlueprintTimeEstimate struct {
	// Autogenerated: Set using the content defined under "### DeploymentTime" E.g.
	// ### DeploymentTime
	// - Configuration: X secs
	// - Deployment: Y secs
	ConfigurationSecs int `json:"configuration,omitempty" yaml:"configuration,omitempty"`
	DeploymentSecs    int `json:"deployment,omitempty" yaml:"deployment,omitempty"`
}

A time estimate in secs required for configuring and deploying the blueprint.

type BlueprintUI added in v0.6.0

type BlueprintUI struct {
	// The top-level input section that defines the list of variables and
	// their sections on the deployment page.
	Input BlueprintUIInput `yaml:"input"`

	// The top-level section for listing runtime (or blueprint output) information
	// i.e. the console URL for the VM or a button to ssh into the VM etc based on.
	Runtime BlueprintUIOutput `yaml:"runtime"`
}

BlueprintUI is the top-level structure for holding UI specific metadata.

type BlueprintUIInput added in v0.6.0

type BlueprintUIInput struct {

	// variables is a map defining all inputs on the UI.
	DisplayVariables map[string]DisplayVariable `yaml:"variables"`

	// Sections is a generic structure for grouping inputs together.
	DisplaySections []DisplaySection `yaml:"sections"`
}

BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata.

type BlueprintUIOutput added in v0.6.0

type BlueprintUIOutput struct {
	// Short message to be displayed while the blueprint is deploying.
	// At most 128 characters.
	OutputMessage string `yaml:"outputMessage,omitempty"`

	// List of suggested actions to take.
	SuggestedActions []UIActionItem `yaml:"suggestedActions,omitempty"`
}

type BlueprintVariable

type BlueprintVariable struct {
	Name        string
	Description string      `json:",omitempty" yaml:",omitempty"`
	VarType     string      `yaml:"type"`
	Default     interface{} `json:",omitempty" yaml:",omitempty"`
	Required    bool
}

type BlueprintVariableGroup

type BlueprintVariableGroup struct {
	Name        string
	Description string `json:",omitempty" yaml:",omitempty"`
	Variables   []string
}

BlueprintVariableGroup is manually entered.

type DisplaySection added in v0.6.0

type DisplaySection struct {
	// The name of the section, referenced by DisplayVariable.Section
	// Section names must be unique.
	Name string `yaml:"name"`

	// Section title.
	// If not provided, name will be used instead.
	Title string `yaml:"title,omitempty"`

	// Section tooltip.
	Tooltip string `yaml:"tooltip,omitempty"`

	// Section subtext.
	Subtext string `yaml:"subtext,omitempty"`

	// The name of the parent section (if parent is not the root section).
	Parent string `yaml:"parent,omitempty"`
}

A logical group of variables. [Section][]s may also be grouped into sub-sections.

type DisplayVariable added in v0.6.0

type DisplayVariable struct {
	// The variable name from the corresponding standard metadata file.
	Name string `yaml:"name"`

	// Visible title for the variable on the UI.
	Title bool `yaml:"title,omitempty"`

	// A flag to hide or show the variable on the UI.
	Visible bool `yaml:"visible,omitempty"`

	// Variable tooltip.
	Tooltip string `yaml:"tooltip,omitempty"`

	// Placeholder text (when there is no default).
	Placeholder string `yaml:"placeholder,omitempty"`

	// Text describing the validation rules for the variable based
	// on a regular expression.
	// Typically shown after an invalid input.
	RegExValidation string `yaml:"regexValidation,omitempty"`

	// Minimum no. of values for the input variable.
	Minimum int `yaml:"min,omitempty"`

	// Max no. of values for the input variable.
	Maximum int `yaml:"max,omitempty"`

	// The name of a section to which this variable belongs.
	// variables belong to the root section if this field is
	// not set.
	Section string `yaml:"section,omitempty"`

	// Designates that this variable has no impact on the costs, quotas, or
	// permissions associated with the resources in the expanded deployment.
	// Typically true for application-specific variables that do not affect the
	// size or number of instances in the deployment.
	ResourceImpact bool `yaml:"resourceImpact,omitempty"`

	// UI extension associated with the input variable.
	// E.g. for rendering a GCE machine type selector:
	//
	// x-googleProperty:
	//   type: GCE_MACHINE_TYPE
	//   zoneProperty: myZone
	//   gceMachineType:
	//     minCpu: 2
	//     minRamGb: 6
	UIDisplayVariableExtension GooglePropertyExtension `yaml:"x-googleProperty,omitempty"`
}

Additional display specific metadata pertaining to a particular input variable.

type ExtensionType added in v0.6.0

type ExtensionType string
const (
	Undefined ExtensionType = "UNDEFINED_TYPE"

	// General formats.
	EmailAddress    ExtensionType = "EMAIL_ADDRESS"
	MultiLineString ExtensionType = "MULTI_LINE_STRING"

	// GCE related.
	GCEDiskImage       ExtensionType = "GCE_DISK_IMAGE"
	GCEDiskType        ExtensionType = "GCE_DISK_TYPE"
	GCEDiskSize        ExtensionType = "GCE_DISK_SIZE"
	GCEMachineType     ExtensionType = "GCE_MACHINE_TYPE"
	GCENetwork         ExtensionType = "GCE_NETWORK"
	GCEZone            ExtensionType = "GCE_ZONE"
	GCESubnetwork      ExtensionType = "GCE_SUBNETWORK"
	GCERegion          ExtensionType = "GCE_REGION"
	GCEGPUType         ExtensionType = "GCE_GPU_TYPE"
	GCEGPUCount        ExtensionType = "GCE_GPU_COUNT"
	GCEExternalIP      ExtensionType = "GCE_EXTERNAL_IP"
	GCEIPForwarding    ExtensionType = "GCE_IP_FORWARDING"
	GCEFirewall        ExtensionType = "GCE_FIREWALL"
	GCEFirewallRange   ExtensionType = "GCE_FIREWALL_RANGE"
	GCEGenericResource ExtensionType = "GCE_GENERIC_RESOURCE"

	// GCS related.
	GCSBucket ExtensionType = "GCS_BUCKET"

	// IAM related.
	IAMServiceAccount ExtensionType = "IAM_SERVICE_ACCOUNT"
)

type ExternalIPType added in v0.6.0

type ExternalIPType string
const (
	IPEphemeral ExternalIPType = "EPHEMERAL"
	IPStaic     ExternalIPType = "STATIC"
)

type GCEDiskSizeExtension added in v0.6.0

type GCEDiskSizeExtension struct {
	// The allowable range of disk sizes depends on the disk type. This field
	// references another variable from the schema, which must have type GCEDiskType.
	DiskTypeVariable string `yaml:"diskTypeVariable"`
}

type GCEExternalIPExtension added in v0.6.0

type GCEExternalIPExtension struct {
	// NetworkVariable is used to indicate the network variable in the schema
	// this external IP belongs to.
	NetworkVariable string `yaml:"networkVariable"`

	// Type specifies if the external IP is ephemeral or static.
	// Defaults to ephemeral if not specified.
	Type ExternalIPType `yaml:"externalIpType,omitempty"`
}

type GCEFirewallExtension added in v0.6.0

type GCEFirewallExtension struct {
	// NetworkVariable is used to indicate the network variable in the schema
	// this external IP belongs to.
	NetworkVariable string `yaml:"networkVariable"`
}

type GCEFirewallRangeExtension added in v0.6.0

type GCEFirewallRangeExtension struct {
	// FirewallVariable is used to indicate the firewall variable with the type
	// GCEFirewall in the schema to which this firewall range belongs to.
	FirewallVariable string `yaml:"firewallVariable"`
}

type GCEGPUCountExtension added in v0.6.0

type GCEGPUCountExtension struct {
	// This field references another variable from the schema,
	// which must have type GCEMachineType.
	MachineTypeVariable string `yaml:"machineTypeVariable"`
}

type GCEGPUTypeExtension added in v0.6.0

type GCEGPUTypeExtension struct {
	MachineType string `yaml:"machineType"`
	GPUType     string `yaml:"gpuType"`
}

type GCEGenericResourceExtension added in v0.6.0

type GCEGenericResourceExtension struct {
	// GCE resource type to be fetched. This field references another
	// property from the schema, which must have type GCEGenericResource.
	ResourceVariable string `yaml:"resourceVariable"`
}

type GCEIPForwardingExtension added in v0.6.0

type GCEIPForwardingExtension struct {
	// NetworkVariable is used to indicate the network variable in the schema
	// this external IP belongs to.
	NetworkVariable string `yaml:"networkVariable"`
	NotConfigurable bool   `yaml:"notConfigurable"`
}

type GCELocationExtension added in v0.6.0

type GCELocationExtension struct {
	AllowlistedZones   []string `yaml:"allowlistedZones,omitempty"`
	AllowlistedRegions []string `yaml:"allowlistedRegions,omitempty"`
}

type GCEMachineTypeExtension added in v0.6.0

type GCEMachineTypeExtension struct {
	// Minimum cpu. Used to filter the list of selectable machine types.
	MinCPU int `yaml:"minCpu,omitempty"`

	// Minimum ram. Used to filter the list of selectable machine types.
	MinRAMGB int `yaml:"minRamGb,omitempty"`

	// If true, custom machine types will not be selectable.
	// More info:
	// https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type
	DisallowCustomMachineTypes bool `yaml:"disallowCustomMachineTypes,omitempty"`
}

type GCENetworkExtension added in v0.6.0

type GCENetworkExtension struct {
	// AllowSharedVpcs indicates this solution can receive
	// shared VPC selflinks (fully qualified compute links).
	AllowSharedVPCs bool `yaml:"allowSharedVpcs"`
	// Used to indicate to which machine type this network interface will be
	// attached to.
	MachineTypeVariable string `yaml:"machineTypeVariable"`
}

type GCESubnetworkExtension added in v0.6.0

type GCESubnetworkExtension struct {
	// Subnetwork variable requires a network context in order to determine the
	// set of available subnetworks. This field references another
	// variable from the schema, which must have type GCENetwork.
	NetworkVariable string `yaml:"networkVariable"`
}

type GooglePropertyExtension added in v0.6.0

type GooglePropertyExtension struct {
	Type ExtensionType `yaml:"type"`

	// Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to
	// determine the set of allowable values. This field references another
	// property from the schema, which must have type GCE_ZONE.
	ZoneProperty string `yaml:"zoneProperty,omitempty"`

	// Property-specific extensions.
	GCEMachineType    GCEMachineTypeExtension     `yaml:"gceMachineType,omitempty"`
	GCEDiskSize       GCEDiskSizeExtension        `yaml:"gceDiskSize,omitempty"`
	GCESubnetwork     GCESubnetworkExtension      `yaml:"gceMachineType,omitempty"`
	GCEResource       GCEGenericResourceExtension `yaml:"gceSubnetwork,omitempty"`
	GCEGPUType        GCEGPUTypeExtension         `yaml:"gceGpuType,omitempty"`
	GCEGPUCount       GCEGPUCountExtension        `yaml:"gceGpuCount,omitempty"`
	GCENetwork        GCENetworkExtension         `yaml:"gceNetwork,omitempty"`
	GCEExternalIP     GCEExternalIPExtension      `yaml:"gceExternalIp,omitempty"`
	GCEIPForwarding   GCEIPForwardingExtension    `yaml:"gceIpForwarding,omitempty"`
	GCEFirewall       GCEFirewallExtension        `yaml:"gceFirewall,omitempty"`
	GCEFirewallRange  GCEFirewallRangeExtension   `yaml:"gceFirewallRange,omitempty"`
	GCEZone           GCELocationExtension        `yaml:"gceZone,omitempty"`
	GCERegion         GCELocationExtension        `yaml:"gceRegion,omitempty"`
	IAMServiceAccount IAMServiceAccountExtension  `yaml:"iamServiceAccount,omitempty"`
}

An extension for variables defined as part of DisplayVariable. The extension defines Google-specifc metadata necessary for choosing an appropriate input widget or adding restrictions to GCP-specific resources.

type IAMServiceAccountExtension added in v0.6.0

type IAMServiceAccountExtension struct {
	// List of IAM roles that to  grant to a new SA, or the roles to filter
	// existing SAs with.
	Roles []string `yaml:"roles"`
}

type QuotaResourceType added in v0.5.4

type QuotaResourceType string
const (
	GCEInstance QuotaResourceType = "GCE_INSTANCE"
	GCEDisk     QuotaResourceType = "GCE_DISK"
)

type QuotaType added in v0.5.4

type QuotaType string
const (
	MachineType QuotaType = "MACHINE_TYPE"
	CPUs        QuotaType = "CPUs"
	DiskType    QuotaType = "DISK_TYPE"
	DiskSizeGB  QuotaType = "SIZE_GB"
)

type SoftwareGroupType added in v0.6.0

type SoftwareGroupType string
const (
	UnspecifiedSG SoftwareGroupType = "UNSPECIFIED"
	OS            SoftwareGroupType = "OS"
)

type UIActionItem added in v0.6.0

type UIActionItem struct {
	// Summary heading for the item.
	// Required. Accepts string expressions. At most 64 characters.
	Heading string `yaml:"heading"`

	// Longer description of the item.
	// At least one description or snippet is required.
	// Accepts string expressions. HTML <code>&lt;a href&gt;</code>
	// tags only. At most 512 characters.
	Description string `yaml:"description"`

	// Fixed-width formatted code snippet.
	// At least one description or snippet is required.
	// Accepts string expressions. UTF-8 text. At most 512 characters.
	Snippet string `yaml:"snippet"`

	// If present, this expression determines whether the item is shown.
	// Should be in the form of a Boolean expression e.g. outputs().hasExternalIP
	// where `externalIP` is the output.
	ShowIf string `yaml:"showIf,omitempty"`
}

An item appearing in a list of required or suggested steps.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL