IaC基础设施即代码:使用Terraform 连接huaweicloud华为云 并创建后端OBS

news2024/11/17 15:29:23

目录

  一、实验

1.环境

2.huaweicloud华为云创建用户

3.Windows使用Terraform 连接 huaweicloud

4.Windows给Terraform项目添加huaweicloud华为云OBS (实现代码与资源分离)

二、问题

 1. Windows terraform 初始化失败

2.Terraform 初始化后端资源失败

3.HC、HCS、HCSO有哪些区别


  一、实验

1.环境

(1)主机

表1-1 主机

主机系统软件工具备注
jia

Windows 

Terraform 1.6.6VS Code、 PowerShell、 Chocolatey

2.huaweicloud华为云创建用户

(1)登录 (统一身份认证)

(2)查看

统一身份认证服务-用户组

统一身份认证服务-用户

(3)新建用户组

(4)用户组授权

授权

提示

完成

(5)新建用户 

选中“编程访问”

加入用户组

提示

完成

(6)成功新建用户

(7)查看tentcloud provider 示例

Terraform Registry

USE PROVIDER  示例

terraform {
  required_providers {
    huaweicloud = {
      source = "huaweicloud/huaweicloud"
      version = "1.60.1"
    }
  }
}

provider "huaweicloud" {
  # Configuration options
}

Example Usage  示例

terraform {
  required_providers {
    huaweicloud = {
      source  = "huaweicloud/huaweicloud"
      version = ">= 1.36.0"
    }
  }
}

# Configure the HuaweiCloud Provider
provider "huaweicloud" {
  region     = "cn-north-4"
  access_key = "my-access-key"
  secret_key = "my-secret-key"
}

# Create a VPC
resource "huaweicloud_vpc" "example" {
  name = "my_vpc"
  cidr = "192.168.0.0/16"
}

(11)下载软件包

https://github.com/huaweicloud/terraform-provider-huaweicloud/releases

(12) 华为云查询地域和可用区

地区和终端节点_开发者中心-华为云 (huaweicloud.com)

3.Windows使用Terraform 连接 huaweicloud

(1)验证版本

terraform -v 或 terraform --version

(2)创建主配置文件

main.tf

# Configuration options
provider "huaweicloud" {
  access_key  = var.access_key
  secret_key  = var.secret_key
  region      = var.region
  
}

(3) 创建密钥配置文件

terraform.tfvars

access_key = "XXXXX"
secret_key = "XXXXX"

(4)创建版本配置文件

versions.tf

terraform {
  required_providers {
    tencentcloud = {
      source  = "tencentcloudstack/tencentcloud"
      version = "1.81.69"
    }
  }
}

(5)创建变量配置文件

variables.tf

variable "access_key" {
  type = string
}

variable "secret_key" {
  type = string
}

variable "region" {
  type      = string
  default   = "cn-east-3"
  sensitive = true
}

(6)初始化

terraform init

(7)格式化代码

terraform fmt

(8)验证代码

terraform validate 

terraform validate -json

4.Windows给Terraform项目添加huaweicloud华为云OBS (实现代码与资源分离)

(1)修改主配置文件

main.tf ,添加如下代码

resource "huaweicloud_obs_bucket" "bucket" {
  bucket = "tfhexian-backend-bucket"
  acl    = "private"
  tags = {
    type = "bucket"
  }
}

(2)创建输出配置文件

outputs.tf

output "bucket_name" {
  value = huaweicloud_obs_bucket.bucket.bucket
}

(3) 初始化

terraform init

(4) 格式化代码

terraform fmt

(5) 验证代码

terraform validate 

(6) 计划与预览

 terraform plan

成功拿到存储桶name

(7) 申请资源

terraform apply

yes

(8)华为云查看OBS服务

桶列表为空

(9)展示资源

terraform show

(10)登录华为云系统查看

已新增1个存储桶

(11)创建后端存储配置文件

backend.tf

(12) 初始化

terraform init

yes ,系统上传配置文件到华为云OBS

(13)登录华为云系统查看

①查看Bucket 列表

