我正在VMWare ESXi环境中运行CoreOS集群的方式是使用安装在vCenter中的ISO,如本博客所述。
http://www.chrismoos.com/2014/05/28/coreos-with-cloud-config-on-vmware-esxi
然而,在特定的VMWare环境下,我必须在几个地方明确地将我的分配的IP地址定义到云configuration中的/etc/systemd/network/static.network服务中…所以我必须为每个服务创build一个ISO文件CoreOS机器我想运行。 这看起来很好,但没有规模…有时ITpipe理员无意中卸载ISO驱动器。
OEM发行文档( 此处 )指出,您可以定义/usr/share/oem/cloud-config.yml文件,并且应该能够“创build处理用户提供的元数据的其他单元,如下所述”。
然后EC2和Rackspace的过程就会亮起来,而解释只是指出你在CoreOS中的代码。
我想要做的是创build一个CoreOS单元,通过一个简单的URL通过HTTP拉取一个cloud-config文件…类似于http://server-ip/cloud-configs/specific-hostname并从YAML文件在那里开机…
这将解决两个问题:我不必为每个CoreOS机器提供一个单独的ISO,而且我也不必让VMWarepipe理员为每个CoreOS机器统一pipe理ISO。
该文件是不是很清楚的最好的方式来实现这一点。 看起来亚马逊/ Rackspace的作品,因为他们有操作系统内的代码。 Joe Schmoe如何在安装ISO之外提供dynamic云configuration数据?
最大的缺点是我可以编写一个单元,通过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通过URLparsingcloud-config的方法…
#!/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操作的方法…