暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

借助Terraform实现Oracle Cloud(OCI)自动化管理

凛冬未至 2018-01-14
2362

本文将分如下4个小节来介绍:

  • 演示环境说明

  • 取得Oracle Cloud Infrastructure(OCI)相关信息

  • Terraform环境安装、配置、运行

  • 通过Terraform管理OCI实例

 

1.    演示环境说明

本小节分为如下3个部分:

  • Terraform简介

  • Oracle Cloud Infrastructure简介

  • 本文演示环境说明

     

1.1   Terraform简

Terraform 是一个 IT 基础架构自动化编排工具,它的口号是 "Write, Plan, and create Infrastructure asCode", 基础架构即代码。具体的说就是可以用代码来管理维护 IT 资源,比如针对 Oralce Cloud Infrastructure,我们可以用它创建,修改,删除LinuxWindowsDatabase实例,StorageVCN等各种资源。并且在真正运行之前可以看到执行计划(即干运行-dryrun)。由于状态保存到文件中,因此能够离线方式查看资源情况 -- 当然,前提是不要在 Terraform 之外对资源进行修改。

1.2    Oracle Cloud Infrastructure简介

Oracle CloudI nfrastructure,简称OCI,中文名称:Oracle云基础设施。OCI融合了公有云的弹性和实用性与内部部署基础设施的细粒度控制、安全性和可预测性,可以提供高性能、高可用性且经济高效的基础设施服务。

OCI主要产品包括如下:

  • 计算

具有灵活性,适用于高要求的各类负载

  • 存储

具有高持久性的云存储,可保护和处理您的关键任务数据

  • 网络

您可以定义云资源所使用的专用云网络

  • 监管

对各种规模的云资源实施控制和提供保护

  • 数据库

基于高性能裸机的按需扩展Oracle 数据库

  • 负载平衡

您的云应用:实现高可用性、可扩展性和安全性

  • Ravello

在先进的公有云上运行企业VMware 负载

 

                        

1.3    本文演示环境说明

Terraform可以对OCI进行各种类型的操作,如创建:CompartmentGroupUserVCNStorage;启动Windows实例、Linux实例、Database实例等;配置集群、负载均衡等。

本文只演示比较典型的一个操作:根据配置动态分配资源(OCPU、内存、存储、网络等)创建并启动Linux实例,最后终止Linux实例

 

本文演示环境中,Terraform安装配置在Windows客户端中。

 

总体来说,配置的步骤还是比较多的。但这可以说是一个一劳永逸的工作,初次配置花费较多的功夫,以后使用时就简单了,根据需要更改一下配置参数,就可以直接执行自动化管理操作了。

 

2.    取得Oracle Cloud Infrastructure(OCI)相关信息

登录OCI环境,例如本文用到的登录信息如下:

OCI portal网址:

https://console.us-phoenix-1.oraclecloud.com/

 登录用户名:     demo.user01

登录密码:                          ******

身份域:                                 gsebmcs00009

 

 

查找:Tenancy OCID

 

记录下该 Tenancy OCID,

Tenancy OCID:ocid1.tenancy.oc1..aaaaaaaawz52pbyqeud4ryne7ojegn2bzavhie4bgki5j6k7fwp5asbs5dqa

后面配置时会用到。

 

 

查找:Compartment OCID

 

 记录下该Compartment OCID

Compartment c01 OCID:

ocid1.compartment.oc1..aaaaaaaaldctk5h5nnvemgl6vudavygi276bq55wh7zbzldaewxqdcfw45fq

后面配置时会用到

 

 查找:User OCID

记录下该User OCID

User OCID:

[……]

后面配置时会用到。

 

查找:Subnet OCID

记录下该Subnet OCID

Subnet OCID:

[……]

后面配置时会用到

 

 查找:Region

 

记录下该Region

us-phoenix-1

后面配置时会用到

 

3.    Terraform环境安装、配置、运行

为便于阅读,此小节将分为如下16个部分介绍:

  • Install git for windows.

  • 下载并安装VIM

  • 生成ssh-keys

  • 安装应用管理工具chocolatey (Choco)

  • 安装Terraform

  • 安装Wget,用于从GitHub中下载资源

  • 安装ChocolateyGUI

  • Git-Bash创建工作目录及从GitHub复制repo

  • 下载windowsOCI terraform  package

  • 配置OCI Terraform provider

  • Terraform生成所需要APIkeys

  • 将密钥(公钥)添加到OCI Console

  • Terraform配置环境变量

  • Terraform初使化

  • 修改变量配置文件

  • 验证Terraform配置

 

3.1  Installgit for windows.

Download

https://github.com/git-for-windows/git/releases/download/v2.14.0.windows.1/Git-2.14.0-64-bit.exe and install

Windows[开始]菜单,输入”Git Bash”搜索,并打开Git Bash,

 

3.2  下载并安装VIM

