Назад | Перейти на главную страницу

Простая динамическая служба user_data для облачной конфигурации в CoreOS?

В настоящее время я использую кластер CoreOS в среде VMWare ESXi, используя ISO, смонтированный в vCenter, как описано в этом сообщении в блоге ...

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

Однако с этой конкретной средой VMWare я должен явно указать назначенный мне IP-адрес в /etc/systemd/network/static.network service в облачной конфигурации в нескольких местах ... поэтому мне нужно создать файл ISO для каждой машины CoreOS, которую я хочу запустить. Это кажется нормальным, но не масштабируется ... а иногда ИТ-администраторы непреднамеренно отключают диск ISO.

Документация по распространению OEM (Вот) говорит, что вы можете определить /usr/share/oem/cloud-config.yml файл и что вы должны иметь возможность «создавать дополнительные блоки, обрабатывающие предоставленные пользователем метаданные, как описано ниже».

Затем освещается процесс для EC2 и Rackspace, а объяснение просто указывает на их встроенный код в CoreOS.

Я бы хотел создать модуль CoreOS, который cloud-config файл через HTTP с простым URL ... что-то вроде http://server-ip/cloud-configs/specific-hostname и вытащите оттуда файл YAML при загрузке ...

Это решило бы две проблемы: мне не нужно было бы предоставлять отдельный ISO для каждой машины CoreOS, и мне не пришлось бы, чтобы администраторы VMWare последовательно управляли ISO для каждой машины CoreOS.

В документации не совсем ясно, как это сделать. Похоже, Amazon / Rackspace работает, потому что у них есть код внутри ОС. Как Джо Шмо предоставляет данные о конфигурации динамического облака помимо монтирования 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 ...