Правка Cloud Images с помощью virt-customize

Не так давно мне понадобилось запустить образ CentOS, «заточенный» под облака, так называемый Cloud Image, далеко не в облаке. Особенность этих образов в том, что изначально там не заданы пароли пользователей, а аутентификация производится с помощью ssh ключей, передаваемых в систему на этапе запуска.

Попасть в такую систему не так сложно, когда у развернутой из образа машины есть выход в сеть, но становится реальной задачей, когда доступа нет.

Для правки «облачного образа» и задания паролей пользователям можно использовать утилиту virt-customize и под катом коротко про нее.

Далее все операции проводятся под управлением CentOS7.

Для начала нам необходимо установить libvirt на рабочую машину, а также пакет libguestfs-tools.

Установим  и запустим libvirt:

# yum install libvirt
# systemctl enable --now libvirtd

И пакет libguestfs-tools:

# yum -y install libguestfs-tools

Теперь загрузим образ ОС, если этого не было сделано ранее. В моем случае это CentOS GenericCloud:

# wget https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2009.qcow2 -P /tmp

Внесем правки в образ, задав пароль пользователю root и удалив cloud-init с помощью virt-customize:

# virt-customize -a /tmp/CentOS-7-x86_64-GenericCloud-2009.qcow2 \
--root-password password:password \
--uninstall cloud-init \
--run-command "echo 'This is MY image' > /custom_image.txt" 
[   0.0] Examining the guest ...
[  33.5] Setting a random seed
[  33.6] Uninstalling packages: cloud-init
[  39.0] Running: echo 'This is MY image' > /custom_image.txt
[  39.8] Setting passwords
[  52.2] Finishing off

Этой командой мы:

  1. Задали пароль пользователя root;
  2. Удалили пакет cloud-init;
  3. Создали в корне текстовый файл с некоторым содержимым.

На этом, собственно, все. Загружаем систему из образа и входим в систему пользователем root и заданным паролем:

Loading

Leave a Reply

Your email address will not be published. Required fields are marked *