Отключить CoreOS cloudinit

Я хотел попробовать CoreOS для нового vServer. Пока что мне это нравится, но я совершил фатальную ошибку: я создал его с помощью файла cloudinit вместо более нового метода зажигания, и теперь при каждой перезагрузке обновления он сбрасывает мой пароль и настройки ssh...

Мне было лень создавать "идеальный" файл cloudinit, поэтому я решил, что смогу потом изменить все настройки, как и каждый раз, когда устанавливал ОС раньше...

Поэтому после каждого временного окна обновления мне приходится снова менять свой пароль, и мне нужно перезапускать службу sshd, потому что порт снова устанавливается на 22, даже если конфигурация все еще определяет мой измененный номер порта.

Я не смог найти никаких советов, чтобы потом изменить файл cloudinit или даже отключить перезагрузку при перезагрузке. Я вижу преимущество файлов зажигания, которые выполняются только один раз, но я бы хотел избежать переустановки всего моего vServer только для переустановки CoreOS с помощью файла зажигания.

Есть идеи или намеки?:)

заранее спасибо

1 ответ

Решение

Майкл указал мне правильное направление - спасибо! Не знал о возможности загрузки системы с новым облачным конфигурацией и думал, что мне нужно изменить некоторые конфиги в разных местах системы...

Другая проблема заключалась в том, что CoreOS использует cloud-init, немного отличающийся от того, который показан в документации по cloud-init, и поэтому вы можете найти несколько различных решений, которые не будут работать для CoreOS.

Проблема 1: перезагрузка сбрасывает порт SSH на 22

Я нашел эту страницу в документации и обнаружил, что правильно отредактировал sshd_config, но система использовала sshd.socket после перезагрузки, поэтому мне приходилось (заново) запускать sshd все время...

Решение: отключение активации sshd.socket

sudo systemctl mask --now sshd.socket
sudo systemctl enable sshd.service      # VERY IMPORTANT!
sudo systemctl restart sshd.service

Очень важно: вы можете заблокировать себя вне системы! Вы можете проверить, есть ли у вас доступ к оболочке входа через панель управления вашего провайдера (спас меня). В документации сказано, что вы должны выполнить команды 1 и 3 выше, но служба sshd отключена после перезагрузки, поэтому вы должны включить ее до перезагрузки!

В качестве альтернативы вы можете использовать sshd.socket и изменить там порт. Это также задокументировано по ссылке выше.

Проблема 2: сброс моего пароля после каждой перезагрузки

Решение: создайте новый cloud-init.yaml

Я мог бы создать более качественное облако-init.yaml и повторно применить его. Просто изменил пароль и добавил мои ssh-ключи для существующего пользователя и вызвал

sudo coreos-cloudinit --validate --from-file=/path/to/cloud-init.yaml

проверить файл. Удаление --validate Флаг применит cloud-init.yaml и изменит пароль (хорошо, чтобы проверить его), но перезагрузка все равно сбросит его! Как я выяснил, coreos-cloudinit Команда не предназначена для запуска пользователями вручную. Чтобы обновить конфигурацию для повторной подготовки при перезагрузке, мы должны перезаписать другой файл:

sudo cp /path/to/cloud-init.yaml /var/lib/coreos-install/user_data

После этого мой пароль был верным после перезагрузки.

Другие вопросы по тегам