CoreOS 中用於雲配置的簡單動態 user_data 服務?
我目前在 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 操作…