我有一台KVM主机。我正在使用Terraform创建一些使用KVM提供程序的虚拟服务器。以下是Terraform文件的相关部分:
provider "libvirt" {
uri = "qemu+ssh://root@192.168.60.7"
}
resource "libvirt_volume" "ubuntu-qcow2" {
count = 1
name = "ubuntu-qcow2-${count.index+1}"
pool = "default"
source = "https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img"
format = "qcow2"
}
resource "libvirt_network" "vm_network" {
name = "vm_network"
mode = "bridge"
bridge = "br0"
addresses = ["192.168.60.224/27"]
dhcp {
enabled = true
}
}
# Use CloudInit to add our ssh-key to the instance
resource "libvirt_cloudinit_disk" "commoninit" {
name = "commoninit.iso"
pool = "default"
user_data = "data.template_file.user_data.rendered"
network_config = "data.template_file.network_config.rendered"
}
data "template_file" "user_data" {
template = file("${path.module}/cloud_config.yaml")
}
data "template_file" "network_config" {
template = file("${path.module}/network_config.yaml")
}
cloud_config.yaml文件包含以下信息:
manage_etc_hosts: true
users:
- name: ubuntu
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
home: /home/ubuntu
shell: /bin/bash
lock_passwd: false
ssh-authorized-keys:
- ${file("/path/to/keyfolder/homelab.pub")}
ssh_pwauth: false
disable_root: false
chpasswd:
list: |
ubuntu:linux
expire: False
package_update: true
packages:
- qemu-guest-agent
growpart:
mode: auto
devices: ['/']
服务器创建成功后,我可以从运行Terraform脚本的主机上ping该设备。尽管我通过cloud-init文件传递了我的SSH密钥,但我似乎无法通过SSH登录。
从存储我所有密钥的文件夹中,我运行:
homecomputer:keyfolder wim$ ssh -i homelab ubuntu@192.168.80.86
ubuntu@192.168.60.86: Permission denied (publickey).
在这个命令中,homelab是我的私钥。
有什么原因导致我无法登录吗?有什么方法可以调试吗?我现在无法登录到服务器进行调试。我尝试在cloud-config文件中设置passwd
,但同样不起作用
*其他信息
1)渲染模板如下:
> data.template_file.user_data.rendered
manage_etc_hosts: true
users:
- name: ubuntu
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
home: /home/ubuntu
shell: /bin/bash
lock_passwd: false
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1y***Homelab_Wim
ssh_pwauth: false
disable_root: false
chpasswd:
list: |
ubuntu:linux
expire: False
package_update: true
packages:
- qemu-guest-agent
growpart:
mode: auto
devices: ['/']
发布于 2020-07-12 22:34:15
您需要添加libvirt_cloudinit_disk
资源以将ssh-key添加到VM,代码来自我的TF-script:
# Use CloudInit ISO to add ssh-key to the instance
resource "libvirt_cloudinit_disk" "commoninit" {
count = length(var.hostname)
name = "${var.hostname[count.index]}-commoninit.iso"
#name = "${var.hostname}-commoninit.iso"
# pool = "default"
user_data = data.template_file.user_data[count.index].rendered
network_config = data.template_file.network_config.rendered
发布于 2021-01-22 05:49:03
我也面临着同样的问题,因为我错过了第一行
#cloud-config
在cloudinit.cfg文件中
https://stackoverflow.com/questions/60953511
复制相似问题