首页 > 社交 > 科普中国

IaC示例:Terraform

常驻编辑 科普中国 2022-10-13 集群   节点   示例   变量   基础设施   虚拟机   实例   定义   代码   环境   文件

创建一个 NAT 模式的虚拟网络,默认的网络地址为 192.168.123.0/24,可通过变量 net_domain 修改。qTu拜客生活常识网

resource "libvirt_volume" "disk" {
  count            = length(var.vms)
  name             = "${var.vms[count.index].name}.qcow2"
  pool             = "default"
  base_volume_name = var.template_img
  base_volume_pool = var.templates_pool
}

根据变量 vms 定义的虚拟机实例,创建虚拟机的系统磁盘,基于变量 templates_pooltemplate_image 指定的模板镜像,默认也就是上面我们通过 Packer 创建的系统镜像。qTu拜客生活常识网

resource "libvirt_domain" "vm" {
  count      = length(var.vms)
  name       = var.vms[count.index].name
  autostart  = true
  qemu_agent = true
  vcpu       = lookup(var.vms[count.index], "cpu", 1)
  memory     = lookup(var.vms[count.index], "memory", 512)

...
  }
}

libvirt_domain 资源定义了需要创建的虚拟机实例,并通过 ansible provisioner 进行是初始化配置(配置静态IP地址和主机名)。qTu拜客生活常识网

resource "local_file" "ansible_hosts" {
  content = templatefile("./tpl/ansible_hosts.tpl", {
    vms        = var.vms
    subnet     = var.subnet
    gateway    = cidrhost(var.subnet, 1)
    mask       = cidrnetmask(var.subnet)
    nameserver = cidrhost(var.subnet, 1)
    user       = var.user
  })
  filename             = "../ansible/k3s_hosts"
  file_permission      = 0644
  directory_permission = 0755
}

该资源定义通过模板文件创建虚拟机实例的 Ansible Inventory 文件,便于下一步通过 Ansible 进行 K3S 集群的创建。qTu拜客生活常识网

在应用之前,我们需要配置 vms 变量,来指定我们需要的虚拟机实例信息qTu拜客生活常识网

❯ cp .k3svms.tfvars k3dcluster.auto.tfvars
vms = [
  {
    name   = "control"
    cpu    = 1
    memory = 1024
    ip     = 10
    groups = ["k3s"]
    vars   = {
      role = "server"
    }
  },
  {
    name   = "worker1"
    cpu    = 1
    memory = 1024
    ip     = 21
    groups = ["k3s"]
    vars = {
      role = "agent"
    }
  },
  {
    name   = "worker2"
    cpu    = 1
    memory = 1024
    ip     = 22
    groups = ["k3s"]
    vars = {
      role = "agent"
    }
  }
]

上面定义了3台实例,1台作为k3s集群的 server 节点,2台作为k3s集群的 role 节点,默认IP地址将会被配置为qTu拜客生活常识网

  • control : 192.168.123.10
  • worker1 : 192.168.123.21
  • worker2 : 192.168.123.22

接下来我们将执行 Terrform 操作qTu拜客生活常识网

❯ terraform init

❯ terraform plan  

❯ terrafrom apply --auto-approve
...
Apply complete! Resources: 8 added, 0 changed, 0 destroyed.

Outputs:

vms_ip_addresses = {
  "control" = "192.168.123.10"
  "worker1" = "192.168.123.21"
  "worker2" = "192.168.123.22"
}

完成之后,3台虚拟机将会创建并运行,同时在 k3scluster/ansible/ 目录中将创建名为 k3s_hosts

相关阅读:

  • kubernetes上部署
  • 互联网后端技术大全!建议收藏
  • 1.8亿年前蜉蝣婚飞
  • 我科学家揭示最古老昆虫婚飞行为
  • Java后端大神总结的“造火箭”理论,找工作很有用哦
  • “长不大”的寒武纪:收入1.72亿,亏损6.22亿,市值暴跌800
  • 一图读懂《促进中小企业特色产业集群发展暂行办法》↓
  • hadoop、hbase、zookeeper集成kerberos认证
  • 黄河宿集:打动人的不止风景,还有场景
  • 为何要发展中小企业产业集群?记者调研带你看集群优势→
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。