æ±çšã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãããåå®å šæ§ããã®ã¡ãªãããå®è£ æŠç¥ãä¿¡é Œæ§ãšã¹ã±ãŒã©ããªãã£ãžã®åœ±é¿ãæ¢ããŸãã
æ±çšã€ã³ãã©ã¹ãã©ã¯ãã£ïŒã¯ã©ãŠããã©ãããã©ãŒã ã®åå®å šæ§
æ¥éã«é²åããã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°ã®ç¶æ³ã«ãããŠãçµç¹ã¯ã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãšç®¡çã«æ±çšã€ã³ãã©ã¹ãã©ã¯ãã£ãžã®äŸå床ãé«ããŠããŸãããã®ã¢ãããŒãã¯ãæè»æ§ãšã¹ã±ãŒã©ããªãã£ãšããç¹ã§å€§ããªã¡ãªããããããããŸãããä¿¡é Œæ§ãšä¿å®æ§ã確ä¿ããããã«å¯ŸåŠããªããã°ãªããªãè€éãã䌎ããŸãããããã®è€éãã管çããäžã§éèŠãªåŽé¢ã®äžã€ããåå®å šæ§ã§ããæ¬çš¿ã§ã¯ãæ±çšã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãããåå®å šæ§ã®éèŠæ§ããã®ã¡ãªãããå®è£ æŠç¥ãããã³æœåšçãªèª²é¡ã«ã€ããŠæ¢ããŸãã
æ±çšã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¯ïŒ
æ±çšã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¯ãããŸããŸãªã¢ããªã±ãŒã·ã§ã³ãç°å¢ã«é©çšã§ãããåå©çšå¯èœã§èšå®å¯èœãªã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã³ããŒãã³ãã®äœæãæããŸããããã«ã¯ãåã ã®ã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®è©³çŽ°ãæœè±¡åããã€ã³ãã©ã¹ãã©ã¯ãã£èŠçŽ ãããäžè¬çã§ãã©ã¡ãŒã¿åãããæ¹æ³ã§å®çŸ©ããããšãå«ãŸããŸããããã¯ãTerraformãAWS CloudFormationãAzure Resource ManagerãGoogle Cloud Deployment Managerã®ãããªInfrastructure as Code (IaC) ããŒã«ã䜿çšããŠããå®çŸãããŸãã
ããšãã°ãã¢ããªã±ãŒã·ã§ã³ããšã«ç¹å®ã®ä»®æ³ãã·ã³ (VM) èšå®ãäœæããã®ã§ã¯ãªããCPUãã¡ã¢ãªããã£ã¹ã¯ãµã€ãºããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãªã©ã®èšå®å¯èœãªãã©ã¡ãŒã¿ãæã€æ±çšVMã¢ãžã¥ãŒã«ãäœæã§ããŸãããã®ã¢ãžã¥ãŒã«ã¯ãé©åãªãã©ã¡ãŒã¿å€ãæå®ããã ãã§ãè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ã§åå©çšã§ããŸãã
æ±çšã€ã³ãã©ã¹ãã©ã¯ãã£ã®ã¡ãªããïŒ
- åé·æ§ã®åæžïŒåå©çšå¯èœãªã³ã³ããŒãã³ããäœæããããšã§ãçµç¹ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£å®çŸ©ãšèšå®ã®éè€ãåé¿ã§ããŸãã
- äžè²«æ§ã®åäžïŒæ±çšã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãããŸããŸãªç°å¢å šäœã§äžè²«æ§ãä¿é²ããèšå®ããªããããšã©ãŒã®ãªã¹ã¯ãäœæžããŸãã
- ã¹ã±ãŒã©ããªãã£ã®åäžïŒåå©çšå¯èœãªã³ã³ããŒãã³ãã¯ãå€åããã¢ããªã±ãŒã·ã§ã³èŠä»¶ã«å¯Ÿå¿ããããã«å®¹æã«ã¹ã±ãŒãªã³ã°ããã³é©å¿ã§ããŸãã
- ãããã€ã®é«éåïŒäºåã«å®çŸ©ãããã¹ããããã€ã³ãã©ã¹ãã©ã¯ãã£ã¢ãžã¥ãŒã«ã«ãããæ°ããã¢ããªã±ãŒã·ã§ã³ãç°å¢ã®ãããã€ãããè¿ éãã€å¹ççã«ãªããŸãã
- ä¿å®æ§ã®åäžïŒäžå€®éæš©åãããæç¢ºã«å®çŸ©ãããã³ã³ããŒãã³ãã«ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç®¡çãšæŽæ°ã容æã«ãªããŸãã
åå®å šæ§ã®éèŠæ§
åå®å šæ§ãšã¯ãæ£ããåã®ããŒã¿ã«å¯ŸããŠæäœãå®è¡ãããããšãä¿èšŒããããã°ã©ãã³ã°èšèªã®ããããã£ã§ããæ±çšã€ã³ãã©ã¹ãã©ã¯ãã£ã®æèã§ã¯ãåå®å šæ§ãšã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ãªãœãŒã¹ã®å®çŸ©ãšããããžã§ãã³ã°ã«äœ¿çšããããã©ã¡ãŒã¿ãšèšå®ããæåŸ ãããåãšå€ã§ããããšãä¿èšŒããããšãæããŸãã
ããšãã°ãVMã¢ãžã¥ãŒã«ãã¡ã¢ãªãµã€ãºãã©ã¡ãŒã¿ãšããŠã®ã¬ãã€ãæ°ãè¡šãæŽæ°ãæåŸ ããŠããå Žåãåå®å šæ§ã«ããããŠãŒã¶ãŒã誀ã£ãŠæååãè² ã®æ°ãæž¡ãããšãé²ãããšãã§ããŸããåæ§ã«ããããã¯ãŒã¯ã¢ãžã¥ãŒã«ããµããããã®æå¹ãªCIDRãããã¯ãæåŸ ããŠããå Žåãåå®å šæ§ã«ãããæäŸãããå€ãå®éã«æå¹ãªCIDRã§ããããšãä¿èšŒããŸãã
æ±çšã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãããåå®å šæ§ã¯ãªãéèŠãªã®ãïŒ
- ãšã©ãŒã®é²æ¢ïŒåå®å šæ§ã¯ãéçºããã³ãããã€ããã»ã¹ã®ã§ããã ãæ©ãæ®µéã§ãšã©ãŒãæ€åºããã®ã«åœ¹ç«ã¡ãæ¬çªç°å¢ã§ã®äºæãã¬é害ãããŠã³ã¿ã€ã ãé²ããŸãã
- ä¿¡é Œæ§ã®åäžïŒã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã³ããŒãã³ããæ£ããèšå®ãããŠããããšãä¿èšŒããããšã§ãåå®å šæ§ã¯ã·ã¹ãã ã®å šäœçãªä¿¡é Œæ§ãšå®å®æ§ã«è²¢ç®ããŸãã
- ã»ãã¥ãªãã£ã®åŒ·åïŒåå®å šæ§ã¯ãAPIããŒããã¹ã¯ãŒããªã©ã®æ©å¯ãã©ã¡ãŒã¿ãå®å šãã€æ£ããåŠçãããããšãä¿èšŒããããšã§ãã»ãã¥ãªãã£äžã®è匱æ§ãé²ãã®ã«åœ¹ç«ã¡ãŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®ä¿é²ïŒåå®å šæ§ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã³ããŒãã³ãã«å¯ŸããŠæç¢ºãªå¥çŽãšæåŸ ãæäŸããããŒã ãååããã€ã³ãã©ã¹ãã©ã¯ãã£ãé·æçã«ä¿å®ããããšã容æã«ããŸãã
- ãããã°ã®ç°¡çŽ åïŒãšã©ãŒãçºçããå Žåãåå®å šæ§ã¯æ ¹æ¬åå ãããè¿ éãã€å¹ççã«ç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
åå®å šæ§ãå®è£ ããããã®æŠç¥
çµç¹ãæ±çšã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã§åå®å šæ§ãå®è£ ããããã«æ¡çšã§ããããã€ãã®æŠç¥ããããŸãããããã®æŠç¥ã¯ãåçŽãªæ€èšŒæè¡ãããããé«åºŠãªåã·ã¹ãã ãã³ãŒãçæããŒã«ãŸã§å€å²ã«ããããŸãã
1. å ¥åæ€èšŒ
åå®å šæ§ãžã®æãåºæ¬çãªã¢ãããŒãã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£å®çŸ©ã§äœ¿çšããããã¹ãŠã®ãã©ã¡ãŒã¿ãšèšå®ã«å¯ŸããŠå ¥åæ€èšŒãå®è¡ããããšã§ããããã«ã¯ãæäŸãããå€ãæåŸ ãããåãšå¶çŽã«æºæ ããŠããããšã確èªããããšãå«ãŸããŸãã
äŸ (Terraform)ïŒ
resource "aws_instance" "example" {
ami = var.ami
instance_type = var.instance_type
tags = {
Name = var.instance_name
}
}
variable "ami" {
type = string
validation {
condition = can(regex("^ami-[0-9a-f]+", var.ami))
error_message = "The AMI ID must be a valid AMI ID starting with 'ami-' followed by hexadecimal characters."
}
}
variable "instance_type" {
type = string
default = "t2.micro"
validation {
condition = contains(["t2.micro", "t2.small", "t2.medium"], var.instance_type)
error_message = "The instance type must be one of 't2.micro', 't2.small', or 't2.medium'."
}
}
variable "instance_name" {
type = string
description = "The name of the instance"
}
ãã®äŸã§ã¯ãTerraform倿°ã¯ç¹å®ã®åïŒäŸïŒ`string`ïŒãšæ€èšŒã«ãŒã«ã§å®çŸ©ãããæäŸãããå€ãç¹å®ã®åºæºãæºãããŠããããšãä¿èšŒããŸãã`ami`倿°ã®æäŸãããå€ãæåŸ ãããAMI ID圢åŒã«äžèŽããªãå Žåããããã€äžã«ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
2. éçè§£æ
éçè§£æããŒã«ã䜿çšããŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã³ãŒããèªåçã«åæããæœåšçãªåãšã©ãŒããã®ä»ã®åé¡ãç¹å®ã§ããŸãããããã®ããŒã«ã¯ãéçºäžã«ããã«æããã«ãªããªãå¯èœæ§ã®ããäžæŽåãæªäœ¿çšã®å€æ°ããã®ä»ã®åé¡ãªã©ãæ€åºã§ããŸãã
éçè§£æããŒã«ã®äŸãšããŠã¯ãCheckovãTerrascanãtfsecãªã©ããããŸãããããã®ããŒã«ã¯CI/CDãã€ãã©ã€ã³ã«çµ±åããŠããã¹ãŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã³ãŒãããããã€åã«åŸ¹åºçã«åæãããããã«ããããšãã§ããŸãã
3. åã·ã¹ãã
ããé«åºŠãªã¢ãããŒãã«ã¯ãåã·ã¹ãã ã䜿çšããŠã€ã³ãã©ã¹ãã©ã¯ãã£ãªãœãŒã¹ã®åå¶çŽãå®çŸ©ããã³åŒ·å¶ããããšãå«ãŸããŸããåã·ã¹ãã ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£å®çŸ©ã§äœ¿çšã§ããããŒã¿ã®åãæå®ãããã¹ãŠã®æäœãæ£ããåã®ããŒã¿ã«å¯ŸããŠå®è¡ãããããšãä¿èšŒããããã®æ£åŒãªæ¹æ³ãæäŸããŸãã
Pulumiã®ãããªäžéšã®IaCããŒã«ã¯ãåã·ã¹ãã ããã€ãã£ãã«ãµããŒãããŠããŸããPulumiã䜿çšãããšãéçºè ã¯TypeScriptãPythonãGoãªã©ã®ããã°ã©ãã³ã°èšèªã䜿çšããŠã€ã³ãã©ã¹ãã©ã¯ãã£ãªãœãŒã¹ãå®çŸ©ã§ãããããã¯åŒ·åãªåãã§ãã¯æ©èœãæäŸããŸãã
äŸ (TypeScript ã䜿çšãã Pulumi)ïŒ
import * as aws from "@pulumi/aws";
const vpc = new aws.ec2.Vpc("my-vpc", {
cidrBlock: "10.0.0.0/16",
tags: {
Name: "my-vpc",
},
});
const subnet = new aws.ec2.Subnet("my-subnet", {
vpcId: vpc.id,
cidrBlock: "10.0.1.0/24",
availabilityZone: "us-west-2a",
tags: {
Name: "my-subnet",
},
});
const instance = new aws.ec2.Instance("my-instance", {
ami: "ami-0c55b25a9b8e31e23", // æå¹ãªAMI IDã«çœ®ãæããŠãã ãã
instanceType: "t2.micro",
subnetId: subnet.id,
tags: {
Name: "my-instance",
},
});
export const publicIp = instance.publicIp;
ãã®äŸã§ã¯ãPulumiã¯TypeScriptã䜿çšããŠAWSãªãœãŒã¹ãå®çŸ©ããŠããŸããTypeScriptã³ã³ãã€ã©ã¯ã³ãŒãã®åãã§ãã¯ãå®è¡ãããã¹ãŠã®ãã©ã¡ãŒã¿ãæ£ããåã§ããããã¹ãŠã®æäœãæå¹ã§ããããšãä¿èšŒããŸããããšãã°ã`aws.ec2.Subnet`ãªãœãŒã¹ã®`vpcId`ããããã£ã¯æååã§ããããšãæåŸ ãããTypeScriptã³ã³ãã€ã©ã¯ãã®å¶çŽã匷å¶ããŸãã
4. ã³ãŒãçæ
åå®å šæ§ãžã®ãã1ã€ã®ã¢ãããŒãã¯ãã³ãŒãçæããŒã«ã䜿çšããŠãé«ã¬ãã«ã®ä»æ§ããã€ã³ãã©ã¹ãã©ã¯ãã£ã³ãŒããèªåçæããããšã§ãããããã®ããŒã«ã¯ãåå¶çŽã匷å¶ããçæãããã³ãŒããæå¹ã§äžè²«æ§ãããããšãä¿èšŒã§ããŸãã
ããšãã°ãã€ã³ãã©ã¹ãã©ã¯ãã£ãªãœãŒã¹ã®ã¹ããŒããå®çŸ©ããã³ãŒãçæããŒã«ã䜿çšããŠãã®ã¹ããŒãã«åºã¥ããŠTerraformãŸãã¯CloudFormationãã³ãã¬ãŒããçæã§ããŸããã³ãŒãçæããŒã«ã¯ãçæããããã¹ãŠã®ã³ãŒããæå®ãããåãšå¶çŽã«æºæ ããŠããããšã確èªããŸãã
課é¡ãšèæ ®äºé
åå®å šæ§ã¯æ±çšã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã§å€§ããªã¡ãªããããããããŸãããèæ ®ãã¹ã課é¡ãšæ³šæç¹ããããŸãã
- è€éãïŒåå®å šæ§ã®å®è£ ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£éçºããã»ã¹ã«è€éãã远å ããå¯èœæ§ããããŸããåå¶çŽãé©åã«å®çŸ©ããã匷å¶ãããããšãä¿èšŒããã«ã¯ãæ éãªèšç»ãšèšèšãå¿ èŠã§ãã
- ããŒã«ïŒãã¹ãŠã®IaCããŒã«ãåã·ã¹ãã ããã€ãã£ãã«ãµããŒãããŠããããã§ã¯ãããŸãããçµç¹ã¯ãåå®å šæ§ãå®è£ ããããã«å€éšããŒã«ãã©ã€ãã©ãªã«äŸåããå¿ èŠãããå ŽåããããŸãã
- åŠç¿æ²ç·ïŒéçºè ã¯ãåã·ã¹ãã ãã³ãŒãçæããŒã«ã广çã«äœ¿çšããããã«ãæ°ããããã°ã©ãã³ã°èšèªãæŠå¿µãåŠã¶å¿ èŠãããå ŽåããããŸãã
- ä¿å®ïŒã€ã³ãã©ã¹ãã©ã¯ãã£ãæéãšãšãã«é²åããã«ã€ããŠãåå®çŸ©ãšæ€èšŒã«ãŒã«ã®ä¿å®ã¯å°é£ã«ãªãå¯èœæ§ããããŸãã
- å®è¡æå¯Ÿã³ã³ãã€ã«æãã§ãã¯ïŒéçè§£æãšåã·ã¹ãã ã¯ã³ã³ãã€ã«æã«å€ãã®ãšã©ãŒãæ€åºã§ããŸãããäžéšã®ãšã©ãŒã¯å®è¡æã«ã®ã¿æ€åºãããå¯èœæ§ããããŸãããããã®å®è¡æãšã©ãŒãæ€åºããŠå¯ŸåŠããããã«ãå æ¬çãªç£èŠãšãã®ã³ã°ãæŽåããããšãéèŠã§ãã
åå®å šæ§ã«é¢ãããã¹ããã©ã¯ãã£ã¹
æ±çšã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã§åå®å šæ§ã广çã«å®è£ ããããã«ãçµç¹ã¯ãããã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãã¹ãã§ãã
- æç¢ºãªåå®çŸ©ã®å®çŸ©ïŒãã¹ãŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãªãœãŒã¹ãšãã©ã¡ãŒã¿ã§æåŸ ãããããŒã¿ã®åãæç¢ºã«å®çŸ©ããŸãã
- åå¶çŽã®åŒ·å¶ïŒå ¥åæ€èšŒãéçè§£æãåã·ã¹ãã ã䜿çšããŠããã¹ãŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã³ãŒãã«åå¶çŽã匷å¶ããŸãã
- åãã§ãã¯ã®èªååïŒCI/CDãã€ãã©ã€ã³ã«åãã§ãã¯ãçµ±åããŠããããã€åã«ãã¹ãŠã®ã³ãŒãã培åºçã«æ€èšŒãããããã«ããŸãã
- ã³ãŒãçæããŒã«ã®äœ¿çšïŒé«ã¬ãã«ã®ä»æ§ããã€ã³ãã©ã¹ãã©ã¯ãã£ã³ãŒããèªåçæããããã«ãã³ãŒãçæããŒã«ã®äœ¿çšãæ€èšããŸãã
- ç£èŠãšãã°ïŒå®è¡æãšã©ãŒãæ€åºããŠå¯ŸåŠããããã«ãå æ¬çãªç£èŠãšãã®ã³ã°ãå®è£ ããŸãã
- åå®çŸ©ã®ææžåïŒåå®çŸ©ãšæ€èšŒã«ãŒã«ãææžåããŠãããŒã ãã€ã³ãã©ã¹ãã©ã¯ãã£ãå ±åã§ä¿å®ããããããŸãã
- 宿çãªã¬ãã¥ãŒãšæŽæ°ïŒã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ã®å€æŽãåæ ããããã«ãåå®çŸ©ãšæ€èšŒã«ãŒã«ã宿çã«ã¬ãã¥ãŒããŠæŽæ°ããŸãã
- é©åãªããŒã«ã®éžæïŒåå®å šæ§ãååã«ãµããŒãããçµç¹ã®æè¡çå°éç¥èãšèŠä»¶ã«åèŽããIaCããŒã«ãšã©ã€ãã©ãªãéžæããŸããããšãã°ã匷åãªåä»ãã®ããã«TypeScript/Python/GoãåããPulumiã®ãããªããŒã«ãæ€èšããããã¯ãŒã¯ãããŒã«ãªã³ã¿ãŒïŒäŸïŒTerraformçšã®tflintïŒãçµã¿èŸŒãã ãããŸãã
ããŸããŸãªã¯ã©ãŠããã©ãããã©ãŒã ã§ã®äŸ
åå®å šæ§ã®å®è£ ã¯ãããŸããŸãªã¯ã©ãŠããã©ãããã©ãŒã ãIaCããŒã«ã«ãã£ãŠè¥å¹²ç°ãªããŸãã以äžã«äŸã瀺ããŸãã
AWS CloudFormation
CloudFormationã¯JSONãŸãã¯YAMLã䜿çšããŠã€ã³ãã©ã¹ãã©ã¯ãã£ãªãœãŒã¹ãå®çŸ©ããŸããPulumiã®ãããªåŒ·åãªåã·ã¹ãã ã¯ãããŸããããCloudFormationã®çµã¿èŸŒã¿é¢æ°ãšæ€èšŒã«ãŒã«ã䜿çšããŠãããçšåºŠã®åå®å šæ§ã匷å¶ã§ããŸãã
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref AMI
InstanceType: !Ref InstanceType
Parameters:
AMI:
Type: AWS::SSM::Parameter::Value
Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Description: AMI ID
InstanceType:
Type: String
Default: t2.micro
AllowedValues:
- t2.micro
- t2.small
- t2.medium
ãã®äŸã§ã¯ã`AllowedValues`ã¯`InstanceType`ãã©ã¡ãŒã¿ã§èš±å¯ãããå€ãå¶éããæ¹æ³ãæäŸããŸãã
Azure Resource Manager (ARM) ãã³ãã¬ãŒã
ARMãã³ãã¬ãŒããJSONã䜿çšããŠãªãœãŒã¹ãå®çŸ©ããŸããCloudFormationãšåæ§ã«ããã©ã¡ãŒã¿ãšæ€èšŒã«ãŒã«ã䜿çšããŠåå¶çŽã匷å¶ã§ããŸãã
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]",
"tier": "Standard"
},
"kind": "StorageV2",
"properties": {}
}
]
}
`parameters`ã»ã¯ã·ã§ã³ã®`allowedValues`ããããã£ã¯ã`storageAccountType`ãã©ã¡ãŒã¿ã§èš±å¯ãããå€ãå¶éããŸãã
Google Cloud Deployment Manager
Deployment Managerã¯YAMLã䜿çšããŠã€ã³ãã©ã¹ãã©ã¯ãã£ãªãœãŒã¹ãå®çŸ©ããŸããã¹ããŒãæ€èšŒã䜿çšããŠåå¶çŽã匷å¶ã§ããŸãã
resources:
- name: the-vm
type: compute.v1.instance
properties:
zone: us-central1-f
machineType: zones/us-central1-f/machineTypes/n1-standard-1
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
sourceImage: projects/debian-cloud/global/images/family/debian-9
# You can define schema validation in the schema section
# but for simplicity, this example omits it.
Deployment Managerã¯ã¹ããŒãæ€èšŒããµããŒãããŠããŸããããã€ãã£ãåã·ã¹ãã ãåããããŒã«ãšæ¯èŒããŠãããæåã®æ§æãå¿ èŠã«ãªãããšããããããŸãã
çµè«
åå®å šæ§ã¯ãæ±çšã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãããè€éãã®ç®¡çãšä¿¡é Œæ§ã®ç¢ºä¿ã®éèŠãªåŽé¢ã§ããåæ€èšŒãéçè§£æãåã·ã¹ãã ãå®è£ ããããšã§ãçµç¹ã¯ãšã©ãŒãé²ããã»ãã¥ãªãã£ãåäžãããã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ãããããã°ãç°¡çŽ åã§ããŸããèæ ®ãã¹ã課é¡ãšæ³šæç¹ããããŸãããåå®å šæ§ã®ã¡ãªããã¯ã³ã¹ããã¯ããã«äžåããŸãããã¹ããã©ã¯ãã£ã¹ã«åŸããé©åãªããŒã«ãéžæããããšã§ãçµç¹ã¯åå®å šæ§ã广çã«å®è£ ããããå ç¢ã§ä¿å®æ§ã®é«ãã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§ç¯ã§ããŸããã¯ã©ãŠããã©ãããã©ãŒã ãé²åãç¶ããã«ã€ããŠãåå®å šæ§ã®éèŠæ§ã¯å¢ãã°ããã§ãããã¯ã©ãŠãããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã³ç®¡çãããã¹ãŠã®çµç¹ã«ãšã£ãŠäžå¯æ¬ ãªèæ ®äºé ãšãªã£ãŠããŸãã
çµè«ãšããŠãæ±çšã€ã³ãã©ã¹ãã©ã¯ãã£æŠç¥ã§åå®å šæ§ãåãå ¥ããããšã¯ãåãªããã¹ããã©ã¯ãã£ã¹ã§ã¯ãªããã¯ã©ãŠããããã€ã¡ã³ãã®é·æçãªå®å®æ§ãã»ãã¥ãªãã£ãã¹ã±ãŒã©ããªãã£ãžã®æè³ã§ããæç¢ºã«å®çŸ©ãããåã峿 Œãªæ€èšŒãèªååããããã§ãã¯ãåªå ããããšã§ãçµç¹ã¯ãªã¹ã¯ã軜æžããéçšãåçåããã¯ã©ãŠãç°å¢ã«ãããä¿¡é Œæ§ã®æåãè²ãããšãã§ããŸããããã¯ãæçµçã«ãã€ãããŒã·ã§ã³ã®å éãããŠã³ã¿ã€ã ã®åæžãããã³ããããäŸåããéèŠãªã¢ããªã±ãŒã·ã§ã³ãæ¯ããã€ã³ãã©ã¹ãã©ã¯ãã£ãžã®ä¿¡é Œã®åäžã«ã€ãªãããŸãã