Terraform部署IBM Cloud经典基础架构
本文上篇描述了使用IBM Cloud Schematics服务,自动化供给IBM Cloud经典基础架构资源的过程。本文将描述作为IBM Cloud Schematics的Terraform-as-a-Server的支撑层面,Terraform通过IBM Cloud Provider plugin连接IBM Cloud Restful API部署经典基础架构虚拟机的具体过程。
完成文中所述操作需要具备的先决条件仍然如下:
1 IBM Cloud的账号
2 Terraform基础知识
安装Terraform
# mkdir ~/terraform
# cd ~/terraform
# wget https://releases.hashicorp.com/terraform/0.12.28/terraform_0.12.28_linux_amd64.zip
# unzip terraform_0.12.28_linux_amd64.zip
# echo ‘export PATH=$PATH: $HOME/terraform’ >> ~/.bash_profile
安装IBM Cloud Terraform Provider v1.8.0
# mkdir $HOME/.terraform.d/plugins
# cd $HOME/.terraform.d/plugins
# wget https://github.com/IBM-Cloud/terraform-provider-ibm/releases/download/v1.8.0/linux_amd64.zip
# unzip linux_amd64.zip
# ./terraform-provider-ibm_*
# ./terraform-provider-ibm_*
2020/06/30 00:21:06 IBM Cloud Provider version 1.8.0
This binary is a plugin. These are not meant to be executed directly.
Please execute the program that consumes these plugins, which will
load any plugins automatically
配置IBM Cloud Provider plug-in
Terraform通过IBM Cloud Provider Plugin跟IBM Cloud REST API进行安全通信,因此在自动化部署和使用IBM Cloud资源之前,需要为IBM Cloud Provider Plugin配置访问资源所需的IBM Cloud凭证。各种资源类型需要各自不同的凭据,例如,本文描述的部署经典基础架构资源需要IBM Cloud API key,以及经典基础架构用户名和API密钥。以下内容在本文的上篇讲到过,如果已经做过这两部操作,可以直接把此前的记录拿出来备用。
获取IBM Cloud经典基础架构用户名和API密钥
登录IBM Cloud进入如下IAM界面可以看到IBM Cloud经典基础架构用户名和API密钥:
后续使用此邮箱和API密钥在IBM Cloud中部署经典基础架构虚拟服务器。
注意:在配置Terraform参数文件时,用户名是“账号_邮箱”,如1234567_mail@xdomain.com 。
创建或者获取IBM Cloud API key
这里需要注意,IBM Cloud API key字符串只在创建时出现一次,这时务必要妥善保存,以后回到这个页面的“详细信息”是看不到的,官方文档上提到,这是出于安全考虑的设计。
生成SSH key
# ssh-keygen -t rsa -b 4096 -C mail@xdomain.com
接受默认路径,在/root/.ssh文件夹下创建相关文件:id_rsa,id_rsa.pub
上传SSH public key 即id_rsa.pub内容到IBM Cloud账户:
创建项目和配置文件
创建项目:
# mkdir /prja
创建Terraform变量文件terraform.tfvars,内容是IBM Cloud经典基础结构凭证和IBM Cloud API密钥。Terraform CLI初始化时会自动加载terraform.tfvars文件中定义的变量,后续也可以在Terraform配置文件中引用。
# vi /prja/terraform.tfvars
ibmcloud_api_key = "<ibmcloud_api_key>"
ssh_key = "<ssh_key_name>" //上传到IBM Cloud时的SSH key名称
iaas_classic_username