运用代码管理基础架构之可以自定义的CMP(二)

继上周的:运用代码管理基础架构之镜像利器(一) 启迪云董乐又继续为大家带来:可以自定义的CMP。

需求分析

随着公有云平台功能的日趋完善,混合云的架构逐步会成为企业是首要选择,面对混合云的环境我们如何管理我们的基础架构。我们以创建一个web平台为例:

传统方式——

  • 登陆私有云或公有云管理平台
  • 创建主机
  • 安装部署应用软件
  • 创建安全组,添加安全组规则
  • 创建负载均衡,添加监听端口
  • 创建浮动IP
  • 登陆DNS管理平台,创建A记录

大致要通过以上7个步骤完成一个应用的部署,如果我们的公有云环境是多个,那么就意味着以上步骤要重复多次,这还仅仅是一个简单的web环境,如果我们要部署的是一套业务系统,涉及多个应用系统的创建,我们的基础平台交付需要多长时间?

基于上面的问题今天给大家介绍一个非常牛B的软件terraform

什么是terraform

terraform 是一个可以安全,高效构建基础架构的工具,通过配置文件的描述对单个应用或数据中心基础架构进行构建和维护。terraform通过生成一个执行计划来描述将来执行构建基础架构的变化,随着配置文件的变更terraform能够准确的对基础架构进行修改或增量的执行,terraform不仅可以管理计算,网络和存储资源,还可以对DNS和SaaS等服务进行管理。

简单实例

展示通过编辑terraform 配置文件,在vcenter上创建虚拟机

操作步骤

wgethttps://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_linux_amd64.zip

unzip terraform_0.11.11_linux_amd64.zip

cp terraform /usr/bin

创建变量文件var.tf (具体内容根据实际需求填写)

variable "vsphere_user" {

default = "xxxxxxxxxx" }

variable "vsphere_password" {

default= "xxxxxxxx"}

variable "vsphere_server" {

default = "xx.xx.xx.xx"}

创建资源文件t1.tf (具体内容根据实际需求填写)

[[email protected] test]# cat t1.tf

provider "vsphere" {

user ="${var.vsphere_user}"

password ="${var.vsphere_password}"

vsphere_server= "${var.vsphere_server}"

#If you have a self-signed cert

allow_unverified_ssl = true

}

data "vsphere_datacenter""dc" {

name = "xxxxxx"

}

data "vsphere_datastore""datastore" {

name = "xxxxxxxxx"

datacenter_id = "${data.vsphere_datacenter.dc.id}"

}

data "vsphere_resource_pool""pool" {

name = "pool01"

datacenter_id = "${data.vsphere_datacenter.dc.id}"

}

data "vsphere_network""network" {

name = "VMNetwork"

datacenter_id = "${data.vsphere_datacenter.dc.id}"

}

data "vsphere_virtual_machine""template" {

name ="Template-centos7"

datacenter_id = "${data.vsphere_datacenter.dc.id}"

}

resource"vsphere_virtual_machine" "vm" {

name ="terraform-test001"

resource_pool_id = "${data.vsphere_resource_pool.pool.id}"

datastore_id ="${data.vsphere_datastore.datastore.id}"

num_cpus = 2

memory = 1024

guest_id = "${data.vsphere_virtual_machine.template.guest_id}"

network_interface {

network_id = "${data.vsphere_network.network.id}"

}

terraform init

terraform plan

terraform apply

查看vcenter 平台已经生成了虚拟机

terraform支持的服务商

运用代码管理基础架构之可以自定义的CMP(二)

terraform的价值

通过前面的介绍我们了解到通过terraform可以统一管理私有云,公有云及相关SaaS服务平台,并通过配置文件描述将不同资源整合在一起,通过代码的版本控制对基础架构进行有效的管理,结合上一篇文章介绍的Packer可以通过terraform调用Packer打包好的业务镜像,并行的在多个公有云或私有云上同时进行部署,一方面提高了基础架构部署的效率,另一方面也降低了因人为操作造成基础平台故障的风险。