当前位置: 首页 > 知识库问答 >
问题:

如何使用Terraform配置启动远程服务?

漆雕原
2023-03-14

我希望我的Terraform配置预配服务器并在最后通过调用命令启动服务并继续运行它。我尝试使用nohup并使用Remote-exec进行屏幕:

nohup:

provisioner "remote-exec" {
 inline = "nohup sudo command &"
}

屏幕:

provisioner "remote-exec" {
 inline = "screen -d -m sudo command"
}

我通过手动登录来检查命令是否正在运行。但他们并没有保持流程运行。如果我手动尝试这些命令,并且使用ssh调用它们,这些命令确实有效。

如何使用Terraform预配来启动命令并在返回控制流时保持其运行?

共有2个答案

魏雅惠
2023-03-14

一个更强大的解决方案是启动一个运行您的进程的服务。

这意味着init系统可以控制进程并在必要时重新启动它。它还获得了现代init系统的其他好处,例如处理依赖排序(确保其他服务在启动之前正在运行)和日志之类的东西。

如果您将服务设置为在启动时启动,那么您也可以避免通过SSH连接到服务器,这可能意味着服务器将容忍重新启动而无需重新配置。

使用Systemd,这意味着创建一个单元文件,可以像以下一样简单:

[Unit]
Description=foo

[Service]
ExecStart=command
Restart=always

[Install]
WantedBy=multi-user.target

运行以下命令将确保命令在启动时自动运行,并且进程的任何故障都将导致它自动重新启动:

systemctl enable foo.service
systemctl start foo.service

当使用AWS的自动缩放组等机制来配置实例时,这一点变得更加重要。当通过aws\u autoscaling\u group(自动缩放组)资源创建自动缩放组时,您无法轻松连接到当时创建的实例,并且无法控制在组向外扩展或替换实例时连接到实例。在这一点上,重要的是,实例能够完全从基本映像(可以使用诸如Packer之类的工具创建)或通过在第一次引导时自动运行的用户数据脚本来配置自己。

常乐
2023-03-14

试着在你的nohup之后加一个睡眠。为我工作。我怀疑,尽管存在nohup,但在子进程有机会启动之前,将您的最后一个远程执行回退可以让Terraform在关闭连接之前逃脱惩罚。

provisioner "remote-exec" {
    inline = [
        "nohup sudo command &",
        "sleep 1"
    ]
}
 类似资料:
  • 问题内容: 据我所知,您只能使用VisualVM来分析正在运行的应用程序。 有谁知道使用VisualVM剖析Java应用程序启动和启动的方法吗? 我相信必须有一种方法,否则将是一个重大的疏忽。 希望我只是误读了文档。 谢谢,第 问题答案: 您是否要使用`-Xrunjdwp“命令行选项来设置性能分析?如果是,则该选项仅出于此目的具有” suspend“参数 : 如果要在加载主类之前立即挂起目标VM,

  • 问题内容: 我正在尝试在Windows主机上的PyCharm和运行django应用程序的debian虚拟主机之间进行调试。说明说要安装egg,添加导入,然后调用命令。我认为这些事情需要在debian主机上完成吗? 好吧,那我应该把这两行放在哪个文件中? 我尝试将其放入settings.py中,但是得到了这种东西… pycharm只是坐在那里“等待连接” 问题答案: PyCharm(或你的选择依据)

  • 我在Unix盒子上安装了ActiveMQ Artemis服务器。我能够创建一个Artemis broker实例,该实例为我提供到运行在上的web控制台的链接。

  • 我正在尝试配置Spring Security SAML 1.0.1以访问位于https://discovery.renater.fr/test的远程发现服务。而是到达“CachingMetadataManager”的属性中指定的IDP。 以下是我如何生成SP元数据: 可以看到,我已经将属性设置为bean中的。我还在bean中设置了属性、和。但是,当我将应用程序的日志级别设置为“trace”时,值从

  • 我正试图通过netbeans在我的pc上启动一个TomCat实例以进行测试...我首先从网站下载了Tomcat 7.0.69,然后在我的doc文件夹中提取并在NetBeans 8中创建了一个新的服务器(工具->服务器->添加服务器)。当我运行服务器时,我会收到以下消息:

  • 问题内容: 我有一个简单的systemd服务,需要定期重新启动它,以防止其进程出错。是否有配置选项供systemd服务定期重新启动它们?所有选项似乎都与退出服务时重新启动服务有关。 问题答案: 是的,您可以通过将服务设置为来使服务定期重启。在此服务文件的[服务]部分中将此选项与和一起添加,其中xx是您要重新启动服务的时间(以秒为单位)。在这里,您的进程将在xx个时间段后被systemd终止,并再次