乐趣区

关于devops:Terraform初体验二-第一个demo执行

通过 Terraform 在本地运行 docker nginx

前置条件:1. 装置好 windows docker 2. 装置好 terraform

装置 docker

装置 windows docker 能够间接登录 http://docker.com 下载安装即可,docker 能够有图形化治理页面装置最新的 19.03。为了简化第一次的操作,这里咱们先不通过 terraform 来装置 docker,docker 下载安装地址https://www.docker.com/get-started

编写 main.tf

terraform {
  required_providers {
    docker = {source = "terraform-providers/docker"}
  }
}

provider "docker" {host    = "tcp://localhost:2375"}

resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.latest
  name  = "tutorial"
  ports {
    internal = 80
    external = 8000
  }
}

其中值得注意的是,官网的例子,在 provider “docker” 中指定的 host 是通过 windows 的管道实现的,怕是曾经很多人不会用了。这里须要在 docker desktop 中设置开启 ”tcp://localhost:2375″,并替换 tf 文件中的 host =”tcp://localhost:2375″。

执行 main.tf

笔者应用的 vs code,能够间接右键在终端中关上,而后顺次进行以下步骤。

1. 初始化

在终端中执行terraform init。首次执行初始化操作,会有较长的工夫去获取 terraform 中定义的 source 信息,在第一次初始化后没有 source 信息的变动,能够跳过初始化间接开始部署。

2. 部署

在终端中执行 terraform plan 查看 terraform 执行打算,在终端中执行 terraform apply 实现部署。执行部署命令时,会将 terraform 的 plan 列出来展现给用户,并由用户确定执行。也能够输出 -auto-approve 跳过 plan。

输出 ”yes”

装置实现!

查看后果。

大家能够简略的字面了解 main.tf 中的语义,会在前面的内容中具体介绍,在此次执行中咱们会在本地创立一个 nginx 的容器,并裸露 800 端口,咱们拜访 localhost:800 能够看到由 terraform 创立的容器能够失常运行。

3. 删除

在终端中执行terraform destroy。则删除由 tf 创立的 docker 容器。

附录

在咱们执行 terraform -h 后看到 terraform 的相干操作命令和应用办法,整顿给大家,如果你刚刚开始应用 terraform,能够从这些根底命令开始,对于其余命令,请应用前浏览 terraform 的官网文档。

Usage: terraform [-version] [-help] [args]

Common commands:

apply              构建或更改基础设施

console            terraform 传参的交互式控制台

destroy            删除由 terraform 管制的基础设施

env                工作空间治理

fmt                将配置文件重写为标准格局

get                下载并装置配置模块

graph              创立 terraform 资源的可视化图形

import             将现有基础设施导入 terraform

init               初始化 terraform 的工作目录

login              获取并保留近程主机的凭据

logout             删除近程主机的本地存储凭据

output             从状态文件读取输入

plan               生成并显示执行打算

providers          打印配置中应用的提供程序的树型构造

refresh            依据理论资源更新本地状态文件

show               查看 terraform 的状态或打算

taint              手动标记污点以便资源从新创立

untaint            手动勾销污点

validate           验证 terraform 文件

version            terraform 版本

workspace          工作空间治理

All other commands:

0.12upgrade        重写 v0.12 之前的模块源代码

0.13upgrade        重写 v0.13 之前的模块源代码

debug              debug 输入治理

force-unlock       手动解除 terraform 锁定状态

push               推送实现代码到企业仓库

state              要害状态治理

本文作者:UCloud 容器云产品经理 沈旭

退出移动版