https://sourceforge.net/projects/cream/files/Vim/8.0.824/gvim-8-0-824.exe/

VIM可方便查看、编辑Linux格式的回车符号的文档。

在本文的操作中,通过记事本查看和操作,实现与VIM同样的功能。

 

3.3  生成ssh-keys

Git Bash中执行命令:

ssh-keygen

用缺省的路径,及密码设置为[Blank]

 

生成的密钥文件如下图所示,

3.4  安装应用管理工具chocolatey (Choco)

打开PowerShell工具,需要以管理员身份运行

 

执行命令:

Set-ExecutionPolicy -ScopeCurrentUser BypassSet-ExecutionPolicy -Scope LocalMachine Bypass

 

执行下命令以安装chocolatey工具:

iex ((New-ObjectSystem.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

 

 

3.5  安装Terraform

Chocolatey安装完成后,重新以管理员身份打开PowerShell,

执行如下命令:

PS> choco install terraform

3.6  安装Wget,用于从GitHub中下载资源

PS> choco install wget

 

3.7  安装ChocolateyGUI

PS> choco install ChocolateyGUI

 

Chocolatey所管理的工具在目录

C:\ProgramData\Chocolatey\bin

下,

 

3.8  Git-Bash创建工作目录及从GitHub复制repo

$ mkdir -p~/work/terraform-bmcs

$ cd ~/work/terraform-bmcs

$ git clone https://github.com/oracle/terraform-provider-baremetal

 

repo的存放位置,

C:\Users\jqwang\work\terraform-bmcs

 

 

我们将会用到

C:\Users\jqwang\work\terraform-bmcs\terraform-provider-baremetal\docs\examples\compute\instance

 

在目录C:\Users\jqwang\work\terraform-bmcs下建立目录:

demo,并将目录

C:\Users\jqwang\work\terraform-bmcs\terraform-provider-baremetal\docs\examples\compute\instance

下的内容COPY到目录

C:\Users\jqwang\work\terraform-bmcs\demo

下,

 

3.9  下载windows版OCI terraform  package

下载链接:

https://github.com/oracle/terraform-provider-oci/releases/download/v2.0.6/windows.zip

下载后解压缩,

 

将目录windows_386下的文件

terraform-provider-oci_v2.0.6.exe

COPY到目录

C:\ProgramData\chocolatey\bin\

下,

 

 3.10       配置OCI Terraform provider

在目录:C:\Users\[username]\AppData\Roaming\

如我的环境中该目录为:C:\Users\jqwang\AppData\Roaming\

下新建立文件:terraform.rc,用记事本打开添加如下内容:

providers {

    oci =  "C:\\ProgramData\\Chocolatey\\bin\\terraform-provider-oci_v2.0.6.exe"

}

 

注意:

Terraform将会用该文件中配置的provider– oci,进行OCI管理。oci为关键字,必须要与后面”instance”中的配置文件中的provider名称一致;否则在后续配置步骤“PS> terraform init时会报错A provider named"oci" could not be found in the official repository.

3.11       为Terraform生成所需要API的keys

Git-Bash下执行下命令:

 $ mkdir ~/.oraclebmc (ifthis folder already exists, cd to this folder)$ openssl genrsa -out ~/.oraclebmc/bmcs_api_key.pem2048$ chmod 0700 ~/.oraclebmc$ chmod 0600 ~/.oraclebmc/bmcs_api_key.pem

 

$ openssl rsa -pubout -in~/.oraclebmc/bmcs_api_key.pem -out ~/.oraclebmc/bmcs_api_key_public.pem

 

$ cat~/.oraclebmc/bmcs_api_key_public.pem

 

$ openssl rsa -pubout-outform DER -in ~/.oraclebmc/bmcs_api_key.pem | openssl md5

$ openssl rsa -pubout-outform DER -in ~/.oraclebmc/bmcs_api_key.pem | openssl md5 >~/.oraclebmc/bmcs_api_key_fingerprint

 

 

最后生成的3个密钥文件如下图所示,

 

文件:

C:\Users\jqwang\.oraclebmc\bmcs_api_key_fingerprint

内容为:

(stdin)= fad32e5506a180279d5663086bd2b611

 

需要去掉前部分的“(stdin)=”,并将余下的部分修改为如格式(即每2个字符之间通过“:”分隔)

fa:d3:2e:55:06:a1:80:27:9d:56:63:08:6b:d2:b6:11

 

 

3.12        将密钥(公钥)添加到OCIConsole

目的:Terraform通过私钥连接到OCI环境中时,与该公钥配对进行身份验证。

OCI Console中,登录用户下选择“User Settins”

 

点击“AddPublic Key”

将文件:

C:\Users\jqwang\.oraclebmc\bmcs_api_key_public.pem

的内容COPY到:PUBLIC KEY的输入框中,如下图所示,

完成后,会显示刚添加的Public Key,

Fingerprint: fa:d3:2e:55:06:a1:80:27:9d:56:63:08:6b:d2:b6:11

 

与文件:

C:\Users\jqwang\.oraclebmc\bmcs_api_key_fingerprint

中的内容是一样的。

 

3.13       为Terraform配置环境变量

为了方便管理,我们将环境变量配置在文件中。

在目录:

C:\Users\jqwang\work\terraform-bmcs\demo

下建立文件:

env-vars.ps1

用记事本打开,添加如下内容:

上述配置文件的内容来自于前面“2. 取得Oracle Cloud Infrastructure(OCI)相关信息的配置和第3部分配置。

 

PowerShell中生效上面配置文件中指定的环境变量,通过命令

PS> .\env-vars.ps1

 

查看设置的环境变量,通过命令:

PS> dir env:

  

3.14        Terraform初使化

PowerShell中通过命令

terraform init

 

3.15       修改变量配置文件

修改变量文件:

C:\Users\jqwang\work\terraform-bmcs\demo\variables.tf

如下,红色字体为修改后的内容,之所以要这样修改是要保证OCI中有足够可用资源,并且是可用的资源,

variable  "tenancy_ocid" {}

variable "user_ocid"  {}

variable  "fingerprint" {}

variable  "private_key_path" {}

variable "region" {}

 

variable  "compartment_ocid" {}

variable  "ssh_public_key" {}

variable  "ssh_private_key" {}

 

variable "SubnetOCID"  {}

 

# Choose an Availability Domain

variable "AD" {

    default = "2#可用域1的实例已经用满,域2中还有可用资源

}

 

variable  "InstanceShape" {

    default = "VM.Standard2.1"  # Shape“VM.Standard1.1已经用满,Shape“VM.Standard2.1中还有可用资源

 

}

 

variable  "InstanceImageDisplayName" {

    default = "Oracle-Linux-7.4-2017.12.18-0"  #InstanceImage需要与可用列表中的名称一样

}

 

variable "DBSize" {

    default = "50" size in GBs

}

 

variable  "BootStrapFile" {

    default =  "./userdata/bootstrap"

}

 

3.16       验证Terraform配置

PowerShell中通过命令

terraform plan

此时,terraform会通过用户“OPC”+私钥连接到OCI验证上述配置的正确性。(但最后执行是否成功,还有其他因素的限制,如是否有足够可用的资源)

 

4.     通过Terraform管理OCI实例

本小节分为如下3个部分:

  • Terraform根据配置动态启动Linux实例

  • 通过PuTTY连接Terraform启动的Linux实例-验证环境可用性

  • Terraform 关闭Linux实例

 

4.1  Terraform根据配置动态启动Linux实例

Terraform根据配置动态分配所需要的资源,包括:

  • OCPU

  • 内存

  • 存储

  • 网络

 

启动Linux实例

PowerShell中通过命令

terraform apply

此时,terraform会通过用户“opc”+私钥连接到OCI,执行操作。

 

执行完成后,可以在界面中看到成功启动的Linux实例的IP地址,如下所示:

InstancePublicIP = [

    129.146.131.194

]

 

同时可以在OCIPortal中看到通过Terraform启动的Linux实例,

 

查看实例的详细信息,

 

此处显示的Pubilic IP Address129.146.131.194

与上面terraformapply执行完成后显示的

InstancePublicIP = [   129.146.131.194 ]

完全一样。

 

同时可通过PowerShell命令:

terraform refresh

查看通过Terraform启动的Linix实例的IP地址等信息。

4.2  通过PuTTY连接Terraform启动的Linux实例-验证实例可用性

首先将私钥

C:\Users\jqwang\.ssh\id_rsa

通过puttygen工具转换为PuTTY可识别的格式,存储为名称:id_rsa_fromPutty.ppk,如下图所示,

 

PuTTY中配置IP地址为上述Linux实例的IP地址: 129.146.131.194

 

密钥文件设置为:

C:\Users\jqwang\.ssh\id_rsa_fromPutty.ppk

 

 

输入用户名:opc,连接到Linux实例环境中,如下图所示,

4.3  Terraform关闭Linux实例

PowerShell中通过命令

terraform plan –destroy

此时,terraform会通过用户“opc”+私钥连接到OCI,生成关闭Linux实例的配置,

 

通过命令:

terraform destroy

此时,terraform会通过用户“opc”+私钥连接到OCI,关闭Linux实例,

 

OCI Portal中查看,此时Linux实例已经处于TERMNATED状态,

 

至此,我们的安装、配置、使用介绍全部完成。

 

若您想进一步了解Oracle Cloud Infrastructure相关信息,请参考Oracle帮助文档,

https://cloud.oracle.com/zh_CN/cloud-infrastructure

也欢迎与我们联系: j.jun.wang@oracle.com


感谢您抽出宝贵时间阅读本篇文章。

文章转载自凛冬未至,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论