Openstack

我需要同時使用 Openstack 的密鑰對和 cloud-init 的 ssh_authorized_keys 嗎?

  • November 27, 2020

我有一個使用 Terraform 和 Openstack 的舊設置。通過 Terraform 將有密鑰對注入 Openstack 實例:

resource "openstack_compute_instance_v2" "bamboo_agent" {
 name               = var.agents[count.index].name
 image_name         = "${var.image}"
 flavor_name        = "${var.flavor}"
 key_pair           = "${openstack_compute_keypair_v2.bamboo_ssh[0].name}"
 user_data          = "${file("scripts/init_instance.cfg")}"
 network {
   port             = "${openstack_networking_port_v2.bamboo[count.index].id}"
 }
 count= length(var.agents)
}

scripts/init_instance.cfg中將添加鍵:

ssh_authorized_keys:
 - ssh-rsa ...

AFAIK 兩種方法都在做同樣的事情,對吧?我需要兩者嗎?刪除其中一個還不夠嗎?

我想刪除密鑰對並將密鑰添加ssh_authorized_keys到預設帳戶並添加users:到 cloud-init 中的其他帳戶。

實際上,它們應該做同樣的事情,但據我所知,它們不會同時應用。

cloud-init 在用於創建新實例的映像/模板中執行,並將在首次啟動時使用實例特定設置自定義模板。Cloud-init 很早就呼叫 OpenStack 元數據提供程序,並將下載元數據,例如 OpenStack ssh 密鑰和您的 user-data/cloud-config 腳本scripts/init_instance.cfg

我認為首先應用來自 OpenStack 的 SSH 密鑰。

由於它會在密鑰被接受之前驗證密鑰,因此依賴 OpenStack 部署密鑰應該非常健壯和可靠。但是 OpenStack 有一個限制,它只允許您分配一個密鑰來部署到一個實例。

像您這樣的使用者數據/雲配置腳本scripts/init_instance.cfg是 cloud-init 執行的最後一件事。

cloud-config 沒有一鍵限制,允許您分配多個 ssh 密鑰並執行許多其他配置任務。

如果您的cloud-config腳本包含無效的 yaml 並且完全失敗,則由 OpenStack 部署密鑰可能會有所幫助;然後你應該仍然有一個可以訪問和調試的實例……

引用自:https://serverfault.com/questions/1044129