配置文件已上传

(14)查看项目目录

(15)删除项目配置文件

(16)再次查看项目目录

(17)查看版本

多了provider的仓库地址

terraform version

terraform -v

二、问题

 1. Windows terraform 初始化失败

 (1)报错

(2)原因分析

国内用户在下载 Provider 时会遇到下载缓慢甚至下载失败的问题

(3)解决方法

手工下载华为云 provider至本地目录,然后搭建本地registry并修改 terraform块中的required_providers配置。

①  配置方案

1)下载华为云 provider至本地目录,选择对应的版本号和操作系统进行下载。

2)搭建本地registry,将下载后的华为云 provider解压至如下目录:
Linux:~/.terraform.d/plugins/<local-registry>/<organization>/huaweicloud/<version>/<os_arch>

Windows:%APPDATA%\terraform.d\plugins\<local registry>\<organization>\huaweicloud\<version>\<os_arch>

 ② 查看目录

echo $env:APPDATA

③ 进入目录

④在相关目录下创建子目录

安装包移动:

⑤ 成功

2.Terraform 初始化后端资源失败

(1)报错

╷
│ Warning: Deprecated Parameter
│
│   on backend.tf line 8, in terraform:
│    8:     endpoint   = "obs.cn-east-3.myhuaweicloud.com"
│
│ The parameter "endpoint" is deprecated. Use parameter "endpoints.s3" instead.
╵

╷
│ Warning: Complete URL Expected
│
│   on backend.tf line 8, in terraform:
│    8:     endpoint   = "obs.cn-east-3.myhuaweicloud.com"
│
│ The value should be a valid URL containing at least a scheme and hostname. Had "obs.cn-east-3.myhuaweicloud.com".
│
│ Using an incomplete URL, such as a hostname only, may work, but may have unexpected behavior.
╵

╷
│ Error: Retrieving AWS account details: AWS account ID not previously found and failed retrieving via all available methods.
│
│ See https://www.terraform.io/docs/providers/aws/index.html#skip_requesting_account_id for workaround and implications.
│ Errors: 2 errors occurred:
│       * retrieving caller identity from STS: operation error STS: GetCallerIdentity, exceeded maximum number of attempts, 5, https response error StatusCode: 0, RequestID: , request send failed, Post "https://sts.cn-east-3.amazonaws.com.cn/": dial tcp: lookup sts.cn-east-3.amazonaws.com.cn: getaddrinfow: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server.
│       * retrieving account information via iam:ListRoles: operation error IAM: ListRoles, https response error StatusCode: 403, RequestID: 3bc79174-c32f-4c3e-9744-bf8b3fe193a0, api error InvalidClientTokenId: The security token included in the request is invalid.

(2)原因分析

Terraform Registry

Example  (Terraform 高于1.6.3版本) 部分参数调整

terraform {
  backend "s3" {
    bucket    = "terraformbucket"
    key       = "terraform.tfstate"
    region    = "cn-north-1"
    endpoints = {
      s3 = "https://obs.cn-north-1.myhuaweicloud.com"
    }

    skip_region_validation      = true
    skip_credentials_validation = true
    skip_metadata_api_check     = true
    skip_requesting_account_id  = true
    skip_s3_checksum            = true
  }
}

申明变量 (参考Linux环境)

(3)解决方法

修改配置文件。

修改前:

修改后:

成功:

3.HC、HCS、HCSO有哪些区别

(1)区别

1)HC
Huawei Cloud,既是华为的公有云产品,也是华为公有云、私有云、混合云等所有相关解决方案的统一品牌。公有云:华为机房,华为运维。

2)HCS
Huawei Cloud Stack,华为的全栈云解决方案(HCS还是私有云产品,需要部署在客户数据中心、运维需要客户自己运维,只是和公有云服务体验类似、应用类似、可以互通)。客户机房,客户运维。

3)HCSO
Huawei Cloud Stack Online,由华为云Stack演变而来,区别在于用私有云架构去使用公有云服务,还是部署在客户数据中心,但是专线接入华为云运维中心,由华为运维; 本质是私有云,运维托管。客户机房,华为运维。

(2)选择

HC  

Terraform Registry

HCS

Terraform Registry

HCSO

Terraform Registry

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1409461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sulfo Cy2 Biotin,水溶性 Cy2 生物素,能够与各种氨基基团特异性结合

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Sulfo Cyanine2 Biotin&#xff0c;Sulfo Cy2 Biotin&#xff0c;水溶性 Cy2 生物素&#xff0c;Sulfo-Cy2-Biotin&#xff0c;水溶性-Cy2-生物素 一、基本信息 产品简介&#xff1a;Sulfo Cyanine2 Biotin, also k…

el-dialog的close事件会执行两次

如果close事件执行的方法有传参&#xff0c;那么定义一个变量传参&#xff0c;而不是写死 如果写死

66.Spring是如何整合MyBatis将Mapper接口注册为Bean的原理?

原理 首先MyBatis的Mapper接口核心是JDK动态代理 Spring会排除接口&#xff0c;无法注册到IOC容器中 MyBatis 实现了BeanDefinitionRegistryPostProcessor 可以动态注册BeanDefinition 需要自定义扫描器&#xff08;继承Spring内部扫描器ClassPathBeanDefinitionScanner ) 重…

成熟的内外网数据交换方案,如何实现跨网传输?

网络迅速发展&#xff0c;我们可以从网络上查找到各式各样的信息&#xff0c;但是同时网络安全问题也随之严重。近几年&#xff0c;各种有关网络安全的新闻不断被报道&#xff0c;数据泄露给很多企业带来了严重打击&#xff0c;不仅是经济损失&#xff0c;严重者还会对企业的声…

AI嵌入式K210项目(20)-MicroPython介绍

文章目录 前言一、MicroPython是什么&#xff1f;二、官方文档学习实验过程总结 前言 单片机嵌入式编程经历了汇编、 C 语言的发展历程&#xff0c;可以说是一次编程革命&#xff0c;其背后的原因是单片机的速度越来越快&#xff0c;集成度越来越高。而这一趋势并没停止&#…

Linux第35步_在“移植uboot”前安装“libncurses5-dev,bison和flex”工具

在“移植uboot”前&#xff0c;需要在Ubuntu中安装“libncurses5-dev&#xff0c;bison和flex”工具&#xff0c;否则在“编译uboot”时&#xff0c;会报错。 一、了解相关知识 1、libncurses5-dev库是一个在Linux/Unix下广泛应用的图形函数库。 2、bison是用C编写的语法解析…

excel甘特图怎么做?这种方法一目了然

excel甘特图怎么做&#xff1f;在现代项目管理中&#xff0c;甘特图作为一种可视化工具&#xff0c;被广泛应用于规划、执行和监控项目进度。在Excel中创建甘特图是一个强大的工具&#xff0c;可以用来规划和跟踪项目进度。下面就教教你如何使用Excel制作甘特图。 一、了解甘特…

泥土

当我们置身于大自然中&#xff0c;或许很少有人会特别留意到泥土&#xff0c;因为它显得如此平凡而不起眼。然而&#xff0c;泥土却是地球上最基础、最重要的元素之一&#xff0c;是生命的孕育之源。 泥土&#xff0c;那深埋在地底的黑褐色质地&#xff0c;看似普通无比&#…

C++——类型转换与特殊类设计

我们在C语言中经常会使用到强制类型转换&#xff0c;例如指针和整形之间的转换是最为常见的&#xff0c;但是 在C中&#xff0c;C设计师认为这种强制类型转换是不安全的&#xff0c;所以在C标准中加入了四种强制 类型转换风格&#xff0c;这就是我将要介绍的强制类型转换。 在某…

《Windows核心编程》若干知识点实战应用分享

目录 1、进程的虚拟内存分区与小于0x10000的小地址内存区 1.1、进程的虚拟内存分区 1.2、小于0x10000的小地址内存区 2、保存线程上下文的CONTEXT结构体 3、从汇编代码角度去理解多线程运行过程的典型实例 4、调用TerminateThread强制结束线程会导致线程中的资源没有释放…

