基础设施包括各种云,像国内的阿里云、腾讯云和华为云,国外的AWS、微软Azure云和谷歌云,还有Kubernetes和OpenStack,都可以用Terraform进行资源管理。使用基础设施即代码(Infrastructure as Code, IaC)的方式来管理基础设施,这是现代IT基础设施管理的一个重要趋势,它允许我们以代码的形式定义基础设施,实现基础设施的自动化部署,确保基础设施配置的一致性,方便进行版本控制和变更管理。

Terraform属于基础设施即代码工具,官网地址:https://www.terraform.io/,产品定位:使用 Terraform 在任何云上进行自动化基础架构,高效管理基础设施,阿里云和腾讯云是Terraform合作伙伴,使用和下载量都不小,华为云是自己在维护,没有合作伙伴标识。

安装,直接在官网下载页找到对应系统下载安装即可,Linux、macOS和Windows都支持,下面通过一个演示示例体验一下Terraform具体操作,用的是AWS云,AWS提供了750小时2核CPU-1G内存虚拟机的免费使用,Terraform演示示例所需配置文件在https://github.com/robin-2016/terraform-demo代码仓库下,下面进行一个简单的创建一个虚拟机的demo演示示例:

先将代码仓库克隆到本地,进入demo-1目录下,下图就是main.tf文件全部内容。先来解释文件内容对应的含义,provider部分为对应的供应商,现在使用的是AWS,region是配置区域,ap-east-1为香港地区,access_key和secret_key为AWS账号生成的AK和SK。resource部分为创建的资源,这里设置的虚拟机实例,ami为虚拟机实例镜像id,是Ubuntu server24.04的镜像,instance_type为虚拟机实例规格,t3.micro是AWS提供的免费规格,2核CPU-1G内存,下面开始实操实验。

演示实验

第一步:填写AWS的AK和SK分别对应access_key和secret_key,执行“terraform init”初始化,会创建一个lock文件.terraform.lock.hcl,后续需要添加到代码仓库中

初始化后,可以执行“terraform validate”来验证配置文件是否正确,不是必须执行,必须在init初始化之后执行

第二步:在执行具体操作前,再执行“terraform plan”查看要执行内容,避免误操作,这里可以看到返回结果显示是将要创建一个AWS的虚拟机实例。这一步也可以不执行,可以跳过执行第三步,感觉还是先看一下执行内容比较放心。

第三步:确定好执行plan后符合预期,继续操作,执行“terraform apply“,输入yes确认操作,等待一会,一台实例就创建好了,显示“Apply complete”表明执行完成。

登录到AWS控制台,看到有一台刚刚创建的实例,也可以更改实例类型后再执行一次apply,现有的实例会销毁再创建对应类型的实例。

第四步:演示实验完成后,执行“terraform destroy“销毁资源,上面创建出来的实例就会被删除,同样要求输入yes来确认操作。

在演示实验结束后,查看目录,会生成两个文件:terraform.tfstate和terraform.tfstate.backup,这两个文件是用来记录terraform远程状态的,所以要保证在操作terraform之前这两个状态文件是最新的,两个状态文件可以存储在terraform提供的远程空间里,如果操作少一些也可以保存在代码仓库一个单独目录下。

Terraform可以用来管理vpc、安全组和dns记录等云上的大部分资源,还可以搭配自定义镜像+Linux脚本方式,完成应用程序层面部署,特别是有多个云账号需要管理,或者频繁初始化部署的情况下,能大大提高管理效率,一次编写执行多次。

以上为Terraform的初级使用分享,如果对你有帮助,请关注留言互动,如果需要Terraform具体云服务商教程请留言咨询,嘿嘿。

现代IT基础设施管理(1):Terraform初识和小试牛刀的更多相关文章

  1. SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流

    SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltSta ...

  2. 006 01 Android 零基础入门 01 Java基础语法 01 Java初识 06 使用Eclipse开发Java程序

    006 01 Android 零基础入门 01 Java基础语法 01 Java初识 06 使用Eclipse开发Java程序 Eclipse下创建程序 创建程序分为以下几个步骤: 1.首先是创建一个 ...

  3. 005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介

    005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介 Eclipse是一款集成开发工具--IDE. 集成开发环境(IDE,Integrated ...

  4. 004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构

    004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构 Java程序的结构 Java程序外层--类 程序外层,如下面的代码,是一个类的定义. c ...

  5. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  6. 002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介

    002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介 学习Java的基础语法 Java是一门编程语言,学习的逻辑其实和现实世界的语言是一样的,需要了 ...

  7. 001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学

    001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学 welcome to Java World 欢迎来到Java世界 一起领略Java编程世界的奥秘与奥妙 ...

  8. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  9. [转]《Hadoop基础教程》之初识Hadoop

    原文地址:http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不 ...

  10. 《Hadoop基础教程》之初识Hadoop

    Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...

随机推荐

  1. 使用C#爬取快手作者主页,并下载视频/图集

    最近发现一些快手的作者,作品还不错,出于学习研究的目的,决定看一下怎么爬取数据.现在网上有一些爬虫工具,不过大部分都失效了,或者不开源.于是自己就写了一个小工具.先看一下成果: 软件只需要填写作者ui ...

  2. 8.30域横向-PTH&PTK&PTT票据传递

    知识点 Kerberos协议具体工作方法,在域中: 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后 ...

  3. C# 中的 AEAD_AES_256_GCM

    注意:AEAD_AES_256_GCM Key的长度必须是32位,nonce的长度必须是12位,附加数据有可能为空值.AEAD_AES_128_GCM Key的长度必须是16位,nonce的长度必须是 ...

  4. typescript 5.1

    http://www.patrickzhong.com/TypeScript/PREFACE.html 前言 TypeScript 官网大约从 2020 年开始要打造新版的官网,其中包括官网的样式,以 ...

  5. JVM(JAVA Virtual Machine)Java虚拟机

    JVM的跨平台性 一次编写,到处运行 JVM将字节码文件编译成对应操作系统的机器码 JVM的语言无关性 JVM的内存区域 虚拟机栈:在JVM运行过程中存储当前线程运行方法所需的数据,指令.返回地址 本 ...

  6. 【翻译】实现 Blocked Floyd-Warshall 用于解决所有对最短路径问题 C# 实现

    介绍 在之前的帖子中,我们实现了Floyd-Warshall(弗洛伊德-沃沙尔算法)(四种变体)以及路由重建算法.在这些帖子中,我们探讨了所有对最短路径问题的基本概念.内存中的数据表示.并行性.向量化 ...

  7. C++中指针和数组相关的运算符优先级

    概述 本文深入介绍了与指针和数组相关的运算符优先级,利用代码示例展示了当左结合和右结合运算符同时存在时的结合方式,同时也演示了如何使用()来强制人为指定结合顺序. 指针.数组相关的运算符优先级 下表展 ...

  8. std::vector 和 std::map 都支持以下比较运算符

    在 C++ 标准库中,std::vector 和 std::map 都支持以下比较运算符: ==(相等运算符) !=(不等运算符) <(小于运算符) <=(小于等于运算符) >(大于 ...

  9. php生成验证码类

    php生成验证码类 直接看代码 <?php session_start(); class Code{ //资源 private $img; //画布宽度 private $width=100; ...

  10. 基于Python后端构建多种不同的系统终端界面研究

    在我们一般开发系统的时候,往往会根据实际需要做出各种不同的系统终端界面,如基于BS的,CS.APP.小程序等等,一般都是基于一个统一接入的Web API后端,本篇系统探寻对基于Python后端构建多种 ...