【发布时间】:2021-05-05 18:16:21
【问题描述】:
我正在使用 terraform 一次配置一堆机器。每个都应该运行相同的 docker 容器。启动脚本如下所示:
sudo apt-get remove docker docker-engine docker.io containerd runc -Y
sudo apt-get update -Y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common -Y
curl https://get.docker.com | sh && sudo systemctl --now enable docker
sudo docker build -t dockertest /path/to/dockerfile
sudo docker run --gpus all -it -v /path/to/mount:/usr/src/app dockertest script.py -b 03
基本上它会安装 docker,然后构建容器,然后运行它。
只有最后一行不起作用。如果我 ssh 进入机器,它工作正常。但不是作为启动脚本的一部分。
如何让它作为启动脚本的一部分工作? ssh 连接到每台机器很麻烦。
【问题讨论】:
-
这是作为 cloud-init/user 数据还是类似的东西运行?还是作为远程执行供应商?您能否以minimal reproducible example 的形式分享您的 Terraform 代码?理想情况下,这应该只是虚拟机的创建以及您执行此脚本的方式。
-
每个系统日志,看起来它是通过 cloud_init 完成的。不知道 terraform MRE。这是工程师制作的一个巨大的回购。作为数据科学家,我只是更改了 startup.sh(上图)和 terraform.tfvars 中的内容
-
您似乎需要将
sudo docker run命令改为创建服务的东西(例如通过systemd),然后启动并启用它(以便它在重新启动时启动)也是。 -
这会让我开始