Terraform入门教程,示例展示管理Docker和Kubernetes资源

成功显示了版本,我们把它添加到环境变量中去即可。

3 部署Docker资源


创建个目录:

$ mkdir terraform-docker-demo && cd $_

创建一个 main.tf 文件,写入以下内容:

terraform {

required_providers {

docker = {

source = “kreuzwerker/docker”

}

}

}

provider “docker” {}

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

}

}

根据 main.tf 初始化项目:

$ terraform init

Initializing the backend…

Initializing provider plugins…

  • Finding latest version of kreuzwerker/docker…

  • Installing kreuzwerker/docker v2.12.2…

  • Installed kreuzwerker/docker v2.12.2 (self-signed, key ID 24E54F214569A8A5)

Partner and community providers are signed by their developers.

If you’d like to know more about provider signing, you can read about it here:

https://www.terraform.io/docs/cli/plugins/signing.html

Terraform has created a lock file .terraform.lock.hcl to record the provider

selections it made above. Include this file in your version control repository

so that Terraform can guarantee to make the same selections by default when

you run “terraform init” in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running “terraform plan” to see

any changes that are required for your infrastructure. All Terraform commands

should now work.

If you ever set or change modules or backend configuration for Terraform,

rerun this command to reinitialize your working directory. If you forget, other

commands will detect it and remind you to do so if necessary.

我们先执行plan来看看它将会有什么变更:

$ terraform plan

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:

  • create

Terraform will perform the following actions:

docker_container.nginx will be created

  • resource “docker_container” “nginx” {

  • attach = false

  • bridge = (known after apply)

  • command = (known after apply)

  • container_logs = (known after apply)

  • entrypoint = (known after apply)

  • env = (known after apply)

  • exit_code = (known after apply)

  • gateway = (known after apply)

  • hostname = (known after apply)

  • id = (known after apply)

  • image = (known after apply)

  • init = (known after apply)

  • ip_address = (known after apply)

  • ip_prefix_length = (known after apply)

  • ipc_mode = (known after apply)

  • log_driver = “json-file”

  • logs = false

  • must_run = true

  • name = “tutorial”

  • network_data = (known after apply)

  • read_only = false

  • remove_volumes = true

  • restart = “no”

  • rm = false

  • security_opts = (known after apply)

  • shm_size = (known after apply)

  • start = true

  • stdin_open = false

  • tty = false

  • healthcheck {

  • interval = (known after apply)

  • retries = (known after apply)

  • start_period = (known after apply)

  • test = (known after apply)

  • timeout = (known after apply)

}

  • labels {

  • label = (known after apply)

  • value = (known after apply)

}

  • ports {

  • external = 8000

  • internal = 80

  • ip = “0.0.0.0”

  • protocol = “tcp”

}

}

docker_image.nginx will be created

  • resource “docker_image” “nginx” {

  • id = (known after apply)

  • keep_locally = false

  • latest = (known after apply)

  • name = “nginx:latest”

  • output = (known after apply)

}

Plan: 2 to add, 0 to change, 0 to destroy.

执行变更:

$ terraform apply

docker_image.nginx: Creating…

docker_image.nginx: Still creating… [10s elapsed]

docker_image.nginx: Still creating… [20s elapsed]

docker_image.nginx: Creation complete after 28s [id=sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdeenginx:latest]

docker_container.nginx: Creating…

docker_container.nginx: Creation complete after 1s [id=0dac86e383366959bd976cc843c88395a17c5734d729f62f07106caf604b466f]

它自动帮我们下载了镜像和启动了容器。通过以下命令查看nginx的主页:

$ curl http://localhost:8000

现在我不想要这些资源了,通过以下命令删除:

$ terraform destroy

docker_container.nginx: Destroying… [id=0dac86e383366959bd976cc843c88395a17c5734d729f62f07106caf604b466f]

docker_container.nginx: Destruction complete after 0s

docker_image.nginx: Destroying… [id=sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdeenginx:latest]

docker_image.nginx: Destruction complete after 1s

4 部署Kubernetes资源


创建目录:

$ mkdir terraform-kubernetes-demo && cd $_

总结

上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。

很多人担心学了容易忘,这里教你一个方法,那就是重复学习。

打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。

从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。

总结

上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。

很多人担心学了容易忘,这里教你一个方法,那就是重复学习。

打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。

从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

[外链图片转存中…(img-VQ397NPg-1714478339373)]

人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值