『OpenCV-Python|鼠标作画笔』

Opencv-Python教程链接&#xff1a;https://opencv-python-tutorials.readthedocs.io/ 本文主要介绍OpenCV-Python如何将鼠标作画笔绘制圆或者矩形。 示例一&#xff1a;图片上双击的位置绘制一个圆圈 首先创建一个鼠标事件回调函数&#xff0c;鼠标事件发生时就会被执行。鼠标…

Git学习笔记(第9章):国内代码托管中心Gitee

目录 9.1 简介 9.1.1 Gitee概述 9.1.2 Gitee帐号注册和登录 9.2 VSCode登录Gitee账号 9.3 创建远程库 9.4 本地库推送到远程库(push) 9.5 导入GitHub项目 9.6 删除远程库 9.1 简介 9.1.1 Gitee概述 众所周知&#xff0c;GitHub服务器在国外&#xff0c;使用GitHub作为…

51-15 视频理解串讲—TimeSformer论文精读

今天读的论文题目是Is Space-Time Attention All You Need for Video Understanding? Facebook AI提出了一种称为TimeSformer视频理解的新架构&#xff0c;这个架构完全基于transformer&#xff0c;不使用卷积层。它通过分别对视频的时间和空间维度应用自注意力机制&#xff…

山西电力市场日前价格预测【2024-01-26】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-26&#xff09;山西电力市场全天平均日前电价为309.45元/MWh。其中&#xff0c;最高日前电价为587.20元/MWh&#xff0c;预计出现在18:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

2016年认证杯SPSSPRO杯数学建模A题(第一阶段)洗衣机全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 A题 洗衣机 原题再现&#xff1a; 洗衣机是普及率极高的家用电器&#xff0c;它给人们的生活带来了很大的方便。家用洗衣机从工作方式来看&#xff0c;有波轮式、滚筒式、搅拌式等若干种类。在此基础上&#xff0c;各厂商也推出了多种具体方案…

mac电脑安卓文件传输工具:Android File Transfer直装版

Android File Transfer&#xff08;AFT&#xff09;是一款用于在Mac操作系统上与Android设备之间传输文件。它允许用户将照片、音乐、视频和其他文件从他们的Android手机或平板电脑传输到Mac电脑&#xff0c;以及将文件从Mac上传到Android设备。 下载地址&#xff1a;https://w…

Cesium介绍及3DTiles数据加载时添加光照效果对比

一、Cesium简介 Cesium原意是化学元素铯&#xff0c;铯是制造原子钟的关键元素&#xff0c;通过命名强调了Cesium产品专注于基于时空数据的实时可视化应用。熟悉GIS开发领域的读者都知道&#xff0c;Cesium是一个用于创建3D地理空间应用程序的开源JavaScript库&#xff0c;它允…

文件包含技术总结

开发人员一般会把重复使用的函数写到单个文件中&#xff0c;需要使用某个函数时直接调用此文件&#xff0c;而无需再次编写&#xff0c;这中文件调用的过程一般被称为文件包含。 allow_url_fopen On&#xff08;是否允许打开远程文件&#xff09; allow_url_include On&…

书生·浦语大模型--第五节课笔记作业--LMDeploy 大模型量化部署实践

文章目录 大模型部署背景LMDeploy简介动手实践创建环境服务部署在线转换离线转换TurboMind推理API服务Gradio 作为前端 Demo演示TurboMind 服务作为后端TurboMind 推理作为后端 作业 大模型部署背景 部署&#xff1a;将训练好的模型在特定软硬件环境中启动的过程 挑战&#x…

BurpSuite Pro 2023.12.1.2下载与破解-最新版BurpSuite Pro

本文在我的博客地址是&#xff1a;https://h4cker.zip/post/f05ae2e66da503f6383dffe48cdf5bac 上一次BurpSuite的分享还是在2020年 由于CSDN有防盗链&#xff0c;我自己的博客都无法访问这篇博文的图片了 至于为什么再写一次&#xff0c;是因为我看到群里这张图&#xff1a;…