【发布时间】:2021-05-24 04:37:31
【问题描述】:
为了个人使用(和乐趣),我正在尝试设置一个我想在其上托管我的网站的虚拟机(在 docker 容器中运行的 Nginx、Django 和 Postgres)。我正在尝试学习如何以安全的方式使用 Terraform 和 Cloud init 设置服务器。
我当前的 cloud-init 代码:
#cloud-config
groups:
- docker
users:
- default
# the docker service account
- name: test
shell: /bin/bash
home: /home/test
groups: docker
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_import_id: None
lock_passwd: true
ssh-authorized-keys:
- ssh-rsa my_public_ssh_key
package_update: true
package_upgrade: true
packages:
- git
- sudo
- apt-transport-https
- ca-certificates
- curl
- gnupg-agent
- software-properties-common
runcmd:
# install docker following the guide: https://docs.docker.com/install/linux/docker-ce/ubuntu/
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get -y update
- sudo apt-get -y install docker-ce docker-ce-cli containerd.io
- sudo systemctl enable docker
# install docker-compose following the guide: https://docs.docker.com/compose/install/
- sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
power_state:
mode: reboot
message: Restarting after installing docker & docker-compose
虚拟机是 Ubuntu 20.04 从技术上讲,我希望“测试”用户能够从我的 git 存储库中提取最新代码并使用 docker-compose (重新)部署网站(在 /home/test/website 中)。用户是否可能没有 sudo 权限(我不想让它具有提升的权限)。其次:如何使用单独的 SSH 密钥创建一个 root 帐户(这样设置是否安全)?
生成 VM 的 Terraform 代码。
resource "scaleway_instance_server" "app_server" {
type = var.instance_type
image = "ubuntu-focal"
name = var.instance_name
enable_ipv6 = true
tags = [ "FocalFossa", "MyUbuntuInstance" ]
root_volume {
size_in_gb = 20
delete_on_termination = true
}
lifecycle {
create_before_destroy = true
}
ip_id = scaleway_instance_ip.public_ip.id
security_group_id = scaleway_instance_security_group.www.id
# cloud init: setup
cloud_init = file("${path.module}/cloud-init.yml")
}
非常感谢您的帮助。
【问题讨论】:
-
您能否提供一个可重现的 TF 代码来创建实例并使用您当前的 cloud-init?
-
我已经添加了 Terraform 代码,但它并没有那么特别..
标签: docker ubuntu terraform cloud-init