Skip to content

Instantly share code, notes, and snippets.

@MarshalW
Last active July 3, 2023 08:18
Show Gist options
  • Save MarshalW/0f5502be4630d01b952d5c71f3cb64df to your computer and use it in GitHub Desktop.
Save MarshalW/0f5502be4630d01b952d5c71f3cb64df to your computer and use it in GitHub Desktop.
Terraform在百度云上创建实例

Terraform在百度云上创建实例

准备工作

登录百度云控制台

  • 安全认证,Access Key,创建Access key
  • 云服务器BCC, 密钥对,然后导入本地用户的公钥(~/.ssh/id_rsa.pub)

在环境变量中加入:

# baiducloud
export BAIDUCLOUD_ACCESS_KEY="xxxxx"
export BAIDUCLOUD_SECRET_KEY="xxxxx"
export BAIDUCLOUD_REGION="bj"

创建文件

main.tf,将创建一个服务器实例

# Configure the BaiduCloud Provider
terraform {
  required_providers {
    baiducloud = {
      source = "baidubce/baiducloud"
    }
  }
  required_version = ">= 0.13"
}

data "baiducloud_images" "default" {
  os_name    = "ubuntu"
  name_regex = "^20.04"
}

# Create a web server
resource "baiducloud_instance" "my-server" {
  image_id              = "m-hDf0Uqut"
  name                  = "from-terraform"
  availability_zone     = "cn-bj-c"
  cpu_count             = "1"
  memory_capacity_in_gb = "1"
  keypair_id            = "k-ZH88qrxH"
  subnet_id             = baiducloud_subnet.default.id
  security_groups       = baiducloud_security_group.default.*.id
  billing = {
    payment_timing = "Postpaid"
  }
}

# Create an eip
resource "baiducloud_eip" "my-eip" {
  name              = "from-terraform"
  bandwidth_in_mbps = 100
  payment_timing    = "Postpaid"
  billing_method    = "ByTraffic"
}

resource "baiducloud_eip_association" "my-eip-asso" {
  eip           = baiducloud_eip.my-eip.eip
  instance_type = "BCC"
  instance_id   = baiducloud_instance.my-server.id
}

resource "baiducloud_vpc" "default" {
  name = "my_vpc"
  cidr = "192.168.0.0/16"
}

resource "baiducloud_subnet" "default" {
  name      = "my_sub"
  zone_name = "cn-bj-c"
  cidr      = "192.168.3.0/24"
  vpc_id    = baiducloud_vpc.default.id
}



# Create a security group
resource "baiducloud_security_group" "default" {
  name   = "my_sg"
  vpc_id = baiducloud_vpc.default.id
}

resource "baiducloud_security_group_rule" "allow_all_tcp_in" {
  security_group_id = baiducloud_security_group.default.id
  remark            = "remark"
  direction         = "ingress"
  #   port_range        = "1-65523"
}

resource "baiducloud_security_group_rule" "allow_all_tcp_out" {
  security_group_id = baiducloud_security_group.default.id
  remark            = "remark"
  direction         = "egress"
  #   port_range        = "1-65523"
}

使用

初始化,安装baiducloud provider等

terraform init

查看计划:

terraform plan

部署:

terraform apply

销毁:

terraform destroy

其他

到目前为止,2021-6-24,百度云的相关文档不足,一些配置都是摸索或者参考其他provider完成的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment