Vmware-Esxi

CoreOS 中用於雲配置的簡單動態 user_data 服務?

  • October 9, 2014

我目前在 VMWare ESXi 環境中執行 CoreOS 集群的方式是使用安裝在 vCenter 中的 ISO,如本文所述…

http://www.chrismoos.com/2014/05/28/coreos-with-cloud-config-on-vmware-esxi

但是,對於那個特定的 VMWare 環境,我必須在雲配置中的幾個地方將我分配的 IP 地址明確定義到一個/etc/systemd/network/static.network服務中……所以我必須為我想要執行的每台 CoreOS 機器創建一個 ISO 文件。這看起來不錯,但無法擴展……有時 IT 管理員會無意中解除安裝 ISO 驅動器。

OEM 分發文件(此處)說您可以定義一個/usr/share/oem/cloud-config.yml文件,並且您應該能夠“創建處理使用者提供的元數據的附加單元,如下所述”。

然後說明 EC2 和 Rackspace 的過程,解釋只是指出它們在 CoreOS 中的烘焙程式碼。

我想做的是創建一個 CoreOS 單元,它cloud-config通過 HTTP 使用簡單的 URL 拉取文件……類似於http://server-ip/cloud-configs/specific-hostname在啟動時從那里拉取 YAML 文件……

這將解決兩個問題:我不必為每台 CoreOS 機器提供單獨的 ISO,也不必讓 VMWare 管理員始終如一地為每台 CoreOS 機器管理 ISO。

文件並不清楚實現這一目標的最佳方式。似乎 Amazon/Rackspace 可以工作,因為它們在作業系統內部有程式碼。Joe Schmoe 如何在安裝 ISO 之外提供動態雲配置數據?

最大的脫節是我可以編寫一個通過 wget/curl 獲取文件的單元(無論可用),但是我如何告訴 CoreOS 在獲取 YAML 後處理它?

所以,我可能應該翻遍其他一些雲提供商……就像有這個“exoscale”提供者提供了一個 bash 腳本和一個單元來觸發那個 bash 腳本……

 - name: exoscale-cloudinit.service
   command: restart
   runtime: yes
   content: |
     [Unit]
     Description=Cloudinit from exoscale (cloudstack-style) metadata
     Requires=coreos-setup-environment.service
     After=coreos-setup-environment.service

     [Service]
     Type=oneshot
     EnvironmentFile=/etc/environment
     ExecStart=/usr/share/oem/bin/exoscale-coreos-cloudinit

…以及讓 CoreOS 解析cloud-config通過 URL 的方法…

#!/bin/bash

. /usr/share/oem/bin/exoscale-dhcp

DHCP_SERVER=$(get_dhcp_ip)
USERDATA_URL="http://${DHCP_SERVER}/latest/user-data"

block-until-url "${USERDATA_URL}"
coreos-cloudinit --from-url="${USERDATA_URL}"

…但是現在我有點雞/蛋的問題,除非我有某種方法可以獲取臨時 IP 地址來執行 curl 操作…

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