地球形成、等等

首先

我的名字是Naritomo。

在本文中,我想要提及以下关于Terraform的工作。

    • サンプルソース(仮想マシン作成)を使用したTerraform立ち上げ

 

    ftstate外出し手順

项目概述

使用Windows 11创建WSL2+Ubuntu+VSCode+Git环境,并使用docker-compose进行启动。

以下是必需的资源总结。

Docker源代码

 

terraform源码示例

 

请提供参考链接。

我在Docker环境中尝试启动Terraform。

根据各种资源可以制作的物品。

亚马逊网络服务

    • ftstate保管バケット(S3/dynamodb)

 

    • VPC

 

    • サブネット

 

    • Internet Gateway

 

    • Route table

 

    • Security Group

 

    EC2

青色的

    • ftstate保管バケット(ストレージコンテナ)

 

    • リソースグループ

 

    • サブネット

 

    • Network_Security_Group

 

    • Network_Security_rule

 

    • 仮想マシン

ネットワークインターフェース
パブリックIP
仮想マシン

谷歌云平台

    • ftstate保管バケット(storage_bucket)

 

    • VPC

 

    • サブネットワーク

 

    • google_compute_firewall

 

    google_compute_instance

OCI是指”云原生计算、云原生应用”的简称。

    • ftstate保管バケット

 

    • VCN

 

    • Subnet

 

    • Internet gateway

 

    • Route Table

 

    • Compute

 

    Oracle Database

用法

获取docker源文件

git clone https://github.com/naritomo08/terraform_docker_public.git terraform
cd terraform
git clone https://github.com/naritomo08/terraform_source_public.git source
cd source

如果在之后进行文件编辑等操作时,Git通知变得很繁琐,
请在创建的文件夹中输入以下命令。

 rm -rf .git

获取AWS/Azure访问密钥,获取GCP访问JSON文件

vi .env.example

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

→AWSの場合、操作ユーザに対応した
 上記の情報を入れる。

ARM_SUBSCRIPTION_ID=
ARM_CLIENT_ID=
ARM_CLIENT_SECRET=
ARM_TENANT_ID=

→Azureの場合、操作ユーザに対応した
 上記の情報を入れる。

gcp管理画面からアクセスjsonキー(gcp.json)を入手して、gcpフォルダ内に入れる。

请参考以下方法以获取环境变量。

让Ubuntu可使用AWS CLI。

我试用了 Terraform 工具,在 Azure 上构建了基础设施。

为了使用Terraform处理Google Cloud,需要在本地终端环境中进行配置。

复制共通变量文件

cp .env.example ../.env

创建OCI API密钥(使用OCI)

使用下面的命令来创建OCI API密钥。

cd source/oci/apikey
openssl genrsa -out id_rsa
openssl rsa -in id_rsa -pubout -out id_rsa.pem
ls
→id_rsa,id_rsa.pemファイルが存在していることを確認する。

收集OCID信息(使用OCI)

请参考以下网站的”3. OCID信息收集”部分,收集以下信息。

需要预先创建一个用于存放资源的区域。

    • テナンシのOCID

 

    • ユーザーのOCID

 

    • フィンガープリント

 

    • コンパートメントのOCID

 

    使用しているリージョンの識別子(例:ap-osaka-1)

下面是参考网站:

我使用Terraform在OCI上创建了一台虚拟服务器。

虚拟机密钥设置(使用OCI)

cd source/oci/apikey
ssh-keygen -t rsa -N "" -b 2048 -C "id_server_rsa" -f id_server_rsa
ls
→id_server_rsa,id_server_rsa.pubファイルが存在していることを確認する。

OCI账户设置(使用OCI)

vi source/oci/tfstate/varidate.tf
vi source/oci/default/varidate.tf

以下の内容で作成する。
variable "tenancy_ocid" {
  default = "テナンシのOCID"
}
variable "user_ocid" {
  default = "ユーザーのOCID"
}
variable "fingerprint" {
  default = "フィンガープリント"
}
variable "private_key_path" {
  default = "../apikey/id_rsa"
}
variable "region" {
  default = "使用しているリージョンの識別子"
}
variable "tenancy_namespace" {
  default = "テナンシのオブジェクト・ストレージ・ネームスペース"
}
variable "compartment_ocid" {
  default = "コンパートメントのOCID"
}
variable "ssh_public_server_key" {
  default = "../apikey/id_server_rsa.pem"
}

创建OCI桶访问密钥(使用OCI)

请参考以下网站的”S3互換バックエンドの使用”的步骤1至3,并进行设置存储桶访问密钥。

在第三个步骤中,将[default]条目部分改为[oci_access]。

当您在Terraform环境中使用时,需要修改”.env”文件中的AWS配置。

以下是参考网站:

使用对象存储来存储状态文件。

terraform容器正在运行

cd ..
docker-compose up -d

Terraform的使用

在AWS的情况下,您可以在EC2菜单的密钥对中注册一个名为”serverkey”的SSH安全密钥。

