Openstack
我需要同時使用 Openstack 的密鑰對和 cloud-init 的 ssh_authorized_keys 嗎?
我有一個使用 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 部署密鑰可能會有所幫助;然後你應該仍然有一個可以訪問和調試的實例……