ã©ããããããã¯ãŒã¯ã³ã³ãã³ãç ç©¶äŒã«æå±ããŠãããŸããcyokozaiãšç³ããŸãã ããã§ã¯ããããã¯ãŒã¯ã³ã³ãã³ãç ç©¶äŒã®ãããžã§ã¯ãã®äžã€ã§ããNekko Cloudã«IaCãå°å ¥ããNekko Cloudã®ç°å¢æ§ç¯ã®èªååãç®çãšããŸãã æè¿æµè¡ã£ãŠããããªãã§ãããããIaaSã ã®KaaSã ã®SaaSã ã®...ã ç§ãã¡ã®Nekko Cloudã ã£ãŠã€ã«ããããããžã§ãã³ã°ããŒã«ãå°å ¥ããŠãããŒã ã¡ã³ããŒã®ã¿ããªãèªç±ã«èšç®ãªãœãŒã¹ã䜿ããç°å¢ãçšæããããã§ãïŒ ã£ãŠããšã§ãProxmox VEã®VMäœæãTerraformãšcloud-initã䜿ã£ãŠç°¡åã«ã§ããããã«ããããããªæãã®ãªããžããªã§ãð
- Proxmox VEã®VMæ§ç¯ãcloud-initãšTerraformãå©çšããŠãç°¡ç¥åãã€IaC察å¿ã§ããããã«ãããã®
- Proxmox VEã«cloud-initãã»ããã¢ããããæ¹æ³ã®ç޹ä»
- Terraformã®åºæ¬æäœãštfstateãä¿è·ããããã®å¿çšäŸ
cloud-initãšã¯
äžèšã®éãLinux OSã®ã€ã³ã¹ã¿ã³ã¹ã®åæèšå®ãããæãã«èªååããŠãããåªããã®ã GUIãšCLIã©ã¡ãã§ãèšå®å¯èœð ä»åã¯Terraformã®Proxmox Providerã䜿ã£ãŠå€éšããUbuntuã€ã³ã¹ã¿ã³ã¹ã®äœæãç®æšã«ããŸãã
Terraformãšã¯
HashiCorp瀟ãæäŸããTerraformã¯ä»ã®Infrastructure as Code (IaC) æä»£ãæ¯ããæãã¹ã¿ã³ããŒããªããããžã§ãã³ã°ããŒã«ã§ãã IBMã§ã¯æ¬¡ã®ããã«ç޹ä»ãããŠããŸãã
Terraform ã¯ãã¯ã©ãŠãããã³ãªã³ãã¬ãã¹ã®ãªãœãŒã¹ãå®å šãã€å¹ççã«æ§ç¯ã倿ŽãããŒãžã§ã³ç®¡çã§ããã³ãŒã ããŒã«ãšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã§ãã
Application Programming Interfaces (APIs)ã䜿ããã»ãšãã©ã®ãã©ãããã©ãŒã ã§Terraformã¯äœ¿çšå¯èœãªãã ãšãã ãããŒð
ã¶ã£ã¡ãããIaCã®ããã¡ã¯ãã¹ã¿ã³ããŒãã ããðããšèšããããšããã§ã¯ãããã§ããããããã«ããã ãã ãšãšã©ã€äººã«æããã¡ãããããã çé¢ç®ã«ãããŸãã
- Infrastructure as Code (IaC)
IaCãšã¯ããããŸã§æåã§è¡ã£ãŠããæé ãã³ãŒãåããããšã§ãã ã€ã³ãã©ã®èšå®å 容ãã³ãŒãåãããããšã§ãèšå®ã®äœ¿ããŸããã容æã§ç¢ºå®ã«ãªããŸãã ãã®ãããåãç°å¢ã®åå©çšæ§ãé«ãã®ãç¹åŸŽã§ãã ããã«ãäžéšåã®ã¿å€æŽããç°å¢ãäœæããéã«ãããæéãåŸæ¥ããå€§å¹ ã«åæžããæåæäœã«ãããã¹ãèµ·ãã«ããããããšãå¯èœã§ãã ãŸããgitã«ããããŒãžã§ã³ç®¡çãå¯èœãšãªããããã«ãgithubãå©çšããããšã§ã€ã³ãã©ãžèšå®ãé©çšããåã®ã³ãŒãã¬ãã¥ãŒãå¯èœã«ãªããŸãã IaCã®é åãšã¯ãéçºãšéçšã«å¿ èŠäžå¯æ¬ ãªã¹ããŒããšå®å šæ§ãåããããŒãžã§ã³ç®¡çãå¯èœã§ããããªããŒã·ã§ã³ãå®è¡ã§ããåå©çšã容æã§ããããšã§ãã ããªããæ±ãè€éãªã€ã³ãã©ã®ãã¹ãŠãããã£ãæ°åè¡ã®ãœãŒã¹ã³ãŒãã«ãŸãšããŠãããªããŠãã¹ãããªããšã ãšã¯æããŸãããïŒ - åªçæ§ã®ç¢ºä¿
ç§ãã¡ã¯Proxmox VEã«å¯ŸããŠã¹ããŒãã¬ã¹ãªVMæ§ç¯ãç®çãšããŠããŸãã ç¹ã«æ³šç®ãããã®ã¯ãTerraformã®State Lockingã§ãã ããã¯ãè€æ°ã®ãŠãŒã¶ããµãŒãã«å¯ŸããŠå€æŽãæäœãå®è¡ããããšãããšãã«ã倿Žã«ãããã¡ã€ã«ã®ç«¶åãé²ãæ©èœã§ãã tfstateãã¡ã€ã«ã«ããã¯ãããããšãä»ã®ãŠãŒã¶ã¯ãã®tfstateãã¡ã€ã«ã®å€æŽã¯ã§ããªãã®ã§ãå ç¢æ§ã«åªããŠããŸãã ããã§åªçæ§ã«ã€ããŠã¯æ·±å ãããŸããããæ°ã«ãªã人ã¯ã³ãã©ã®èšäºããèªã¿ã«ãªã£ãŠãã ããã - ã¹ã±ãŒã©ãã«ãªå€æŽ
ç§ãã¡ãæ±ããŠããã®ã¯ãããã°ã©ã ã®é¢æ°ã®ããã«åŒæ°ã«å ¥ããå€ã倿Žããã ãã§ãVMã®ä»æ§ã倿Žã§ãããæè»œããã§ãã ä»åäœæããtfãã¡ã€ã«ã§ã¯ãæèŠã®äººããã©ã¡ãŒã¿ãããããå Žæã極åäžãæã«éäžããããã«èšèšããŠããŸãã OSã®å€æŽãCPUã®ã³ã¢æ°ãã¡ã¢ãªã®å®¹éãã¹ãã¬ãŒãžã®å€§ãã...ããããã¹ãŠã¯å€æ°ã®å€ãå€ããã ãã§å®çŸã§ããã ãããã¯ãŒã¯ã®èšå®ãVMIDã®çŽã¥ããSSHããŒã®ä¿åãè€æ°å°ã®VMã®åæãããã€ã TerraformãæããŠããååãªããããžã§ãã³ã°æ©èœã¯ãåããŠè»ãçŽè»ãã人ã®ããã«ãå©çšè ã®èŠåŽãäžæ°ã«è§£æ±ºããŠãããŸãã
- ããããžã§ãã³ã°ããŒã«ãšããŠã®ä¿¡é Œæ§
ãããŸã§ãTerraformã¯å€ãã®ã¯ã©ãŠããµãŒãã¹ã§æ¡çšãããŠããå®çžŸããããŸãã ããããžã§ãã³ã°ããŒã«ã®æå€§ã®å©ç¹ã¯ãã€ã³ãã©ã«é¢ããã»ã©ãã©ããããé ç®ããœãŒã¹ã³ãŒãã§å®çŸ©ããããšãã§ããç¹ã§ãã å ç¢ãªã³ãŒãã§ã€ã³ãã©ãäœç³»åããããšãã§ãããããã€ãã«å¯ŸããŠåžžã«ã¹ããŒãã¬ã¹ãªããããžã§ãã³ã°ãå®è¡ã§ããŸãã
ä»åã¯Telmate/proxmoxãProxmox ProviderãšããŠäœ¿çšããŠããŸãã Terraformã§éžæå¯èœãªProxmoxã®ãããã€ãã¯ããã€ãååšããŸãã ä»åã¯ãã®äžããTelmateãšBPGã®2ã€ãæ¯èŒããŸããã Telmateã®éžå®çç±ã«ã€ããŠã¯ä»¥äžã®éãã§ãã
- è±å¯ãªæ©èœ
Telmate/proxmoxã®ããŒãžã§ã³ã¯3.0.1-rc1ã§ãã RCçã䜿çšããŠããçç±ã¯ãCloudInitã®æè»ãªã³ã³ãã£ã°èšå®ãå®è£ ããŠããããã§ãã ä»ã®ãšããåäœã«èŽåœçãªåœ±é¿ã¯åºãŠããŸããããããŒã«ããã¯ãèŠéã«å ¥ãã€ã€ãCloudInitã®æ©æµãæå€§éåŸãããã«ä»åéžæããŠããŸãã - ã³ãã¥ããã£ã掻çºã§ãã
éçºã³ãã¥ããã£ã®æŽ»åãæŽ»çºã§ããããšã¯å€§åãªèŠçŽ ã ãšèããŠããŸãã ãµããŒããçµäºããŠããããããŒãžã§ã³ã®æŽæ°ãæ»ã£ãŠãããããªOSSã¯ãšãŠã䜿ããŸããã ãœãŒã¹ã³ãŒãã®æçµæŽæ°æ¥ãã€ã·ã¥ãŒã®ããåããªã©ã確èªããããšã§ãã³ãã¥ããã£ã®æŽ»åç¶æ³ãããçšåºŠææ¡ã§ããã§ãããã ãã®ç¹ã§ã¯ãTelmateãšBPGã¯åæ¹æŽ»çºãªã€ã·ã¥ãŒã亀ããããŠãããä»åŸã®ãµãŒãã¹ã®çºå±ãæåŸ ãããŸãã - ããŒãžã§ã³ã®ã¢ããããŒãã¯ç Žå£çæŽæ°ã§ã¯ãªãã
ä»åã®éžå®çç±ã®æ±ºãæã¯ãã®èŠçŽ ã«ãããŸãã Telmateã¯ãæ¢ã«3åã®ã¡ãžã£ãŒã¢ããããŒããè¡ã£ãŠãããTerraformãããã€ããšããŠã®æ©èœã¯é«ãã¬ãã«ã§æçããŠããŠãããšèšããŸãã ããããBPGã¯æªã ã¡ãžã£ãŒã¢ããããŒãã¯è¡ãããŠãããããã€ããŒã¢ããããŒããé »ç¹ã«è¡ã£ãŠããç¶æ³ã§ãã Terraformã®äœ¿çšå Žé¢ãèãããšå®å®çšŒåã¯å¿ é ãªãããé »ç¹ã«ç Žå£çãªã¢ããããŒããçºçãããããã€ãã¯æ£çŽæããŠäœ¿ããŸããã
ãããªæãã§ããããã...ã
ããŸãããããã®ã¯æžããªããŠããªãã®ã§ãæãæç« ã§ç³ãèš³ãªãã§ãã
ã¡ãªã¿ã«ä»åã¯èŠéã£ãBPGã§ããããã¡ããå®è£
ãããŠããæ©èœã®åŽé¢ã§ã¯ãTelmate以äžã®ããã³ã·ã£ã«ãç§ããŠãããšæããŸãã
ã¡ãžã£ãŒã¢ããããŒãã®å°æ¥ãæåŸ
ãã€ã€ããã¡ãã®åäœæ€èšŒã䞊è¡ããŠé²ããŠããããã§ããã
äœæããIMGãã¡ã€ã«ãããã³ãã¬ãŒããäœæããŠãã¯ããŒã³ããããšã§VMã®ã»ããã¢ããã®æéãçãããšãã§ããã
cloud-initã¯ãããå¯èœã«ããã¯ã©ãŠãã§ã®IaCãè¡ãäžã§ã¯æ¬ ãããªãããŒã«ã§ããã
Proxmoxã§cloud-initã䜿çšããåçš®VMã®ãããã€ãèªååããã
以äžã§ã¯GUIãšCLIäž¡æ¹ã®èšå®ã®ä»æ¹ã玹ä»ããã
- Proxmox VEã®GUIãéããcloud-initãäœæããããŒãã®localãéžæ
- ISO Imagesãéžæãã䜿çšããISOãã¡ã€ã«Ubuntu server Cloudimg 22.04LTSãã¢ããããŒããã
- æ®æ®µéãCreate VMãæŒããŠãã³ãã¬ãŒãçšã®VMãäœæïŒãã ãååèµ·åã¯ãŸã ããªãããã«ïŒbootã®ãã§ãã¯ãå€ããŠããïŒ
- VM.HardwareãéžæããAddããCloudInit Driveãéžæãã
- cloud-initã®ä¿åå ãéžæãã
- VM.cloud-initãéžæãããšãç·šéå¯èœã«ãªã£ãŠãã
- User, Password, IP ConfigïŒGatewayïŒãèšå®ãã
- èšå®ãå®äºããããå³äžã®MoreããConvert to TemplateãéžæããŠãã³ãã¬ãŒããäœæ
- ãã³ãã¬ãŒãã宿ãããšãããªæãã®ç»é¢ã«ãªã
- DatacenterãéžæãPermissions.Userãéžæãã
- Addãã¯ãªãã¯ããŠãTerraformãå®è¡ããããã®ãŠãŒã¶ãæ°èŠäœæãã
- åçš®å¿ èŠãªé ç®ãèšå®ããïŒä»åã¯é©åœã«hogeãäœæïŒ
- 次ã«ãPermissions.API Tokensãžç§»åããåæ§ã«Addãã¯ãªãã¯ããŠããŒã¯ã³ã®æ°èŠçºè¡ãè¡ã
- å çšäœæãããŠãŒã¶ãéžæããä»»æã®Token IDãå ¥åããïŒä»åã¯hogehogeïŒ
- Privilege Separationã®ãã§ãã¯æ¬ãå€ããŠãã
- çºè¡ããTokenãšSecretã¯
terraform.tfvars
ã®PM_API_TOKEN_ID
ãšPM_API_TOKEN_SECRET
ãžãããã匵ãä»ããŠãã
- Permissions.Rolesãžç§»åããCreateãéžæ
- æ°ãã«TerraformProviderãšããããŒã«ãäœæãã â»ãã®é ç®ã¯CLIã§è¡ã£ãæ¹ã楜ã§ãã...
- æåŸã«Permissionãžç§»åããAddãéžæ
- PathïŒ/ïŒããŠãŒã¶ïŒhogeïŒãããŒã«ïŒTerraformProviderïŒãéžæãã
- Proxmoxã®ããŒãã«å ¥ããVMã«äœ¿çšããã€ã¡ãŒãžãããŠã³ããŒããã ä»å䜿çšããã€ã¡ãŒãžã¯Ubuntu server Cloudimg 22.04LTS
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img -O ubuntu-22.04-server-cloudimg-amd64.img
- ãã³ãã¬ãŒãçšã®VMãäœæ
qm create <VM ID> --memory 4096 --balloon 1024 --net0 virtio,bridge=vmbr0
- localã®storageã«ISOãã¡ã€ã«ãã€ã³ããŒã
qm importdisk <VM ID> ubuntu-22.04-server-cloudimg-amd64.img local-lvm
- VMãã»ããã¢ããïŒnameserverã¯ãããã¯ãŒã¯ããšã«ä»»æã®IPãèšå®ïŒ
qm set <VM ID> --name <VM Name>
qm set <VM ID> --scsihw virtio-scsi-pci --virtio0 local-lvm:vm-<VM ID>-disk-0
qm set <VM ID> --virtio0 local-lvm:0,import-from=/root/ubuntu-22.04-server-cloudimg-amd64.img
qm set <VM ID> --boot order=virtio0
qm set <VM ID> --ide2 local-lvm:cloudinit
# qm set <VM ID> --nameserver 192.168.0.1
- VMãã³ãã¬ãŒãã«ã³ã³ããŒããã
qm template <VM ID>
@ymbk990ããã®èšäºãåèã«ã詳现ãªèšå®é
ç®ã¯tfvars
ã«ãŸãšããããã«äœæããŸãã
- Terraformçšã®æ°ããããŒã«
TerraformProvider
ãäœæ
pveum role add TerraformProvider -privs "Datastore.AllocateSpace Datastore.Audit Pool.Allocate Sys.Audit Sys.Console Sys.Modify VM.Allocate VM.Audit VM.Clone VM.Config.CDROM VM.Config.Cloudinit VM.Config.CPU VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.Migrate VM.Monitor VM.PowerMgmt SDN.Use"
- æ°ãããŠãŒã¶
hoge@pve
ãäœæ
pveum user add hoge@pve --password <password>
- ããŒã«
TerraformProvider
ããŠãŒã¶hoge@pve
ã«è¿œå
pveum aclmod / -user hoge@pve -role TerraformProvider
pvesh create /access/users/hoge@pve/token/hogehoge --privsep 0
ãå®è¡ããŠããŒã¯ã³ãçºè¡- çºè¡ããTokenãšSecretã¯
terraform.tfvars
ã®PM_API_TOKEN_ID
ãšPM_API_TOKEN_SECRET
ãžãããã匵ãä»ããŠãã
$ pvesh create /access/users/hoge@pve/token/hogehoge --privsep 0
ââââââââââââââââ¬âââââââââââââââââââââââââââââââââââââââ
â key â value â
ââââââââââââââââªâââââââââââââââââââââââââââââââââââââââ¡
â full-tokenid â hoge@pve!hogehoge â
ââââââââââââââââŒâââââââââââââââââââââââââââââââââââââââ€
â info â {"privsep":"0"} â
ââââââââââââââââŒâââââââââââââââââââââââââââââââââââââââ€
â value â xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx â
ââââââââââââââââŽâââââââââââââââââââââââââââââââââââââââ
ããããã¯ããã®ãªããžããªãããŒã«ã«ã«ã¯ããŒã³ããŠããããšãåæã§ãã
ãŸããããŸã§èªãã§ããã人ã¯ãããã«ãããã£ãŠãããŠãããïŒðð
cd .\terraform
ã§tfãã¡ã€ã«ãä¿åããããã£ã¬ã¯ããªãžç§»återraform init
ãå®è¡ããŠåæåterraform init
ã¯äž»ã«æ¬¡ã®ããšãè¡ã
- providerã®åæå
- ãã©ã°ã€ã³ã®ããŠã³ããŒã
- backendã®èšå®
- moduleã®åæå
åè
$ terraform init
Initializing the backend...
Initializing modules...
Initializing provider plugins...
- Reusing previous version of telmate/proxmox from the dependency lock file
- Using previously-installed telmate/proxmox v3.0.1-rc1
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Important
Terraformã§ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç¶æ
ãèšé²ããtfstateãã¡ã€ã«ãååšããŸãã
ãã®ãã¡ã€ã«ã¯ãããããžã§ãã³ã°ã«ãããäœæãªãœãŒã¹ããã©ã°ã€ã³ã®äŸåé¢ä¿ãªã©éèŠãªæ
å ±ãå«ã¿ãŸãã
ãããŠãèŽåœçãªã®ã¯ã以å建ãŠãtfstateãã¡ã€ã«ãä¿è·ããã«æ¬¡ã®VMããããã€ããŠããŸããšãtfstateãã¡ã€ã«ãäžæžããããŠããŸããçµæçŸåšåäœããŠããVMãç Žå£ããåŸã«æ°ãã«VMããããã€ããŠããŸããŸãã
ãã®çŸè±¡ãåé¿ããã«ã¯ãäºãtfstateãã¡ã€ã«ã®ä¿åå
ããããžã§ã¯ãããšã«åããŠããå¿
èŠããããŸãã
Terraformã®Backendãªãã·ã§ã³ã䜿ã£ãŠåæåæã«ä¿åå
ã宣èšãããšãã»ãã¥ã¢ãªããããžã§ãã³ã°ãå®çŸã§ããŸãã
terraform init -reconfigure -backend-config="path=tfstate/username/project-name.tfstate"
-reconfigure
ã¯æ¢åã®tfstateãã¡ã€ã«ã®æç¡ã«é¢ä¿ãªããèšå®ãåæ§æããŸãã
-backend-config
ã§tfstateãã¡ã€ã«ã®ä¿åå
ãèšå®ããŸãã
åçš®VMããã³ãªãŒãžã§ã³ã®èšå®é ç®ãèšè¿°ãã
backend.tf
ã®local
ã«ããVMãªãœãŒã¹ã®é
ç®ãé©å®èšå®ãã
-
Argument reference
onboot
: ãããã€æã«ãã®ãŸãŸèµ·åãã ããã©ã«ãã¯true
storage_pool
: 䜿çšããã¹ãã¬ãŒãžå ãcephfs
local-lvm
ããéžæ
-
VM config Ubuntu 22.04
os_name
: OSã®ååci_name
: cloud-initã§äºåã«äœæããVMãã³ãã¬ãŒãã®åådescription
: æŠèŠvmid
: Proxmox VMIDclone_num
: Proxmoxã¯ã©ã¹ã¿ãŒäžã«ãããã€ãããVMã®æ°cores
: VMã®ã³ã¢æ°ïŒããã©ã«ãã¯1ïŒmemory
: VMã®ã¡ã¢ãªæ°ïŒããã©ã«ãã¯2048MBïŒdisk_size
: VMã®ã¹ãã¬ãŒãžïŒããã©ã«ãã¯2252MBïŒ
tfvarsã®èšå®é ç®ã«ã€ããŠ
terraform.tfvars.template
ãåèã«å
容ãèšè¿°ããããšã
-
PROXMOX PROVIDER CONFIGURATION
NC_REGION
: Nekko Cloud PVE Regionã®ç¥èªïŒå¹åŒµ => mk, 浊å => ur, æŽ¥ç°æ²Œ => tuïŒPM_API_TOKEN_ID
: # Permissions.API Tokensã§äœæããAPI TokenPM_API_TOKEN_SECRET
: # Permissions.API Tokensã§äœæããAPI SecretPM_HOST_IP
: åPVEãªãŒãžã§ã³ã®IPã®ãã¹ãéšïŒNumberïŒNC_MK_IP
: åPVEãªãŒãžã§ã³ã®IPã®ãããã¯ãŒã¯éšïŒXXX.XXX.XXX.ïŒNC_UR_IP
: åPVEãªãŒãžã§ã³ã®IPã®ãããã¯ãŒã¯éšïŒXXX.XXX.XXX.ïŒNC_TU_IP
: åPVEãªãŒãžã§ã³ã®IPã®ãããã¯ãŒã¯éšïŒXXX.XXX.XXX.ïŒ
-
VM CONFIGURATION
- "vm_name": # VMã®åå
- "username": # VMã«ãã°ã€ã³ãããŠãŒã¶ããŒã
- "password": # VMãžã®ãã°ã€ã³æã«å¿ èŠãªãã¹ã¯ãŒã
- "public_key": # SSHçšã®å ¬ééµ
terraform plan
ãå®è¡ããŠtfãã¡ã€ã«ã«åé¡ãç¡ãã確èªãè¡ã£ãŠãããterraform apply
ãå®è¡ããŠãããã€
yes
ãšå ¥åããŠéå§ïŒ
$ terraform apply
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
~~~
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
- VMãåé€ããå Žåã¯
terraform destroy
ãå®è¡ãã
yes
ãšå ¥åããŠéå§ïŒ
$ terraform destroy
~~~
Plan: 0 to add, 0 to change, 1 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
~~~
Destroy complete! Resources: 2 destroyed.
Important
terraform apply / destroy
ã«ã€ããŠãå
çšã®terraform init
åæ§ã«tfstateãã¡ã€ã«ã®æå®ãããã³tfstate.buckupã®ä¿åå
ãæå®ããŸãã
ã³ãã³ãã¯ä»¥äžã®ãšããã§ãïŒdestroy
ãåæ§ïŒã
terraform apply --auto-approve -state=tfstate/username/project-name.tfstate -backup=tfstate/username/project-name.tfstate.backup
--auto-approve
ã¯å€æŽç¢ºèªã®å
¥åyes
ãçç¥ããŸãã
-state
ã¯å
çšãšåãtfstateãã¡ã€ã«ã®ãã¹ãæå®ããŸãã
-backup
ã¯tfstate.backupãä¿åããããã®ãã¹ãæå®ããŸãã
ãããŸã§ãç²ãæ§ã§ããïŒä»æ¥ããããªããNekko Cloudã®ãªãŒãžã§ã³ç®¡çè
ã®ä»²éå
¥ãã§ãð
ä»åã®IaCå®è£
ãçµãŠãããŒã ã¡ã³ããŒã®äœæ¥å¹çã®åäžã«é¢ãã課é¡ã¯å€ãæ®ã£ãŠãããšèããŠããŸãã
ããŒã ã¡ã³ããŒãæ±ããŠãããã®ã¯ãèªç±ã«è§Šã£ãŠå¥œããªããã«äœã£ããå£ãããã§ããVMãããã€ã§ã䜿ããç°å¢ã§ã¯ãªãã§ããããïŒ
IaCå°å
¥ã®äžçªã®ã¡ãªããã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®èªåæ§ç¯ã§ãã
ããã¯ãNekko Cloudã®åãªãŒãžã§ã³ç®¡çè
ããã®èŠç¹ã§ã¯äžå®æ°Žæºãã¯ãªã¢ãããšèªèããŠããŸãã
ã§ã¯ããªãŒãžã§ã³ç®¡çè
以å€ã®ããŒã ã¡ã³ããŒã¯ãVMãäœæããã®ã«äžããTerraformãåŠã¶å¿
èŠãããã®ã§ããããïŒ
ããã¯æ¬æ¥ããããããšããããé¢ãããããŸãã«ãé åããªéžæè¢ãªã®ã§ãã
ãšãŸãã説æåããŠãŠããããã£ãåŽèŠïŒToil: ãã€ã«ïŒã¯æ¶ããŠç¡ããªã£ããããªãã®ã§ãäžã€ãã€ãã¯ãããžãŒã䜿ã£ãŠè§£æ±ºããŠãããŸãããã
ä»ããã§ãã§ãã£ãšè©±ãããããããããŽãŒã«ãã³ãã¹ãã«é¢ããã話ã¯ã³ãã©ã®èšäºã§è©³ããè¿°ã¹ãŠããŸãã
ã§ã¯ã§ã¯ãä»åŸã®éçºã«ãæåŸ
ãã ããïŒð«¡
ãããããŸãð
- cloud-initã®ãã³ãã¬ãŒããã¯ã³ã¯ãªãã¯ã§äœæã§ããããã«ãããã®ã§ãCloudConfig.yamlåšãã調æ»äžã§ãããŸãð«¡
- çŸåšDiscordBotã§VMã®ãããã€ãè¡ãããŒã«ãéçºäžã§ãã
ä»ã®éçºã¡ã³ããŒã亀ããŠãæ¬æ Œçã«ããŒã ã¡ã³ããŒãžã®VMã®æãåºãã念é ã«çœ®ããã·ã¹ãã éçºãè¡ã£ãŠããŸãã
ä¹ããæåŸ ïŒïŒ
- cloud-initã䜿ã£ãLinux OSã®åæèšå®
- Proxmox VE cloud-init ã§ Ubuntu 20.04 ãèµ·åãã
- What is Terraform?
- Terraformãšã¯ | IBM
- ãµãŒããŒã¬ã¹ãæ°ã«ãªãéçºè ã«æ§ããã¹ãçæ§ãããšã¯ãã
- Terraform颿¥è³ªåéãäœã£ãŠã¿ã
- Terraform ã®ã³ãã³ãããªãã·ã§ã³ãåºæ¥ãã ã䜿ã£ãŠã¿ã
- Telmate/terraform-provider-proxmox
- bpg/terraform-provider-proxmox
- Proxmox Provider
- Terraform Registry
- Proxmox VEãšTerraformã§ã€ã³ã¿ãŒã³çã«ä»®æ³ãã·ã³ãæãåºã話
- Proxmox VEã®cloudinitã§userdataãèªç±ã«èª¿æŽãã
- éãç §ãã: ãã©ãããã©ãŒã ãšã³ãžãã¢ãªã³ã°ããŽãŒã«ãã³ãã¹ãã»ã«ããµãŒãã¹ã®ãã¯ãŒ