【问题标题】:terraform - mounting a directory in yamlterraform - 在 yaml 中挂载目录
【发布时间】:2019-10-25 14:23:01
【问题描述】:

我正在管理 goole 云平台上的实例,并使用 terraform 脚本将 docker 映像部署到 GCP 中。我现在使用 Terraform 脚本的问题是在启动 docker 映像时将主机目录安装到 docker 容器中。

如果我可以手动运行 docker 命令,我可以做这样的事情。

docker run -v <host_dir>:<container_local_path> -it <image_id>

但是我需要在 Terraform Yaml 中配置挂载目录。这是我的 Terraform YAML 文件。

spec:
  containers:
    - name: MyDocker
      image: "docker_image_name"
      ports:
        - containerPort: 80
          hostPort: 80

我在主机中有一个目录(/www/project/data)。该目录需要挂载到 docker 容器中。

有人知道如何将这个目录挂载到这个 yaml 文件中吗?

或任何解决方法表示赞赏。

谢谢。

【问题讨论】:

    标签: terraform terraform-provider-gcp


    【解决方案1】:

    我找到了答案。请确保“dataDir”名称必须在“volumeMounts 和volumes”之间匹配。

          volumeMounts:
           - name: 'dataDir'
             mountPath: '/data/'
      volumes:
      - name: 'dataDir'
        hostPath:
          path: '/tmp/logs'
    

    【讨论】:

      【解决方案2】:

      我假设您正在将 Docker 映像加载到基于容器的计算引擎中。我的建议是确定创建 GCE 映像和使用 GCP 控制台手动安装磁盘的方法。以下内容将为该任务提供指导。

      https://cloud.google.com/compute/docs/containers/configuring-options-to-run-containers#mounting_a_host_directory_as_a_data_volume

      一旦您能够手动实现所需的 GCP 环境,似乎有一种方法可以将其转换为 Terraform 脚本,如下所述:

      https://github.com/terraform-providers/terraform-provider-google/issues/1022

      高级秘诀似乎是识别 docker 命令和规范的配置可在 Compute Engine 配置的元数据中找到。我们可以通过手动运行命令并查看实现该目标的 REST 请求来找到所需的元数据。一旦我们知道元数据,我们就可以将其转录成 terraform 脚本中的等效设置,以便由 Terraform 添加。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-19
        • 2014-07-20
        • 1970-01-01
        • 2020-11-16
        • 1970-01-01
        • 2021-08-15
        • 2015-05-04
        • 1970-01-01
        相关资源
        最近更新 更多