Terraform

Terraform 前言

今天介绍一下可以快速建立GCP各服务的套件Terraform,那麽Terraform是什麽?

  • 一句话说明的话可以这麽说,一个可支援多云端平台部署工具。
  • 可以根据Terraform建立的样板(.tf欓)透过指令快速建立起云端所需的服务,也可以建立起资料夹结构一次性的建立多种类云端服务(比方说VM 防火墙规则 硬碟等等...)

安装Terraform (MAC)

brew tap hashicorp/tap
brew install hashicorp/tap/terraform

terraform -version

开始Terraform (GCP)

  1. 建立起对应之料夹
  2. 建立起安装档案样板欓(main.tf)
  3. 取得GCP credentials json key
  4. 设定main.tf参数
mkdir test-terraform
cd test-terraform
touch main.tf

Terraform参数 (GCP VM)

  • 举例来说建立一台VM挂载外部硬碟

    • 设定专案
    provider "google" {
    credentials = file("/Dev/terraform/project-xxxxxx.json")
    project     = "project"
    region      = "asia-east1"
    }
    
    • 设定外部硬碟
    resource "google_compute_disk" "disk" {
    name  = "test-disk"
    type  = "pd-standard"
    zone  = "asia-east1-a"
    size  = 50
    }
    
    • 设定VM规格
    产生VM name乱数
    
    resource "random_id" "instance_id" {
    byte_length = 8
    }
    
    设定VM规格
    
    resource "google_compute_instance" "test-vm" {
    name         = "test-vm-${random_id.instance_id.hex}"
    machine_type = "n1-standard-4"
    zone         = "asia-east1-a"
    
    VM作业系统
    
    boot_disk {
     initialize_params {
       image = "centos-cloud/centos-7"
     }
    }
    
    • 设定网路
    network_interface {
     network = "default"
     subnetwork = "xxxxxx"
    
     access_config {
     }
    }
    
    • 开机设定
    metadata_startup_script = "mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb; mkdir -p /mnt/disk/test; mount -o discard,defaults /dev/sdb /mnt/disk/test; chmod a+w /mnt/disk/test; echo UUID=`blkid -s UUID -o value /dev/sdb` /mnt/disk/test ext4 discard,defaults,nofail 0 2 >> /etc/fstab "
    
    
    • 绑定Disk VM
    resource "google_compute_attached_disk" "default" {
    disk     = google_compute_disk.disk.id
    instance = google_compute_instance.test-vm.id
    }
    

Terraform运作 (GCP)

  1. 初始化档案
  2. 验证参数正确性
  3. 验证执行正确性
  4. 建立服务
  5. 删除服务
terraform init 

output:
Terraform has been successfully initialized!

terraform validate 

output:
Success! The configuration is valid.

terraform plan

output:
Plan: 4 to add, 0 to change, 0 to destroy.

terraform apply

output: 输入 yes
Enter a value: yes
Apply complete! Resources: 4 added, 0 changed, 0 destroyed.

terraform destroy

output: 输入 yes
Plan: 0 to add, 0 to change, 4 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

<<:  android studio 30天学习笔记-day 20-SQLlite

>>:  [Day21] Flutter GetX with animation

找LeetCode上简单的题目来撑过30天啦(DAY18)

我越来越懂linklist了(应该吧?),可喜可贺 题号:21 标题:Merge Two Sorte...

D2 - 环境安装 (Miniconda & PyCharm)

之前装Anaconda实在太占空间我看了一下我现在大概占了快5G 这次想来试试看轻量安装的Minic...

WUSON的CISSP学习资源

Effective CISSP LINE公开群组 [http://line.me/ti/g/vqK...

【後转前要多久】# Day24 JS - JavaScript 物件、函式

物件内可以放function 学生考了几分 var exam = {} console.log(ex...

Day 0x1 - 动机、目标、目录 (消费支付API)

0x1 动机 只是很单纯的有兴趣,练习看API文件, 试着在最短时间规划并建立出一个目标, 就是一个...