云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

_深圳宝安网站建设公司_便宜的

小七 141 0

继续部署Nomad和Terraform

本文探讨了如何使用Nomad Terraform提供程序来控制Nomad服务的生命周期。HashiCorp Nomad和Terraform都允许您声明性地将基础设施定义为代码,但它们在组织中提供不同的功能。Nomad调度和监视应用程序,确保应用程序保持运行并自动协调任何故障。Nomad支持滚动部署,以提供更安全的融合。Nomad还与consur集成用于服务发现和用于机密管理的保险库。另一方面,Terraform是一个生命周期管理和供应工具。它创建、更新和销毁Nomad将用来运行应用程序的底层基础设施。但是Terraform不仅仅是一个基础设施工具,Terraform还可以管理提交、更新和删除Nomad服务的过程,允许您将整个基础设施建模为代码。Nomad Terraform提供程序非常适合于持续交付您的服务,在本文中,我们将介绍这些工具如何无缝地协同工作,以支持此工作流。如果您还没有运行Nomad服务器,您可以使用我们在Auto-bootstrapping-Nomad上发布的配置,也可以使用Nomad游乐场https://katacoda.com/hashicorp/scenarios/playground。与本文相关的源代码可从以下链接获得:https://github.com/hashicorp/terraform-container-deploy-nomad.git»Nomad地形提供程序Nomad Terraform提供程序使用非常简单,就像我们需要首先配置provider块的所有Terraform提供程序一样。提供商"nomad"{地址="https://your.nomad.server:4646英寸}提供程序没有必需的参数,但通常需要将地址设置为Nomad服务器以执行作业。提供程序的其他选项包括为加密通信设置区域和证书。https://www.terraform.io/docs/providers/nomad/index.html接下来,我们需要配置nomad_作业资源:资源"nomad_job""http echo"{作业规范="${data.template_文件.作业.渲染}"}jobspec属性包含Nomad作业的文本,在本例中,我们使用一个模板,因为我们需要为Docker容器hashicorp/http echo:${version}的版本使用一个动态值。作业"http echo"{# ...任务"http echo"{driver="docker"配置{image="hashicorp/http echo:${version}"参数=["-text","hello world","-听",":8080",]港口地图{http=8080}}}}要将动态变量传递给Nomad作业,例如我们要运行的Docker容器的标记,我们可以使用Terraform的data_template特性。数据"模板文件""作业"{template="${file("${路径.模块}/http协议-tmpl.hcl回波")}"变量{版本="${变量版本}"}}将这些组合在一起,我们得到了下面示例中所示的简单地形配置:#配置Nomad提供程序提供商"nomad"{地址="http://localhost:4646英寸}变量"版本"{default="最新"}数据"模板文件""作业"{template="${file("./http-回波.hcl.tmpl")}"变量{版本="${变量版本}"}}#登记工作资源"nomad_job""http echo"{作业规范="${data.template_文件.作业.渲染}"}»运行作业要运行我们的作业,首先需要初始化Terraform:$terraform初始化然后,要查看Terraform所做的更改,我们可以运行plan命令:$地形图正在刷新计划前内存中的地形状态。。。刷新的状态将用于计算此计划,但不会保存到本地或远程状态存储。data.template_文件.job:正在刷新状态。。。Terraform执行计划已经生成,如下所示。资源按字母顺序显示,以便快速扫描。绿色资源将创建(或销毁,然后创建现有资源存在),黄色资源正在改变,红色资源正在改变会被摧毁。青色条目是要读取的数据源。注意:您没有指定"-out"参数来保存此计划,所以什么时候调用"apply"时,Terraform不能保证这是要执行的。+游牧民族_作业.http-回声注销并销毁"真"注销\u id_更改时的"true"jobspec:"作业\"http_test\"{\n datacenters=[\"dc1\"]\n type=\"service\"\n\n update{\n stagger=\"10s\"\n max_parallel=1\n}\n\n group\"web\"{\n约束{\n distinct_hosts=true\n}\n\n重新启动{\n尝试次数=10\n interval=\"5m\"\n delay=\"25s\"\n模式=\"延迟\"\n}\n\n任务\"http echo\"{\n driver=\"docker\"\n\n config{\n image=\"hashicorp/http"-回声:最新\"\n\n args=[\n\"-text\",\n\"'hello world'\",\n\"-listen\",\n\":8080\",\n]\n\n port_-map{\n http=8080\n}\n}\n\n resources{\n cpu=500#500 MHz\n memory=256#256MB\n\n network{\n mbits=10\n\n port\"http\"{\n static=8080\n}\n}\n}\n\n service{\n name=\"http echo\"\n\nport=\"http\"\n\n check{\n name=\"alive\"\n type=\"http\"\n interval=\"10s\"\n timeout=\"2s\"\n path=\"/\"\n}\n}\n}\n}\n}\n}\n"计划:1表示添加,0表示更改,0表示销毁。最后,要应用更改并开始我们的作业,我们运行:$terraform apply-var"版本=最新"data.template_文件.job:正在刷新状态。。。游牧民族_作业.http-回声:正在创建。。。# ...申请完成!资源:添加了1个,更改了0个,销毁了0个。作业现在正在Nomad集群上运行我们可以使用Nomad status http echo命令查看完整状态。$nomad status http回显参数化=假摘要任务组排队开始运行失败完成丢失网站0 0 1 0 1 0最新部署ID=d3c25fa9状态=成功Description=成功完成部署部署工作组希望健康不健康网站1 1 1 0分配ID节点ID任务组版本所需状态创建于14fd5760 5c51d218 web 2运行时间:2017年3月8日13:44:53 UTC56693bc4 5c51d218 web 0停止完成2017年3月8日13:35:27 UTC»停止工作停止作业同样简单,只需运行terraform destroy命令:$地形破坏红色显示的资源将被销毁。-游牧民族_作业.http-回声- data.template_文件.工作你真的想毁灭吗?Terraform将删除所有托管基础设施,如上图所示。无法撤消。仅接受"是"确认。输入值:是游牧民族_作业.http-回声:毁灭。。。(ID:http测试)游牧民族_作业.http-回声:摧毁完成data.template_文件工作:毁灭。。。(编号:7C0AFC8AF326EAF9E2C6041DF059D419F32F7B42B297F19A43C911BD5C80A14)data.template_文件。作业:销毁完成彻底摧毁!资源:2个被摧毁。»结论这篇文章展示了使用Terraform部署Nomad服务是多么容易,我们希望您能够看到如何将其应用到您的持续交付工作流中。本文中的简单示例仅展示了Nomad作业的一小部分功能,要了解更多信息,请参阅Nomad作业文档这些特性不仅限于Nomad,Terraform还支持其他调度器,如Kubernetes和Docker Swarm!