IBM Cloud Schematics提供了Terraform-as-a-Service服务。本文分别使用Schematics和Terraform进行IBM Cloud经典基础架构虚拟机的部署。
完成文中所述操作需要具备的先决条件如下:
- IBM Cloud的账号
- Linux工作机,我用的是CentOS 7.x
准备工作
Schematics提供Terraform-as-a-Service服务,通过IBM Cloud Provider Plugin连接IBM Cloud REST API进行安全通信,完成资源的访问和部署。因此在自动化部署IBM Cloud资源之前,需要为IBM Cloud Provider Plugin配置访问资源所需的IBM Cloud凭证。各种资源类型需要各自不同的凭据,本文描述的部署经典基础架构资源需要经典基础架构用户名和API密钥,以及IBM Cloud API key。
获取IBM Cloud经典基础架构用户名和API密钥
登录IBM Cloud进入如下IAM界面可以看到IBM Cloud经典基础架构用户名和API密钥:
后续使用此邮箱和API密钥在IBM Cloud中部署经典基础架构虚拟服务器。
注意:在配置Terraform参数文件时,用户名是“账号_邮箱”,如1234567_mail@xdomain.com 。
创建或者获取IBM Cloud API key![在这里插入图片描述](https://img-blog.csdnimg.cn/20200630222453742.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjcwNzE5Nw==,size_16,color_FFFFFF,t_70)
这里需要注意,IBM Cloud API key字符串只在创建时出现一次,这时务必要妥善保存,以后回到这个页面的“详细信息”是看不到的,官方文档上提到,这是出于安全考虑的设计。
Schematics部署经典基础架构虚拟机
创建Schematics工作空间
登录IBM Cloud,点开左上角这个图标:
选择Schematics:
创建工作空间Workspace01:
输入各项参数,可以看到Schematics工作空间本身是免费的,点击“创建”:
导入Terraform模板输入参数
在Explore界面下拉至Terraform模板信息输入界面,GitHub repository URL
设置为
https://github.com/IBM-Cloud/terraform-provider-ibm/tree/master/examples/ibm-vsi
Terraform版本选择 terraform_v0.12,保存:
在弹出的参数输入页面,输入参数后保存:
生成计划
点击生成计划,这里后台会调用 terraform plan 命令:
应用计划
计划生成后,点击应用计划,也即 terraform apply:
检查结果
待成功后点击查看日志:
日志中包含创建过程,以及命令terraform show的结果:
回到工作空间,选择左侧“资源”菜单,页面将呈现部署成功的虚拟机信息,以及其在IBM Cloud 门户的访问URL,点击URL:
在弹出页面可以看到虚拟机的详细信息:
使用Schematics命令行
安装IBM Cloud CLI工具
# curl -sL https://ibm.biz/idt-installer | bash
# ibmcloud plugin install schematics
验证CLI和开发工具的安装
# ibmcloud dev help
登录到IBM Cloud:
# ibmcloud login -a cloud.ibm.com -r us-south -g resource_group_name
# ic schematics workspace list
Name ID Description Status Frozen
workspace01 workspace01-dc861892-2526-45 workspace01 for project A ACTIVE False
# ic schematics workspace get --id workspace01-dc861892-2526-45
Creation Time Tue Jun 30 09:48:00
Description workspace01 for project A
Frozen false
ID workspace01-dc861892-2526-45
Name workspace01
Status ACTIVE
Tags [TAGS]
- prja
- dev
Template Variables for: 9368725c-d72a-4b
Name Value
softlayer_username 1234567_mail@xdomain.com
softlayer_api_key e393f484f351c0eeb6103365c7b7d89d9173d6822c226f206f28807408e2cbb5
ibmcloud_api_key J8pZA9cODS2S6QQPYm3qwORgOFtbVGJDxrHIiGLITuUt
OK
删除工作空间和资源
项目完成后可以登录IBM Cloud释放工作空间和资源。
在工作空间页面,点击右上角“操作”,“ 删除”:
如果删除工作空间的同时不删除其创建的资源,在工作空间删除后可以通过经典基础架构的资源清单或命令行对资源进行访问和操作。
在此我们选择两者同时删除,输入工作空间的名字,确认删除:
一些有用的链接
- IBM Cloud的Git Hub repository有很多example,比如Load Balancer,CIS,IAM,可以作为底稿定制自己的项目,能节约不少时间:https://github.com/IBM-Cloud/terraform-provider-ibm/tree/master/examples
- IBM Cloud的Terraform resources 和 data sources索引:
https://cloud.ibm.com/docs/terraform?topic=terraform-infrastructure-resources#vm - IBM Cloud Classic Infrastructure API 官方文档:
https://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest
本文上篇到此告一段落,下篇将介绍作为IBM Cloud Schematics的Terraform-as-a-Server的支撑层,Terraform通过IBM Cloud Provider plugin连接IBM Cloud Restful API部署经典基础架构虚拟机的具体过程,包括Terraform的安装,IBM Cloud Provider plugin的安装配置,配置文件的创建和定制,以及Terraform命令行操作。
大家吃好喝好。