Terraform:装载量

Jor*_*rdi 4 digital-ocean terraform

根据文档,使用terraform,我能够在数字海洋上创建一个小滴:

resource "digitalocean_volume" "foobar" {
  region      = "nyc1"
  name        = "baz"
  size        = 100
  description = "an example volume"
}
Run Code Online (Sandbox Code Playgroud)

所以,我也可以为它添加一个音量:

resource "digitalocean_droplet" "foobar" {
  name       = "baz"
  size       = "1gb"
  image      = "coreos-stable"
  region     = "nyc1"
  volume_ids = ["${digitalocean_volume.foobar.id}"]
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何将它安装在所需的位置.我需要自动安装它.我的意思是,当液滴上升时,我需要安装体积.我在考虑使用厨师......

有任何想法吗?

Inn*_*gbo 7

要自动挂载卷,您可以通过 cloud init 使用 user_data 运行脚本,如下所示:

这就是你的 digitalocean_droplet 资源应该如何反映:

resource "digitalocean_droplet" "foobar" {
  name       = "baz"
  size       = "1gb"
  image      = "coreos-stable"
  region     = "nyc1"
  volume_ids = ["${digitalocean_volume.foobar.id}"]
   # user data
  user_data = "${data.template_cloudinit_config.cloudinit-example.rendered}"
}
Run Code Online (Sandbox Code Playgroud)

那么包含 cloudinit_config 的 cloud.init 文件应该如下所示。它将引用 ${TERRAFORM_HOME}/script/disk.sh 中的 shell 脚本,该脚本会自动挂载您的卷:

provider "cloudinit" {}


data "template_file" "shell-script" {
  template = "${file("scripts/disk.sh")}"

}
data "template_cloudinit_config" "cloudinit-example" {

  gzip = false
  base64_encode = false

  part {
    content_type = "text/x-shellscript"
    content      = "${data.template_file.shell-script.rendered}"
  }

}
Run Code Online (Sandbox Code Playgroud)

在启动时自动挂载卷的 shell 脚本位于 ${TERRAFORM_HOME}/script/disk.sh

它将首先检查文件系统是否存在。如果为 true,则不会格式化磁盘,否则不会

#!/bin/bash


DEVICE_FS=`blkid -o value -s TYPE ${DEVICE}`
if [ "`echo -n $DEVICE_FS`" == "" ] ; then
        mkfs.ext4 ${DEVICE}
fi
mkdir -p /data
echo '${DEVICE} /data ext4 defaults 0 0' >> /etc/fstab
mount /data
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助


c3s*_*t7n 6

安装量需要从使用guest OS自身完成mount,fstab等等.

数字海洋文档涵盖了这里.

使用Chef,您可以使用resource_mount以自动方式安装它.

设备名称将是/dev/disk/by-id/scsi-0DO_Volume_YOUR_VOLUME_NAME.因此,使用Terraform文档中的示例,它将是/dev/disk/by-id/scsi-0DO_Volume_baz.