在GCP中,需要在Compute Engine的设置-元数据中注册SSH安全密钥。

注册后,请记录下显示出来的用户名。

请同时进行以下元数据的注册。

    • キー serial-enable

 

    値 TRUE
docker-compose exec terraform ash
cd ソースフォルダ/default
terraform init
terraform plan
terraform apply
→yesを入力する。
→管理コンソールで作成されていることを確認する。

在第二次及以后,可以使用以下指令。

terraform plan
terraform apply
→yesを入力する。
→管理コンソールで作成されていることを確認する。

每个虚拟机登录

亚马逊网络服务 (AWS)

记录在执行apply命令后出现的IP地址,
使用用户名: ec2user 以及与安全密钥相匹配的私钥登录SSH。

蔚蓝

在执行apply命令后,记录下出现的IP地址,然后使用”resource.tf”文件中的以下参数进行RDP登录。
admin_username
admin_password

谷歌云平台

记录下应用apply命令后显示的IP地址,
用户:在安全密钥注册时记下的用户名,秘密密钥:使用与安全密钥对应的私钥来进行SSH登录。

中国的OCI

记录下执行 apply 命令后出现的 IP 地址,然后使用用户 “obc” 和相应的秘密鍵: 安全密鍵来进行 SSH 登录。

OracleDB建设(OCI)

事先NW/VM的建立已经完成。

将Oracle文件夹中的两个文件(database.tf、database-var.tf)移动到default文件夹中。

进行var文件编辑。

vi database-var.tf

以下の部分を書き換える

variable "db_system_ssh_public_keys" {
    default = "../apikey/id_server_rsa.pubの内容に書き換える。"
}

在默认文件夹中执行terraform命令。

terraform plan
terraform apply
→1Hかかる。

Oracle数据库连接方法

通过SSH登录服务器,安装Oracle Instant Client。

sudo yum install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm

登录OCI控制台,选择SB设置页面,选择DB连接,并记录DB连接子(可以使用两个中的任意一个)。

登录服务器并输入以下命令以确认能够通过SSH连接并成功建立数据库连接。

sqlplus system/"database-var.tf内のdb_system_db_home_database_admin_password値"@"前の手順で控えたDB接続子"

删除 Terraform 创建的资源

在源文件夹中进行操作

docker-compose exec terraform ash
cd ソースフォルダ/default
terraform destroy
→yesを入力する。
→管理コンソールで削除されていることを確認する。

如果只有一个资源,可以使用以下命令。

terraform destroy -target リソース名
→yesを入力する。
→管理コンソールで削除されていることを確認する。

将tfstate文件移出并进行适当的处理方法

如果是在团队中进行的话,只需要有人在初次执行即可。
如果是由多人共同管理的情况下需要进行的事项。

解除 backend.tf 文件中的 terraform 部分的注释,并输入以下命令。

创建外部存储桶

请将tfstate/main.tf中的<>部分的名称更改为适当的资源名称。

docker-compose exec terraform ash
cd ソースフォルダ/tfstate
terraform init
terraform plan
terraform apply
→yesを入力する。
→管理コンソールでバケットが作成されていることを確認する。
    Azureの場合

在管理控制台上记录存储名称。
同时使用以下命令获取存储密钥信息。

az login
*idが複数ある場合は、管理画面と確認して使用しているidを選択する。
az account set --subscription="id"
az storage account keys list --resource-group tfstate --account-name <ストレージアカウント名> --query '[0].value' -o tsv
→帰ってくる値を控える。
    OCIの場合

输入以下命令。

vi default/backend.tf

以下の行の<>となっている部分を現在使用している値に修正する。

endpoint = "https://<テナンシのオブジェクト・ストレージ・ネームスペース>.compat.objectstorage.<使用しているリージョンの識別子>.oraclecloud.com"

应用外部存储桶

请将每个源文件夹中的terraform.sh文件,
将<>部分的名称与之前的步骤中设置的名称匹配。

docker-compose exec terraform ash
cd ソースフォルダ
terraform init -migrate-state
→apply実施後各コンソールで外部バケット内にtfstateが保管されていることを確認する。

如果要恢复到本地的话

在源文件中,将terraform部分注释掉,然后输入以下命令。

请确认是否有其他人在使用。

docker-compose exec terraform ash
cd ソースフォルダ
terraform init -migrate-state
→apply実施後ローカルででtfstateが更新されていることを確認する。

删除存储桶资源

在删除存储桶之前,请首先删除其中的所有文件,并接着执行来自terraform的模块删除操作。(仅适用于AWS、OCI)

docker-compose exec terraform ash
cd ソースフォルダ/tfstate
terraform destroy
→yesを入力する。
→各コンソールでバケットが削除されていることを確認する。

最后

目前我在娱乐领域只能建立到这个程度,但是我希望能够逐渐将手动完成的部分用Terraform实现。

我希望本文能对使用Terraform的人有所帮助。

bannerAds