Облако init ubuntu удалить
Обновлено: 21.11.2024
Это обзор большинства настроек, доступных для модулей Openstack в Cloud-init.
Пользователи
Если в облачной конфигурации не определены пользователи, создается пользователь по умолчанию. Этому пользователю обычно присваивается имя «ubuntu», «fedora», «debian» в зависимости от используемого образа системы.
Вы можете внести некоторые изменения в этого пользователя по умолчанию, используя следующие значения:
password Будет установлен пароль пользователя. Если вы установите строку «R» или «RANDOM», будет сгенерирован случайный пароль и записан на стандартный вывод (консоль). Если пароль установлен, срок действия пароля автоматически истечет, что приведет к принудительной смене пароля при следующем входе в систему. Это поведение можно изменить с помощью параметра «chpasswd». SSH по умолчанию не разрешает аутентификацию по паролю. Это поведение можно изменить с помощью параметра «ssh_pwauth». chpasswd Используйте это, чтобы установить пароли для нескольких пользователей. Также будет переключать срок действия пароля.
С помощью строфы «users:» мы можем создавать локальных пользователей в системе. Пример:
Можно использовать следующие значения:
- Полное имя пользователя (или название приложения, если учетная запись предназначена для программы)
- Номер здания и комнаты или контактное лицо
- Номер телефона офиса
- Любая другая контактная информация (номер пейджера, факса и т. д.)
Группы
С помощью строфы "groups:" мы можем создавать локальные группы в системе. Группы создаются перед пользователями, и вы используете список YAML для определения дополнительных групп, в качестве альтернативы со списком добавляемых пользователей.
Создайте группу "Маги":
Создайте группу "magicians" с "gandalf" и "harryp" в качестве участников.
Примечание. Во время тестирования у нас возникли проблемы с этим.
Файловые системы и разделы
Часовой пояс и регион
Запись произвольных файлов
Модуль «write_files» в cloud-init может записывать файлы в любое место файловой системы. Файлы могут быть закодированы в Base64 или сжаты gzip.
Можно использовать следующие значения:
- b64 — файл в кодировке Base64.
- gzip — сжатый файл Gzip.
- gz+b64 – сжатый Gzip файл в кодировке Base64.
Более полный пример:
Пакеты и репозитории
Установите дополнительное программное обеспечение, добавьте дополнительные репозитории пакетов и укажите, какое зеркало использовать.
Пакеты
Установка пакетов при первой загрузке. Вы также можете указать конкретную версию. Пример:
Вы также можете обеспечить актуальность системы, принудительно обновив ее при первой загрузке:
Чтобы разрешить перезагрузку экземпляра после установки/обновления пакета, добавьте:
APT-репозитории
Настройте репозитории для дистрибутивов на основе apt, таких как Ubuntu и Debian.
Можно использовать следующие значения:
apt_mirror Какое зеркало использовать для обновлений пакетов. Пример: apt_mirror_search Поиск в списке доступных зеркал. Выберите первый, который разрешается через DNS. Пример: apt_mirror_search_dns Поиск DNS-имен "-mirror" в каждом из FQDN, localdomain или доменов в /etc/resolv.conf. По умолчанию: false apt_sources Добавляет в конфигурацию дополнительные источники APT. Ожидается список источников с ключами «источник» и «ключ». Пример:
Debian Debconf
Вы можете установить ответы debconf так же, как вы установили их с помощью файла preseed-файла debian или с помощью набора-выборов debconf. Пример:
Репозитории YUM
Настройте дополнительные репозитории для дистрибутивов на основе yum, таких как RHEL, CentOS и Fedora.
Начните настройку со следующего раздела:
Добавить конфигурацию под этим.
Можно использовать следующие значения:
name Удобочитаемая строка, описывающая репозиторий. baseurl URL-адрес, по которому расположен репозиторий. enable Если репозиторий должен быть помечен как включенный. failovermethod Либо циклический, либо приоритетный. 'roundrobin' случайным образом выбирает URL-адрес из списка URL-адресов для начала и переходит к каждому из них, когда обнаруживает сбой при установлении связи с хостом. «приоритет» начинается с первого указанного базового URL и считывается последовательно. gpgcheck Должна ли выполняться проверка подписи GPG для пакетов в репозитории. gpgkey URL-адрес, указывающий на файл ключа GPG в кодировке ASCII для репозитория. Этот параметр используется, если yum требуется открытый ключ для проверки пакета, а необходимый ключ не был импортирован в базу данных RPM. Если этот параметр установлен, yum автоматически импортирует ключ с указанного URL-адреса.
Более полный пример:
Дополнительные сведения и дополнительные параметры см. в документации по yum.conf. Большинство параметров, используемых в yum.conf, также можно использовать здесь.
Автоматизация и управление конфигурацией
Марионетка
Чтобы автоматически настроить марионетку, определите следующий раздел:
Каждый ключ, присутствующий в объекте conf, будет добавлен в puppet.conf, кроме "ca_cert".
В результате получится этот puppet.conf:
Сертификат ЦС puppmaster будет доступен в /var/lib/puppet/ssl/certs/ca.pem
"certname" поддерживает замену во время выполнения; %i — это идентификатор экземпляра, %f — полное доменное имя экземпляра.
Чтобы автоматически настроить шеф-повара, определите следующий раздел:
А затем настройте следующие значения для этого ключа:
install_type Может быть установлен на "gems", "packages" или "omnibus". «packages» устанавливает Chef с помощью системы пакетов, «gems» устанавливает Chef с помощью ruby gems, а «omnibus» устанавливает с помощью системы установщика OpsChef. omnibus_url URL-адрес для загрузки установщика, если install_type имеет значение «omnibus». force_install Если установлено значение "true", запустите программу установки, даже если вам кажется, что шеф-клиент уже установлен. server_url URL-адрес шеф-сервера. Пример: имя_узла Имя узла по умолчанию соответствует идентификатору экземпляра, если он отсутствует. environment Имя окружения, по умолчанию "_default", если его нет. validation_name Имя клиента проверки, по умолчанию «chef-validator», если оно отсутствует. Обычно устанавливается при использовании размещенного шеф-повара. validation_key Закодированный PEM сертификат ключа проверки. Пример: run_list Список для первой загрузки json. Пример: initial_attributes Начальные атрибуты, используемые кулинарными книгами. Пример: вывод Записывайте все выходные данные подпроцесса в файл журнала, что полезно для устранения неполадок с облачной инициализацией. Пример:
Полная конфигурация может выглядеть следующим образом:
Стек соли
Чтобы автоматически настроить солевой миньон SaltStacks, убедитесь, что модуль "солт-миньон" включен в разделе "cloud_config_modules", а затем определите раздел "salt_minion":
Это автоматически установит пакет salt-minion из настроенных репозиториев программного обеспечения.
Затем вы можете использовать клавишу "conf" для добавления/изменения параметров в конфигурации миньона:
Вы можете настроить предварительные сертификаты для миньона. Это делается путем выдачи «salt-key -gen-keys=» на Salt Master, где находится идентификатор миньона. Чтобы установить их, используйте следующие строфы:
Настроить доверенные сертификаты ЦС
С помощью строфы "ca-certs:" можно настроить доверенные сертификаты ЦС в масштабе всей системы для установления доверия SSL/TLS при первой загрузке экземпляра. Пример конфигурации:
Можно использовать следующие значения:
доверенный Список с файлами PEM всех сертификатов, которым вы доверяете, обычно используемый для вставки сертификата вашей организации. remove-defaults Удалить все доверенные CA-сертификаты по умолчанию, которые обычно поставляются с операционной системой.
DNS и разрешение имен
Имя хоста
Эти настройки управляют тем, как задается файл /etc/hostname.
имя хоста Установите имя хоста экземпляра в указанное значение. По умолчанию:имя хоста, возвращенное службой метаданных. save_hostname Если задано значение «false», обновлять имя хоста при загрузке, за исключением случаев, когда оно установлено пользователем вручную. Если установлено значение «true», никогда не обновлять файл /etc/hostname. По умолчанию: false fqdn Установите полное доменное имя экземпляра в указанное значение. По умолчанию: полное доменное имя, возвращенное службой метаданных.
Хосты
Эти настройки управляют управлением файлом /etc/hosts.
manage_etc_hosts Если установлено значение «false», Cloud-init вообще не будет изменять /etc/hosts. Если установлено значение «true» или «template», /etc/hosts будет перезаписываться из /etc/cloud/templates/hosts.tmpl при каждой загрузке. Строки '$hostname' и '$fqdn' заменяются в шаблоне соответствующими значениями. Чтобы изменения сохранялись после перезагрузки, необходимо внести изменения в файл /etc/cloud/templates/hosts.tmpl. .1.1 запись. Это не изменит другие записи. По умолчанию: false Примечание. Это значение должно быть установлено на «localhost» или «true» в вашей конфигурации, чтобы задать правильное полное доменное имя и имя хоста в /etc/hosts во время установки.
Настроить файл resolv.conf
manage-resolv-conf Если установлено значение "false", игнорируйте этот модуль. Если установлено значение «true», переопределите установку resolv.conf по умолчанию и настройте ее, используя приведенный ниже шаблон.
Примечание. В настоящее время эта функция работает только в Fedora, RHEL и SLES.
ssh_pwauth Если установлено значение «true», разрешает вход в систему SSH на основе пароля. По умолчанию: false ssh_svcname Имя службы SSH, используемое с «перезапуском службы». По умолчанию "ssh". ssh_deletekeys Если установлено значение «true», существующие ключи ssh будут удалены при первой загрузке для каждого экземпляра. Это всегда должно быть установлено на общедоступных изображениях. ssh_genkeytypes Список типов ключей ssh, которые должны быть сгенерированы. Они передаются в 'ssh-keygen -t' ssh_fp_console_blacklist ssh_key_console_blacklist Настройка вывода ключей ssh на консоль. Список типов ключей (первый токен файла /etc/ssh/ssh_key_*.pub), которые следует пропускать при выводе отпечатков ключей и ключей на консоль соответственно. ssh_import_id Импорт ключей SSH по идентификатору с сайта launchpad.net.Это строка или список идентификаторов, которые необходимо импортировать. Пример: ssh_authorized_keys Список открытых ключей SSH, которые будут добавлены к пользователю по умолчанию или первому пользователю, указанному в разделе пользователей. Пример: ssh_keys Установите предварительно сгенерированные закрытые ключи SSH на экземпляр вместо создания случайного ключа. Поддерживает «rsa», «dsa» и «ecdsa». Пример: disable_root Отключить доступ по ssh от имени root. Если вы хотите иметь возможность подключаться к системе по ssh как пользователь root, а не как пользователь по умолчанию/настроенный, вы должны установить для этого параметра значение false. По умолчанию: true disable_root_opts Значение этой переменной будет префиксом соответствующего ключа в /root/.ssh/authorized_keys, если «disable_root» имеет значение true. См. «man author_keys» для получения дополнительной информации о том, что вы можете здесь сделать. Строка «$USER» будет заменена именем пользователя по умолчанию. Пример:
Выполнение команд
Если вы хотите запускать команды во время загрузки, используйте параметр "runcmd", "bootcmd" или "cloud-init-boot-per".
"runcmd" запустится позже в процессе загрузки, примерно на том же уровне запуска, что и "rc.local".
"bootcmd" запускается очень рано в процессе загрузки, лишь немного позже запуска "boothhook". Он будет запускаться при каждой загрузке.
Ведение журнала
Настройка Cloud-init
Настройте установку cloud-init, переопределив значения по умолчанию.
- "init": куда отправлять выходные данные cloud-init.
- "config": куда отправлять выходные данные cloud-config.
- "final": куда отправлять выходные данные cloud-config-final.
- "all": куда отправлять выходные данные всех облачных стадий.
- Если запись представляет собой строку, она ссылается на стандартный вывод и стандартный вывод.
- Если запись представляет собой список, запись 0 – это стандартный вывод, а запись 1 – стандартный вывод.
- если запись является словарем, ожидается, что она будет иметь поля "вывод" и "ошибка".
Завершение
Действия, которые необходимо выполнить после завершения установки.
final_message Сообщение, написанное cloud-final, когда система завершила свою первую загрузку. По умолчанию: загрузка cloud-init завершена в $TIMESTAMP. Up $UPTIME секунд Пример: phone_home Если этот словарь присутствует, модуль облачной конфигурации phone_home отправит указанные данные обратно на указанный URL-адрес. Пример: power_state Может использоваться для выключения, перезагрузки или остановки системы после завершения загрузки. Этого же можно добиться с помощью сценариев пользовательских данных или с помощью runcmd, просто вызвав «shutdown». Выполнение этого таким образом гарантирует, что cloud-init полностью завершен с модулями, которые будут выполняться, и избегает любых сообщений об ошибках/журналах, которые могут быть отправлены на консоль в результате отключения системных служб, таких как syslog, во время работы cloud-init. Параметры: «задержка» — это время задержки выключения. Тот же формат, что и у команды «shutdown». По умолчанию «сейчас». Другой допустимый формат: +m (m в минутах). «режим» должен быть одним из «выключение», «остановка», «перезагрузка». "message" предоставляется в качестве аргумента сообщения для "shutdown". Пример:
cloud-init — это замечательная технология, которую можно использовать для настройки образов Linux для развертывания. Она позволяет выполнять всевозможные полезные действия, такие как автоматическое создание пользователей, установка пакетов, сброс ключей SSH и многое другое. Тем не менее, это часто окутано тайной. В этом видео я покажу, как с его помощью создать пользователя, задать имя хоста и установить некоторые пакеты.
Примечание. Ubuntu 20.04 является примером дистрибутива Linux, используемого в этом видео. Хотя большинство (если не все) концепций должны работать в других дистрибутивах, совместимость между дистрибутивами не может быть гарантирована.
Для начала нам сначала нужно проверить, установлен ли уже cloud-init:
dpkg --get-selections | grep облачная инициализация
Если он не установлен, установите его:
обновление sudo apt
установка sudo apt cloud-init
Если у вас уже установлен cloud-init, вы можете очистить его, а затем переустановить с помощью следующих команд:
sudo apt remove --purge cloud-init
sudo apt install cloud-init
После установки этого пакета в нашей системе появится каталог /etc/cloud с некоторыми значениями по умолчанию:
Больше всего нас интересует файл cloud.cfg. Давайте сделаем его резервную копию:
sudo cp cloud.cfg cloud.cfg.bak
Затем откройте файл в редакторе. Вы можете использовать любой редактор, какой захотите, но nano — это простой выбор, если у вас нет предпочтений. Обычно я использую vim, если вам интересно.
sudo nano cloud.cfg
Как видите, этот файл довольно большой. Есть несколько очень специфических вещей, которые я рекомендую обновить. Вы можете использовать следующий документ в качестве руководства, если вам интересно, какие модули не изменяются и за что они отвечают:
На этом сайте вы увидите список модулей. Глядя на ваш файл cloud.cfg, вы увидите, что многие из этих модулей используются.Мне нравится удалять любые из них, которые не относятся конкретно к тому, что я хочу делать, или каким-либо образом не имеют отношения к делу.
Большинство из них мы оставим в покое. Если вы сомневаетесь в том, что делает строка, либо проверьте список модулей на странице документации, чтобы узнать, относится ли она к вам, либо просто оставьте эту строку в покое. Но есть несколько, которые я хочу удалить, потому что точно знаю, что они не нужны. В частности, byobu , chef , mcollective , puppet salt-minion и т. д. Лично я ими не пользуюсь, но могу оставить их в покое, если они представляют для вас ценность.
Теперь давайте рассмотрим настройку пользователя. Вверху у нас есть раздел пользователей. В этом случае он создает пользователя по умолчанию. Например, в системах ubuntu это создаст пользователя с именем ubuntu. Пользователь Debian по умолчанию просто называется debian. Это будет варьироваться от одного дистрибутива к другому. Если вы оставите эту конфигурацию здесь, при запуске конфигурации будет создан пользователь по умолчанию. Мне это не нравится, я предпочитаю иметь пользователя с моим именем. Я просто комментирую этот конкретный раздел:
Прокрутите немного вниз, потому что есть целый раздел, посвященный пользователю по умолчанию. Закомментируйте весь этот раздел.
default_user:
name: ubuntu
lock_passwd: True
gecos: Ubuntu
groups: [adm, audio, cdrom, dialout…]
sudo: [" ALL=(ALL) NOPASSWD:ALL"]
оболочка: /bin/bash
Сохраните файл и выйдите. Не перезагружайтесь, нам нужно добавить дополнительные настройки в файл cloud.cfg. Сейчас мы сделаем небольшой обход и сгенерируем хэш пароля для пользователя, которого мы собираемся создать. Для этой цели мы можем использовать команду mkpasswd. Сначала проверьте, доступна ли у вас команда mkpasswd:
Если вы не видите никаких выходных данных, вам может потребоваться установить пакет whois, по крайней мере, в Debian и Ubuntu. Имя этого пакета может быть другим, если вы используете другой дистрибутив.
sudo apt установить whois
С помощью команды mkpasswd мы можем сгенерировать хеш пароля:
mkpasswd -m sha-512
По запросу введите пароль, который должен быть у вашего пользователя. Это сгенерирует хеш. Скопируйте хэш пароля, и мы вернемся к редактированию нашего файла.
sudo vim cloud.cfg
В начало файла мы добавим следующее содержимое:
- Имя: Jay
lock_passwd: false
passwd: $ 6 $ / m / gyokavx $ tmxreeuctmvlpkebxprsl8pz1znfugedirjdvqrsl8pz1znfugedirjdvqrpnwum0. /edoweERB3Ysy6vpxBzo jay
groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video]
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
оболочка: /bin/bash
Примечание. Не копируйте и не вставляйте приведенный выше пример хэша пароля в свой файл, вместо этого используйте хэш пароля, созданный ранее.
Примечание 2. Что касается списка групп, обязательно проверьте, существуют ли эти группы на самом деле, прежде чем вводить их. Вы можете проверить содержимое /etc/group, чтобы увидеть список групп в вашей системе. По сути, просто убедитесь, что вы не ссылаетесь на группу в этой строке, которая на самом деле не существует в вашей системе.
Следующее, что я рекомендую вам изменить в вашем файле, это добавить часовой пояс. Там уже должна быть строка, которая ссылается на часовой пояс, но она не будет обозначать конкретный часовой пояс. Вы можете добавить свой часовой пояс в конец этой строки.
Если вы не знаете свой часовой пояс, вы можете найти его на этой странице (просто выберите часовой пояс, который лучше всего соответствует вашему местоположению).
В конце файла конфигурации добавьте следующую строку, если хотите:
bootcmd:
- дата > /etc/birth_certificate
Эта строка приведет к тому, что текущая дата будет помещена в файл /etc/birth_certificate, как только экземпляр подключится к сети. Необязательно, но интересно.
Возможно, более полезно добавить следующую конфигурацию, чтобы обеспечить автоматическую установку определенных пакетов при запуске cloud-init:
пакеты:
- git
- tmux
- vim-nox
Вот оно! Сохраните файл и выйдите. У нас есть еще один файл, который нужно отредактировать, а этого на самом деле еще не существует.
sudo nano /etc/cloud/cloud.cfg.d/99-fake_cloud.cfg
Содержимое этого файла должно соответствовать следующему:
Сохраните файл и выйдите.
Прежде чем мы запустим cloud-init, давайте очистим его, чтобы по существу «сбросить» его:
очистка sudo cloud-init
Сейчас мы можем запустить cloud-init, но перед этим я рекомендую добавить еще одну настройку. Мы также можем настроить cloud-init для автоматической настройки имени хоста вашего сервера. Для этого снова откроем файл cloud.cfg:
sudo nano /etc/cloud/cloud.cfg
И добавьте следующую конфигурацию в файл persist_hostname :
Вы можете изменить имя хоста на любое другое. Наконец, сохраните файл, так и должно быть, когда речь идет о файлах конфигурации.
С моей стороны есть символическая ссылка, которая (по какой-то причине) предотвращает запуск cloud-init, если она присутствует. Я еще не уверен, почему этот файл присутствует, но из того, что я видел в Google, этот файл нужно будет удалить, иначе он потенциально может помешать работе cloud-init:
sudo rm /etc/systemd/network/99-default.link
Так и должно быть! На этом этапе мы можем перезагрузить сервер, и cloud-init должен запуститься. Но вместо того, чтобы перезагружать его, мы можем использовать следующую команду, чтобы протестировать его на месте, чтобы убедиться, что конфигурация действительно работает:
инициализация sudo cloud-init
Если все пойдет хорошо, вы сможете снова очистить cloud-init, а затем захватить образ вашего сервера, чтобы использовать его в качестве дистрибутивного образа для будущих развертываний.
При заказе VPS вы можете выбрать один из четырех вариантов установки. Одним из доступных вариантов является использование облачного файла конфигурации.
С файлом конфигурации облака вы можете автоматически настроить конфигурацию сервера Linux после процесса установки: во время первой загрузки вашего сервера программа под названием cloud-init считывает данные в файле конфигурации облака и настраивает конфигурацию на основе этого файла по вашим пожеланиям. Например, вы можете создавать пользователей, устанавливать пароли, добавлять ключи SSH, добавлять репозитории, устанавливать пакеты и многое другое.
В этом руководстве мы покажем вам, как создать и использовать файл конфигурации облака при заказе VPS. Более общие сведения об инициализации и настройке облака можно найти в этой статье.
Создание облачного файла конфигурации
Настройка облачного файла конфигурации не требует пояснений, если у вас есть пример. Поэтому в шагах ниже мы подчеркиваем примеры различных вариантов использования. Cloud-init поддерживает несколько форматов, но в этом руководстве мы используем формат YAML.
- Мы рекомендуем настроить хотя бы одного пользователя и ключ SSH в файле конфигурации облака и не помещать конфиденциальную информацию в файл конфигурации облака.
- Все параметры в этом разделе являются необязательными, и нет необходимости использовать их все. Например, если вы не настроили группы в файле конфигурации облака, будут созданы только системные группы и группы пользователей по умолчанию.
Шаг 1
Запустите текстовый редактор, например Notepad, Notepad++, Texteditor или Gedit.
Шаг 2
Первая строка файла конфигурации облака всегда должна быть объявлена как таковая, чтобы cloud-init мог распознать ее как файл конфигурации облака. Вы делаете это, открывая файл со строкой:
Затем вы добавляете в файл параметры, которые хотите настроить во время установки вашего VPS. На этом шаге мы покажем это в следующих частях:
В конце этого раздела мы покажем, как эти параметры выглядят после объединения с файлом конфигурации облака.
Синтаксис для создания групп:
Приведенный выше код создает две группы: имя группы1 и имя группы2.
- Группа имя1 содержит трех пользователей.
- Имя группы2 пусто.
Системные группы и пользователи создаются автоматически в процессе установки вашей операционной системы. Вам не нужно создавать их отдельно, поэтому эти параметры в основном служат для создания дополнительных групп.
В приведенном ниже примере показаны некоторые параметры, которые можно использовать при создании пользователя. В пояснении мы показываем все доступные варианты. Вы можете сами выбирать, какой из доступных вариантов использовать.
Объяснение При создании пользователей всегда сначала вводите имя, а затем нужные параметры в соответствии со следующим синтаксисом:
- имя: имя пользователя
- gecos: дополнительная информация о пользователе, например полное имя A. Не
- primary_group: основная группа пользователя. По умолчанию основной группе автоматически присваивается имя пользователя.
- группы: дополнительные группы, в которые входит пользователь. По умолчанию новые пользователи не добавляются в дополнительные группы.
- selinux_user: пользователь SELinux для входа в систему. Если этот параметр не указан, используется пользователь SELinux по умолчанию.
- expiredate: дата (ГГГГ-ММ-ДД), когда истечет срок действия учетной записи.
- ssh_import_id: идентификатор SSH, импортированный из LaunchPad.
- ssh_authorized_keys: список ключей SSH, которые будут добавлены в файл authorized_keys пользователя.
- ssh_redirect_user: при значении true вы блокируете доступ через ключи SSH (по умолчанию: false).
- lock_passwd: со значением false вы блокируете вход (SSH) с паролем (по умолчанию: true).
- passwd: хэш пароля пользователя. Вы можете сгенерировать хэш пароля с помощью команды:
Полный доступ к sudo:
sudo: ALL = (ALL) NOPASSWD: ALL
Различные параметры sudo:
sudo:
- ALL = (ALL) NOPASSWD: /bin/mysql
- ALL = (ALL) ALL
Отключить доступ к Sudo для пользователя:
sudo: false
- система: создайте пользователя как пользователя системы со значением true (по умолчанию: false).
- shell: оболочка входа в систему для созданного пользователя (по умолчанию: оболочка sh).
Пользователь по умолчанию
Если вы не укажете пользователей, в большинстве операционных систем они будут созданы автоматически. Например, в Ubuntu вы получаете пользователя с именем «ubuntu» с устаревшими разрешениями (sudo без пароля, заблокированный пользователь и т. д.).
Вы хотите, чтобы этот пользователь Ubuntu был рядом с другими учетными записями пользователей? Вы создаете это, запуская пользователей: с -default, другими словами:
Пароль root можно изменить с помощью следующего синтаксиса:
Также можно вводить пароли от других пользователей, например:
В зависимости от вашего варианта использования может быть полезно настроить начальный пароль root с помощью chgpasswd во время установки. Мы рекомендуем вам снова изменить пароль root после установки сервера.
Существует два способа изменения файлов с помощью облачного файла конфигурации:
- Вы можете полностью перезаписать файл с помощью write_files и, таким образом, изменить владельца или права.
- С помощью runcmd вы выполняете одну или несколько команд, например команду sed, чтобы настроить определенные правила.
Первый вариант полезен, если вы редактируете небольшой файл, а второй — для конкретных изменений. Чтобы ваш файл конфигурации облака оставался чистым, обычно нежелательно изменять большие файлы с помощью write_files.
Ниже приведен пример изменения конфигурации /etc/ssh/sshd_config. Для удобочитаемости этой статьи комментарии в файле опущены.
Write_files позволяет вам перезаписать или создать полный файл. Синтаксис, как показано в приведенном выше примере:
- После пути вы указываете, какой файл находится в какой папке.
- Разрешения не являются обязательными и могут использоваться для изменения разрешений chmod.
- Владелец не является обязательным и может использоваться для смены владельца файла.
- Труба | символ за содержимым: указывает, что следует список. В данном случае это список всех строк, которые нужно записать в файл.
Runcmd — это мощный инструмент для выполнения команд первой загрузки (т. е. они выполняются только при первом запуске VPS). В приведенном ниже примере показано, как редактировать содержимое файла с помощью команды sed (здесь порт SSH в конфигурации ssh), но вы можете использовать runcmd для любой команды.
Runcmd используется при первом обращении к runcmd:, а затем представляет команду с дефисом в новой строке.
Если вы хотите запустить несколько команд с помощью runcmd, поместите каждую команду в новую строку.
С помощью облачного файла конфигурации вы можете очень легко установить определенные пакеты во время установки. Для этого вы используете синтаксис:
Кроме того, вы можете заблокировать 37.97.254.100 в брандмауэре.
Выше вы видели множество параметров, которые можно использовать в файле конфигурации облака. Если вы соберете их все вместе, ваш файл будет выглядеть так:
Шаг 3
Сохраните файл конфигурации облака, например, под именем cloud-config.yaml. Затем вы можете использовать свой облачный файл конфигурации, например, с помощью нашего API или при заказе VPS.
Использование облачного файла конфигурации при заказе VPS
Шаг 1
При заказе VPS после выбора характеристик и операционной системы, если вы вошли в свою учетную запись TransIP, есть 2 варианта:
Если вы не вошли в систему, вы увидите опцию одноразового пароля:
В любом случае нажмите "Выбрать другой метод установки".
Шаг 2
Теперь вам будет предоставлен выбор метода установки, как показано на снимке экрана ниже. Выберите «Установить через данные пользователя cloud-config».
Шаг 3
Теперь вы увидите экран "Установить с помощью данных пользователя cloud-config". Скопируйте и вставьте содержимое файла конфигурации вашего облака, как показано на снимке экрана ниже.
Теперь применены данные конфигурации вашего облака. Вы получите подтверждение вашего заказа по электронной почте и, в зависимости от того, какой вариант инициализации облака вы выбрали (ssh или временный пароль), в письме с доставкой ваше имя пользователя и, если применимо, ваш временный пароль.
На этом мы подошли к концу этой статьи. Вы ищете еще больше возможностей, таких как добавление репозиториев? Затем ознакомьтесь с документацией по cloud-init.
Если у вас есть какие-либо вопросы относительно этой статьи, обращайтесь в нашу службу поддержки.Вы можете связаться с ними, нажав кнопку "Связаться с нами" внизу этой страницы.
Вы хотите обсудить эту статью с другими пользователями? Пожалуйста, оставьте сообщение в разделе "Комментарии".
Моя повседневная деятельность связана с созданием облачных образов Ubuntu. Полезный навык для новых сотрудников — знать, как запускать эти облачные образы локально. Хотя виртуальные машины Multipass и LXD упрощают запуск Ubuntu на виртуальной машине, иногда необходимо запустить собственный образ с определенными параметрами.
Облачные образы Ubuntu
Большинство пользователей, вероятно, захотят начать с ежедневного изображения своего любимого выпуска. Например, последний ежедневный образ для Ubuntu 18.04 LTS (Bionic) или Ubuntu 20.04 LTS (Focal).
Ежедневные и релизные
Изображения публикуются ежедневно при изменении любого пакета в изображениях. На практике это означает, что новое изображение может быть доступно не каждый день. Образ выпуска публикуется при обновлении одного из определенного набора пакетов, критически важных для образа, например ядра, grub или cloud-init. Кроме того, при появлении критического обновления для системы безопасности может быть опубликован образ выпуска.
Ежедневные изображения находятся в ежедневном каталоге или в каталоге с кодовым названием определенного выпуска. Изображения релиза находятся под релизом
Минимальные изображения
Все минимальные образы, включая ежедневные и выпускные, находятся в минимальном каталоге.
Изображение QEMU
На странице загрузки изображений пользователи найдут каталог со списком различных файлов. Эти файлы включают контрольные суммы, манифесты для образов и образы для различных архитектур.
Пользователи QEMU могут загрузить файл .img, представляющий собой образ QEMU QCOW2. Вот ярлыки для последних образов для Ubuntu 20.04 LTS (Focal):
Кроме того, существует файл .manifest, в котором перечислены пакеты и снимки, поставляемые с конкретным образом. Пользователи также могут использовать файлы SHA256SUMS и SHA256SUMS.gpg для проверки контрольных сумм всех файлов.
Теперь, когда изображение готово, пришло время его настроить.
Источник данных изображения
При запуске экземпляров в облачном развертывании cloud-init будет искать источник данных для получения метаданных экземпляра. Эти данные используются для определения пользователей, которых нужно создать, для установки имени хоста, конфигурации сети и многих других возможных параметров конфигурации. Облачные образы будут принимать два типа данных:
- метаданные: уникальные данные конфигурации, предоставляемые облачной платформой. Значения этих данных различаются в зависимости от облачного провайдера. Он может включать имя хоста, сетевую информацию, ключи SSH и т. д.
- данные пользователя: предоставляются непосредственно пользователем для настройки системы. Эти данные представляют собой простой сценарий оболочки для выполнения или включения данных облачной конфигурации, которые пользователь может указать в удобном для человека формате.
В случае запуска локального образа QEMU пользователю необходимо предоставить локальный источник данных для чтения из облачного образа. Из этого источника данных экземпляр может считывать как метаданные, так и/или пользовательские данные для настройки системы.
Локальный источник данных
Чтобы предоставить локальный источник данных, пользователи создают исходное изображение, содержащее метаданные, пользовательские данные и даже сетевую информацию. Команда cloud-localds из пакета cloud-image-utils используется для создания начального образа.
Сначала создайте файл метаданных с нужным идентификатором экземпляра и именем хоста:
Далее создайте файл пользовательских данных, чтобы предоставить экземпляру SSH-ключ. В приведенном ниже примере используется cloud-config cloud-init для передачи этой информации для автоматического добавления ключа пользователю по умолчанию. Есть два ключа конфигурации облака, которые могут импортировать ключ SSH:
- ssh_import_id : укажите список открытых ключей SSH для импорта из GitHub или Launchpad.
- ssh_authorized_keys : предоставить необработанный текст открытого ключа SSH для добавления непосредственно в файл авторизованных ключей.
Пользователи могут использовать оба варианта, но необходим только один:
Наконец, создайте начальное изображение, которое объединяет файлы метаданных и пользовательских данных:
Загрузка с SeaBIOS
Прошивка по умолчанию с QEMU загружается с SeaBIOS, реализацией BIOS с открытым исходным кодом.
Вот пример команды:
Вот построчная разбивка вышеуказанных параметров:
-machine accel=kvm,type=q35 включает ускорение виртуальной машины на основе ядра (KVM), что, помимо прочего, приводит к повышению производительности по сравнению с эмуляцией всего оборудования QEMU (т. е. виртуализацией tcg). Параметр type задает тип машины для использования набора микросхем Q35 с корневым комплексом PCIe с более современными возможностями по сравнению со старым набором микросхем i440FX, который имеет только хост-мост PCI.
-cpu хост передает все доступные функции хост-процессора гостю. Этот параметр можно дополнить параметром -smp, чтобы указать определенное количество процессоров, а также топологию с помощью количества сокетов, ядер или потоков.
-m 2G установить объем памяти для экземпляра.Значения, оканчивающиеся на G, означают гигабайты, а значения без суффикса или M — мегабайты.
-nographic отключает графический вывод и заставляет команду рассматривать команду QEMU как приложение CLI. Это хорошо, поскольку в большинстве случаев использования облачных образов не требуется графический вывод, и полезно видеть последовательную консоль во время загрузки. Введите x, чтобы выйти из процесса. Подробнее об этом читайте в разделе «Ключи Escape QEMU» ниже.
-device virtio-net-pci,netdev=net0 Создает сквозное сетевое устройство virtio
-netdev user,id=net0,hostfwd=tcp::2222-:22 указывает QEMU прослушивать порт 2222, и подключения к этому порту будут ретранслироваться на виртуальную машину через порт 22. Таким образом, пользователи могут подключиться к виртуальной машине по протоколу SSH. не зная IP-адреса системы через ssh -p 2222 localhost
-drive if=virtio,format=qcow2,file=ubuntu-20.04-server-cloudimg-amd64.img добавляет диск virtio с использованием скачанного ранее образа Ubuntu qcow2
-drive if=virtio,format=raw,file=seed.img добавляет еще один диск virtio для созданного начального образа, который будет действовать как локальный источник данных.
Войти по SSH
Установив вышеуказанные параметры, пользователи могут получить доступ к виртуальной машине напрямую через последовательную консоль или через SSH другого терминала к виртуальной машине. Опять же, приведенные выше команды настраивают перенаправление на локальном хосте с порта 2222 для перенаправления трафика на порт 22 виртуальной машины.
Если ключ SSH пользователя был успешно импортирован, пользователь может подключиться к виртуальной машине по протоколу SSH, используя порт 2222:
При частом использовании этого параметра полезно добавить параметр -o "StrictHostKeyChecking no" в команду SSH, чтобы не получать запрос об изменении ключей хоста SSH для каждого другого образа.
Ключи Escape и монитор QEMU
Поскольку в приведенной выше команде QEMU используется параметр -nographic, выходные данные последовательной консоли будут поступать на терминал, который использует пользователь. Для взаимодействия с базовым процессом QEMU используется комбинация клавиш для отправки команд QEMU.
Например, чтобы завершить процесс QEMU, пользователь может запустить x, а не выключать виртуальную машину через интерфейс командной строки.
Кроме того, пользователи могут получить доступ к монитору QEMU, запустив c, где они могут запустить дополнительные команды QEMU. После запуска подсказка изменится на (qemu), и пользователи смогут запускать такие команды, как sendkeys, для отправки комбинаций клавиш виртуальной машины, нажимать quit для выхода или набирать help для доступа к дополнительным параметрам.
Загрузка с uEFI
Если пользователь хочет загрузиться с uEFI вместо BIOS, требуется другая прошивка. Прошивка uEFI доступна через пакет ovmf. Подобно реализации SeaBIOS с открытым исходным кодом, пакет ovmf предоставляет встроенную реализацию uEFI с открытым исходным кодом под названием TianoCore.
Затем пользователь может указать QEMU на прошивку OVMF, добавив следующие параметры в команду запуска QEMU:
Значение pflash сообщает QEMU, что указанные файлы являются образами параллельной флэш-памяти (прошивка ПЗУ). Обратите внимание, что в приведенном выше примере указано только чтение, поэтому любые изменения, внесенные пользователем в настройки uEFI, будут потеряны. Если пользователю необходимо внести постоянные изменения, то файл необходимо куда-то скопировать, а параметр "только для чтения" сбросить.
Пользователь может подтвердить, что uEFI использовался, проверив наличие каталога /sys/firmware/efi:
Кроме того, команды dmesg и efibootmgr также будут иметь вывод, связанный с EFI:
Загрузка с uEFI + безопасная загрузка
Также можно загрузиться с безопасной загрузкой. Тот же пакет ovmf, который используется для загрузки uEFI, включает два дополнительных файла, которые включают поддержку безопасной загрузки и режима управления системой (SMM) через подписанные пакеты:
«4M» в именах файлов означает образы OVMF размером 4 МБ, поскольку существующие образы размером 2 МБ больше не имеют достаточного пространства переменных для текущей базы данных запрещенных подписей безопасной загрузки.
При запуске гость загружается в оболочке uEFI. Существует два варианта загрузки системы: первый — использовать оболочку для запуска бинарного файла bootx64.efi:
Второй вариант — ввести команду exit и использовать диспетчер загрузки для выбора жесткого диска, с которого будет выполняться загрузка.
Чтобы проверить успешную загрузку с помощью безопасной загрузки, используйте команду mokutil:
Другие полезные параметры командной строки QEMU
QEMU имеет обширный и очень хорошо документированный интерфейс командной строки. Если пользователю нужна дополнительная помощь или возможные варианты добавления справки в конец параметра CLI, следует напечатать подробную поддержку (например, qemu-system-x86_64 -cpu help ).
-снапшот записывается во временный файл, а не в сам образ диска. Это гарантирует, что базовый диск не будет изменен, и отлично подходит, если пользователь хочет только проверить файл в образе или протестировать загрузку, сохраняя при этом исходный образ.
-o резервный_файл= аналогичен моментальному снимку, использование резервного файла позволит пользователю сохранить исходное изображение в первозданном виде, но записать изменения во второй файл. Пример см. на вики-странице QEMU Snapshot.
-D logfile вывод журнала в logfile вместо stderr
-object rng-random,id=rng0,filename=/dev/urandom -device virtio-rng-pci,rng=rng0 Это пример добавления аппаратного генератора случайных чисел к виртуальной машине. Дополнительную информацию см. на вики-странице virtio RNG.
-nodefaults QEMU запускается с несколькими устройствами по умолчанию. Если есть необходимость удалить какое-либо устройство и запустить QEMU только с явно объявленными устройствами, используйте опцию nodefaults. Это удалит такие устройства, как последовательный порт, устройство мониторинга и другие. Приведенные выше примеры команд зависят от ряда устройств по умолчанию, таких как последовательная консоль. Однако образы загрузятся и будут доступны через SSH.
Запустить виртуальную машину
Опять же, если вам не нужно много настроек и настроек, попробуйте виртуальные машины Multipass и LXD. Оба они упрощают загрузку виртуальных машин Ubuntu, а Multipass доступен даже в Windows и macOS.
В противном случае загрузите облачный образ Ubuntu и попробуйте эти команды!
Читайте также: