!!! не забываем делать backup
qemu-img resize vmdisk.qcow2 +10G - добавим 10Гб диску vmdisk.img
Изменение диска online / blockresize
virsh blockresize
[--domain] <строка> имя домена, ID или UUID
[--path] <строка> Полный путь к блочному устройству
[--size] <число> Новый размер блочного устройства, кратный целому числу (по умолчанию в КиБ)
virsh domblklist name_VM - узнаем какие диски есть у ВМ
virsh blockresize name_VM /kvm/name_VM_disk.qcow2 100G - для ВМ (name_VM), изменим размер диска равный 100Гб
Необходимые действия для гостя, при изменении диска, MBR диск / один раздел / fdisk:
!!! Не забываем делать backup
!!! Внимание пример для одного диска с одним разделом
!!! fdisk -l - посмотреть доступные
fdsik /dev/sda - редактируем таблицу разделов
: p - показываем таблицу разделов
Устр-во Загрузочный Start Конец Секторы Size Id Тип
/dev/sda1 * 2048 14678015 14675968 7G 83 Linux
: d - удаляем таблицу разделов
: n - создаем таблицу разделов
Do you want to remove the signature? [Y]es/[N]o: N - не удаляем сигнатуры
: a - ставим ставим загрузочный бит
: w - применяем изменения
!!! после выхода из (fdisk) будет сказано что изменена таблица разделов и необходимо выполнить partprobe
(name_VM)# partprobe - выполняем просим систему перечитать таблицу разделов
(name_VM)# resize2fs /dev/sda1 - выполняем изменения FS
Необходимые действия для гостя, при изменении диска, MBR диск / несколько разделов / parted:
!!! Не забываем делать backup
!!! Внимание пример для одного диска и нескольких разделов
!!! fdisk -l - посмотреть доступные
Пример (parted)
(name_VM)# parted /dev/vda - открываем нужный диск
(parted) print free - покажем доступные разделы (диск /dev/vda)
Number Start End Size Type File system Flags
1 32.3kB 4295MB 4295MB primary ext4 boot
2 4295MB 8590MB 4295MB primary linux-swap(v1)
3 8590MB 107GB 98GB primary ext4
107GB 215GB 107GB Free Space
(parted) resizepart 3 - изменяем размер третьего раздела
End [107GB]? 215GB
(parted) quit - выходим из parted
(name_VM)#partprobe - выполняем просим систему перечитать таблицу разделов
(name_VM)#resize2fs /dev/vda3 - выполняем изменения FS
Необходимые действия для гостя, при изменении диска, GBT диск / несколько разделов / parted:
!!! GPT Рассматривается схема с одним разделом (/dev/vdb1) на весь диск
(name_VM)#partprobe
(name_VM)#gdisk /dev/vdb
переходим в расширенный режим x
смещаем запись в конец диска e
выходим из расширенного режима m
Command (? for help): d
Using 1
Command (? for help): n
Partition number (1-128, default 1): [Enter]
First sector (34-2147483614, default = 2048) or {+-}size{KMGTP}: [Enter]
Last sector (2048-2147483614, default = 2147483614) or {+-}size{KMGTP}: [Enter]
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): [Enter]
Changed type of partition to 'Linux filesystem'
выходим с сохранением w
(name_VM)#partprobe
(name_VM)#resize2fs /dev/vdb1
или
btrfs filesystem resize max /
https://www.youtube.com/watch?v=tLQ2PtSVr58 - достаточно толковое видео
https://b14esh.com/category/kvm - много всего
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/ - драйверы для виртуального оборудования
https://b14esh.com/devops/cockpit.html - веб интерфейс управления KVM
Установка
cat /proc/cpuinfo | grep -E '(vmx|svm)' -m 1 - проверить что процессор поддерживает Виртуализацию
apt install qemu-kvm libvirt-daemon-system ovmf virtinst - установка на debian
apt install qemu-kvm libvirt-bin ovmf virtinst - установка на ubuntu (до 20)
yum -y install kvm libvirt qemu-kvm virtinst - установка на CentOS
apt install virt-manager - установка virt-manager
qemu-kvm - гипервизор
libvirt-bin - по для управления гипервизором(virsh)
virt-manager - графическая утилита для управления гипервизором (не обязательная программа, для установки требуется x-windows)
ovmf - по для поддержки загрузки uefi для гостей
virtinst - программа для создания виртуальных машин в консоли
ip -a - посмотреть адаптеры
iptables -vnL - показать правила firewall
sudo iptables -nvL - показать правила firewall
virt-host-validate - проверка установленных компонентов
libvirtd - основной демон управления виртуализацией
systemctl status libvirtd - проверяем состояние демона
systemctl start libvirtd - запускаем демон
systemctl enable libvirtd - добавляем в автозагрузку
virsh
virsh - программа для управления KVM
help - покажет все доступные команды
!!! Использование virsh работает TAB
virsh command \ KVM управление VM
osinfo-query os - список поддерживаемых ос
virsh list --all - показать все доступные ВМ
virsh start VM_name - запустить ВМ
virsh reboot VM_name - перезагрузка VM
virsh shutdown VM_NAME - выключить ВМ (нажать кнопку выкл)
virsh destroy VM_name - выключить насильно ВМ (как вытащить вилку из розетки)
virsh undefine VM_name - удалить ВМ
virsh autostart VM_name - включить автозагрузку для ВМ
virsh autostart --disable VM_name - отключить автозагрузку ВМ
virsh edit VM_name - отредактировать настройки ВМ
net-
!!! Сеть
!!! В данном примере все действия производятся из оболочки virsh
!!! сеть должна отличаться от вашей сети, иначе она не сможет запустится.
!!! тоесть у вас сеть 192.168.0.0/24, тогда виртуальная будет 192.168.100.0/24
!!! по умолчанию 192.168.122.0/24
!!! При создании сети создаются также правила в firewall
net-list - покажет все активные сети
net-list --all - показать все сети
net-info default - посмотреть информацию по сети default
net-edit default - редактировать параметры сети default
net-start default - запуск сети default
net-autostart default - включить авто запуск сети
net-destroy - остановка сети ( в некоторых случаях удаляет сеть)
net-dumpxml default - вывести на экран настройки сети
virsh net-dumpxml default > /root/default.xml - выйдя из virsh, вот так можно выгрузить настройки сети default в файл default
namelan0 ... можно удалить всю строку вместе с uuid, будет регенерировано при создании сети
!!! Существует две команды для создания сети из xml файла.
!!! Это net-create и net-define.
!!! Имеются отличия созданных сетей
!!! При net-define сеть создается, ее надо запустить, при net-destroy она останавливается, для удаления надо использовать команду net-undefine
!!! При net-create сеть создается и сразу запускается, при net-destroy сразу удаляется
net-define --file file.xml - создать сеть из файла file.xml
net-start --network namelan0 - запуск сети namelan0
net-destroy namelan0 - остановить сеть namelan0
net-undefine --network namelan0 - удалить сеть полностью
net-create --file /home/b14esh/file.xml - создание сети
net-destroy namelan0 - удалить сеть namelan0
LVM / parted
!!! подготовим диск для LVM
parted -l - все диски и их разметку
parted /dev/vdb - запустили партед и указали диск с которым будем работать
(parted)mklabel msdos - задали таблицу разделов MBR, если требуется поддержка диска более 2ТБ то необходимо таблицу разделов указывать GPT команда (parted)mklabel gpt
(parted) unit MiB - выбрали единицу измерения мегабайты
(parted) mkpart - запросили создать раздел
Partition type? primary/extended? p - сказали что он первичный
File system type? [ext2]? ext4 - попросили создать файловую систему ext4
Start? 0 - указали начало раздела
End? -1 - указали конец
y - применили изменения
(parted) q - выход из программы разметки
!!! Если диск будет использоваться не для LVM то надо создать на нем ФС
mkfs.ext4 /dev/vdb2 - для создания ФС на диске /dev/vdb2
LVM / создание
fdisk -l - показать диски и разделы
parted -lm - показать диски и разделы
ls /dev/vd* - показать диски и разделы
pvcreate /dev/vdb1 - создаем структуру LVM, пометим диск
vgcreate vg0 /dev/vdb1 - создадим группу vg0 и добавим туда помеченный диск vdb1
vgdisplay - показать используемое пространство
!!! Все этого достаточно что бы дальше KVM мог использовать данный раздел.
сеть на openvswitch
!!! сносим сеть на brctl !!!
brctl show - проверяем что у нас там настроено
brctl delif br0 eno1 - удаляем интерфейс (eno1) из (br0)
brctl delbr br0 - удаляем бридж (br0)
brctl show - проверяем что у нас там настроено
!!! настраиваем ovs
apt install openvswitch-switch - устанавливаем ovs
ovs-vsctl show - смотрим что у нас с сетью
ovs-vsctl add-br br0 - создаем свитч с именем br0
ovs-vsctl add-port br0 eno1 - добавляем в свитч с именем br0 интерфейс eno0
ovs-vsctl show - проверяем настройки
!!! далее настройка KVM
virsh net-list --all - показать все сети
virsh net-dumpxml default > /root/1.xml - этой командой мы можем сохранить настройки сети default
пример простой сети (ovs) для добавления в KVM
-------------
br0
-------------
virsh net-define --file /root/1.xml - этой командой мы можем создать сеть из файла (/root/1.xml)
virsh net-start --network br0 - запуск сети
virsh net-autostart --network br0 - включение автозапуска для сети
пример сложной сети с vlan (ovs) для добавления в KVM
-------------------
ovs-network
-------------------
пример настройки интерфейса ВМ
virsh list --all - показать доступные ВМ
virsh edit VM_name - редактируем файл настроек VM_name
----------------
----------------
LVM / pool — для каталога
!!! Хранилище образов, дисков
!!! RAW - сырой диск
!!! qcow2 - динамически расширяемый, предпочтительный формат, так как гостя можно будет бэкапить средствами kvm
!!! хз как по скорости по мне так они одинаковые
pool-list --all - показать все хранилища
!!! Для команд pool-create и pool-define требуется конфигурационные файлы xml
!!! При pool-define хранилище создается, его надо запустить, при pool-destroy останавливается, для удаления надо использовать команду pool-undefine
!!! При pool-create создается и сразу запускается, при pool-destroy сразу удаляется, подходит для временного использования
!!! Так как у нас нет конфиг файла хранилища xml можно воспользоваться командами pool-create-as и pool-define-as
pool-create-as --name local-tmp --type dir --target /tmp/ - создать хранилище с именем local-temp в каталоге /tmp и оно сразу будет запущенно
pool-destroy local-tmp - удалить хранилище
pool-define-as --name local-tmp --type dir --target /tmp/ - создать хранилище с именем local-temp в каталоге /tmp
pool-autostart local-tmp - включить авто запуск хранилища local-tmp
pool-start local-tmp - запустить хранилище local-tmp
vol-create-as --pool local-tmp --capacity 1G --name test.qcow2 --format qcow2 - вот так можно создать диск test.qcow2 на локальном хранилище local-tmp
pool-destroy local-tmp - останавливаем хранилище local-tmp
pool-undefine --pool local-tmp - удаляем хранилище local-tmp
pool-define-as --name vg0 --type logical --source-name vg0 - добавить хранилище на LVM (почему --type logical ХЗ)
pool-autostart --pool vg0 - добавили в авто запуск хранилище vg0
pool-start --pool vg0 - запустили хранилище
vol-create-as --pool vg0 --name test --capacity 1G - создать диск с именем test размером 1Gb
vol-list --pool vg0 - показать диски на хранилище vg0
vol-delete test --pool vg0 - удалить диск test из пула vg0
pool-undefine vg0 - удалить хранилище vg0
pool-define-as --name zp1 --type zfs --target zp1 - подключить хранилище ZFS с именем zp1 и назвать его zp1
pool-autostart --pool zp1- добавили в авто запуск хранилище vg0
pool-start --pool zp1 - запустили хранилище
vol-create-as --pool zp1 --name test1 --capacity 10G - создать диск с именем test1 размером 10Gb на хранилище zp1
TRIM в VM
!!! Уменьшение диска qcow2 средствами ВМ
!!! Освобождается пустое место
!!! Выделенный размер остается прежним
Настройка TRIM
1. Выставить диск как SCSI
2. Выставить контроллер как VirtIO SCSI
3. Добавить discard='unmap'
4. Настроить TRIM в VM (напр: fstrim -a -v)
5. Запуск TRIM гостя из гипервизора
virsh domfstrim VM-NAME
virt-install — help
Общие параметры:
-n NAME, --name NAME Имя экземпляра гостя
--memory MEMORY Configure guest memory allocation. Ex:
--memory 1024 (in MiB)
--memory 512,maxmemory=1024
--memory 512,maxmemory=1024,hotplugmemorymax=2048,hotplugmemoryslots=2
--vcpus VCPUS Число виртуальных процессоров, например:
--vcpus 5
--vcpus 5,maxcpus=10,cpuset=1-4,6,8
--vcpus sockets=2,cores=4,threads=2,
--cpu CPU CPU model and features. Ex:
--cpu coreduo,+x2apic
--cpu host-passthrough
--cpu host
--metadata METADATA Конфигурация метаданных гостя, например:
--metadata name=foo,title="Мой прикольный заголовок",uuid=...
--metadata description="Мое милое длинное описание"
Параметры метода установки:
--cdrom CDROM Установочный CD-ROM
-l LOCATION, --location LOCATION
Источник установки (например,
nfs:сервер:/путь,
http://сервер/путь,
ftp://сервер/путь)
--pxe Загрузить из сети с помощью PXE
--import Создать гостевую систему на основе существующего образа диска
--livecd Рассматривать носитель как LiveCD
-x EXTRA_ARGS, --extra-args EXTRA_ARGS Дополнительные параметры для передачи ядру, загруженному из --location
--initrd-inject INITRD_INJECT Добавить файл в корневой каталог initrd из --location
--os-variant DISTRO_VARIANT Вариант устанавливаемой ОС (например, «fedora18», «rhel6», «winxp»)
--boot BOOT Параметры загрузки гостя, например:
--boot hd,cdrom,menu=on
--boot init=/sbin/init (для контейнеров)
--boot uefi (для windows)
--idmap IDMAP Включить пространство имен пользователей для контейнеров LXC, например:
--idmap uid_start=0,uid_target=1000,uid_count=10
Параметры устройства:
--disk DISK Настройка пространства хранения данных, например:
--disk size=10 (новый образ на 10 ГиБ в выбранном по умолчанию месте)
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
Конфигурация гостевого сетевого интерфейса, например:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--network none
--network help
--graphics GRAPHICS Параметры дисплея гостевой системы, например:
--graphics vnc
--graphics SPICE,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--controller CONTROLLER
Настройка контроллера, например:
--controller type=usb,model=ich9-ehci1
--input INPUT Конфигурация устройства ввода, например:
--input tablet
--input keyboard,bus=usb
--serial SERIAL Настройте последовательное устройство гостевой системы
--parallel PARALLEL Настройте параллельное устройство гостевой системы
--channel CHANNEL Настройте канал обмена данными для гостевой системы
--console CONSOLE Настройте соединение между гостем и хостом в текстовой консоли
--hostdev HOSTDEV Конфигурация физических USB/PCI и других устройств хоста для совместного использования гостевой машиной.
--filesystem FILESYSTEM Передача каталога хоста гостевой системе, например:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
--sound [SOUND] Настройте эмуляцию звукового устройства для гостевой системы
--watchdog WATCHDOG Настройте устройство слежения для гостевой системы
--video VIDEO Настройте видеоустройства гостевой системы например qlx
--smartcard SMARTCARD Настройте устройство смарт-карт, например: --smartcard mode=passthrough
--redirdev REDIRDEV Настройте устройство перенаправления, например: --redirdev usb,type=tcp,server=192.168.1.1:4000
--memballoon MEMBALLOON Настройте устройство перераспределения памяти, например: --memballoon model=virtio
--tpm TPM Конфигурация гостевого устройства TPM, например: --tpm /dev/tpm
--rng RNG Configure a guest RNG device. Ex: --rng /dev/urandom
--panic PANIC Конфигурация гостевого устройства паники, например: --panic default
--memdev MEMDEV Configure a guest memory device. Ex: --memdev dimm,target_size=1024
Параметры платформы виртуализации:
-v, --hvm Этот гость должен быть полностью виртуализированным.
-p, --paravirt Этот гость должен быть паравиртуализированным.
--container Этот гость должен быть заключен в контейнер
--virt-type HV_TYPE Имя гипервизора (kvm, qemu, xen и т.п.)
--arch ARCH Имитируемая архитектура процессора
--machine MACHINE Имитируемый тип компьютера
Прочие:
--autostart Запускать домен автоматически при запуске хоста
--transient Create a transient domain.
--wait WAIT Время ожидания завершения установки (в минутах)
--noautoconsole Не подключаться к гостевой консоли автоматически
--noreboot Не выполнять загрузку гостя после установки.
--print-xml [XMLONLY] Вывести XML-описание домена, не создавая гостевую систему.
--dry-run Выполнить установку, но не создавать устройства и гостевые системы.
--check CHECK Включать и выключать без выполнения проверки, например:
--check path_in_use=off
--check all=off
-q, --quiet Подавлять вывод (за исключением ошибок)
-d, --debug Вывести отладочные данные
virt-install примеры
!!! Все легко и просто можно выполнить в virt-manager, его не обязательно ставить на гипервизоре.
!!! порт для spice и VNC берется начиная с 5901 (то есть следующей машине будет присвоен 5902 и т.д.)
!!! По умолчанию контроллеры для виртуальных устройств будут virtio
virt-install --help - помощь
man virt-install - ищема в man жмем / и вводим EXAMPLES
virt-install --hvm --name demo --memory 500 --disk none --livecd --graphics vnc --cdrom /root/fedora7live.iso
virt-install --connect qemu:///system --virt-type kvm --name demo --memory 500 --disk size=10 --cdrom /dev/cdrom --os-variant fedora13
virt-install --connect lxc:/// --name httpd_guest --memory 512 --vcpus 2 --init /usr/bin/httpd
virt-install --connect lxc:/// --name container --memory 128 --filesystem /home/LXC,/ --filesystem /home/test,/mnt --init /bin/sh
virt-install --name test1 --vcpus 1 --memory 512 --network=default,model=e1000 --graphics spice --video qxl --disk vol=zp3/test1-disk1,cache=none,format=raw --boot hd,cdrom --cdrom=/tmp/iso/debian110.iso --sound ac97 --virt-type kvm --hvm
virt-install --name debian8 --ram 1024 --disk path=/PVE/debian8.qcow2,size=8 --vcpus 1 --os-type linux -os-variant generic --network bridge=virbr0 --graphics none --console pty,target_type=serial --location 'http://ftp.nl.debian.org/debian/dists/jessie/main/installer-amd64/' --extra-args 'console=ttyS0,115200n8 serial
virt-install --virt-type=kvm --name centos7 --ram 2048 --vcpus=2 --os-variant=rhel7 --hvm --cdrom=/tmp/CentOS-7-x86_64-DVD-1511.iso --network=bridge=br0,model=virtio --graphics vnc --disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2
virt-install --name test -r 1024 --disk path=/tmp/disk1.qcow2,size=8 --vcpus 2 --location=http://ftp.ru.debian.org/debian/dists/stable/main/installer-amd64/ --initrd-inject=/root/preseed.cfg --extra-args="auto keyboard-configuration/xkb-keymap=en" --vnc --noautoconsole --os-type Debian10 --accelerate --network bridge=br0,model=virtio --hvm
Драйверы искать тут:
https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/
https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers
https://www.linux-kvm.org/page/Virtio
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso - образ с последними драйверами virtio
Агент QEMU установка (Tools):
-------------------------------------------
Установка на госте:
# в Debian - apt-get install qemu-guest-agent
# в CentOS - yum install qemu-guest-agent
# В Windows - с диска virtio-win установить пакет qemu-ga из папки guest-agent
-------------------------------------------
Установка на хосте для гостя:
-------------------------------------------
Установка drivers windows:
0) Подключаем диск с драйверами
1) В диспетчере устройств -> устройство -> обновить драйвер -> папка с драйверами
Установка Balloon
0) Копируем balloon из virtio.iso в "c:/Program files/Balloon"
1) Запускаем CMD от Администратора
2) Создаем каталог Balloon
cd "c:\Program Files\"
mkdir Balloon
3) Переходим в каталог c:\Program Files\Balloon
cd "c:\Program Files\Balloon"
4) Ставим BLNSVR.exe
BLNSVR.exe -i
0. Команда "virsh list не показывает ВМ"
Пользователь должен быть в группе kvm и libvirtd
Проверяем:
id $USER
id user_name
Добавляем с помощью usermod:
usermod -aG kvm user_name
usermod -aG libvirtd user_name
1. Команда "virsh list не показывает ВМ"
Проверьте вывод virsh uri.
Если он возвращает qemu:///session , но вы используете соединение qemu:///system в Virtu-Manager, вы нашли причину.
Можно добавить пользователю в bahsrc:
export LIBVIRT_DEFAULT_URI="qemu:///system"
https://cloud.google.com/
Billing Accaunt - привязка вашей кредитной карты (Кто платит)
Project - линкуется к Billing Accaunt (За что платим)
1. Google cloud console \ создание \ gcloud
#!!! для проектов
#!!! подымается виртульная машина linux дистрибутив debian
#!!! доступно 5Gb диского пространства
#!!! эта виртульная машина бесплатна
#!!! имеет доступ к интернету
#!!! можно устанавливать по
#!!! sudo apt install tree - например можно поставить tree
gcloud config set project [PROJECT_ID] - смена проекта
gcloud projects list - посмотреть все проекты
gcloud auth list - посмотреть аккаунты которые могут управлять GCP
Computer Engine - в этом разделе происходит создание виртуалок ...
2. Установка и настройка Cloud SDK/GCP CLI на Windows
# Зачем это надо?
# Если вам нужно управлять GCP с вашего ПК с windows консоле powershell сервисами GCP
# Ищем в поиске google =>>>>>> gcp cloud install
https://cloud.google.com/sdk/docs/quickstart-windows - инструкция
https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe - качать нужно это
gcloud --version - открываем powershell и проверяем работоспасобность GCP
gcloud init - выполняем подключение GCP, откроется браузер и нужно будет ввести учетные данные google, или если откроется chrome и вы уже авторезированны в google будет запрошенно разрешение.
#!!! Внимание команда "gcloud init" выполняется один раз, далее просто открыаем powershell и пользуемся командами gcloud.
gcloud auth list - посмотреть аккаунты которые могут управлять GCP
gcloud projects list - посмотреть доступные проекты
3. Установка и настройка Cloud SDK/GCP CLI на Linux
# Зачем это надо?
# Если вам нужно управлять GCP с вашего ПК с windows консоле powershell сервисами GCP
# Ищем в поиске google =>>>>>> gcp cloud install
https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu - инструкция
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
sudo apt-get update
sudo apt-get install google-cloud-sdk
gcloud --version - открываем powershell и проверяем работоспасобность GCP
gcloud init - выполняем подключение GCP, откроется браузер и нужно будет ввести учетные данные google, или если откроется chrome и вы уже авторезированны в google будет запрошенно разрешение.
#!!! внимание если браузер не открылся, в консоле будет написан линк, его можно скопировать и открыть в браузере вручную
#!!! Внимание команда "gcloud init" выполняется один раз, далее просто открыаем powershell и пользуемся командами gcloud.
gcloud auth list - посмотреть аккаунты которые могут управлять GCP
gcloud projects list - посмотреть доступные проекты
4. IAM \ Права доступа \ Users \ Groups \ Permissions \ Roles
AD = Active Directory
GCP Users - это учетная запись авторизированная google, например GMAIL
Создание Users происходит в Google Admin G-Suite или интегрированной системе (например Active Directory)
Удаление Users происходит в Google Admin G-Suite или интегрированной системе (например Active Directory)
GCP Groups
Создание Groups происходит в Google Admin G-Suite или интегрированной системе (например Active Directory)
Удаление Groups происходит в Google Admin G-Suite или интегрированной системе (например Active Directory)
Удаление и добавление пользователя в группы происходит в Google Admin G-Suite или интегрированной системе (например Active Directory)
GCP - IAM Permissions
Permission - это разрешение выполнять одно определенное действие
Permission - это разрешение выполнять одно определенное действие
Permission - это разрешение выполнять одно определенное действие
Формат:
Service.Resource.Verb
Примеры:
compute.instances.create - сервис compute, ресурс instances, действие create, разрешение создовать серверы в проекте
compute.instances.delete - сервис compute, ресурс instances, действие delete, разрешение удалять серверы в проекте
compute.instances.start - сервис compute, ресурс instances, действие start, разрешить включать серверы в проекте
compute.instances.stop - сервис compute, ресурс instances, действие stop, разрешить выключать серверы в проекте
storage.buckets.create - сервис storage, ресурс buckets, действие create, разрегить создание бакетов (как бы папка, хранилище...)
storage.objects.create - сервис storage, ресурс objects, действие create, разрешить создание обьектов в бакетах
storage.backets.list - сервис storage, ресурс backets, действие list, разрешить показ сущетвуюшие бакеты
storage.objects.list - сервис storage, ресурс objects, действие list, разрешить просмотр содержимое в бакетах
и т.д. их примерно ~1000 штук
GCP - IAM Roles
Role - это колекция или набор Permissions
Primitive Roles - Сделаны Google, назначаются на уровне каждого Project, четыре штуки/ Browser, Editor, Owner, Viewer
!!! Primitive Roles дают очень широкие прова. На практике страраются ими не пользоватся.
Browser (roles/browser) - важная роль, назначается проктически всем
Viewer (roles/viewer) - readonly на все в проекте !!! Эта например роль подайтет для аудитора
Editor (roles/editor) - измененеие всего кроме biling
Owner (roles/owner) - все вместе взятое, browser+viewer+editor
Predefined Roles - Сделаны Google, состоит из коллекции определенных Permissions
Compute Instance Admin (roles/compute.instanceAdmin) - роль админства серверов в инстансе
Storage Admin (roles/storage.admin)
Storage Object Admin (roles/storage.objectAdmin)
Storage Object Viewer (roles/objectViewer)
Cloud SQL Admin (roles/cloudsql.Admin)
Cloud SQL Viewer (roles/Cloudsql.viewer)
Custom Roles - ваши самодельные роли
GCP - User/Group Permissions, Custom Role
Назначение прав доступа для User/Groups происходит в Google Cloud Platform IAM & admin
Создание Custom IAM Role происходит в Goole Cloud Platform IAM & admin
!!! Google рекомендует использовать предустановленные роли.
!!! С кастомными ролями мргут быть проблемы.
!!! Так как Google постоянно добовляет новые permissions.
!!! Кастомные роли сложна редактировать для пользователя. Всегда может чегото не хватать.
GCP - Organization
Высший компонент Иерархии GCP
Доступ на этом уровне в IAM распространяется на всё ниже описанное (Уровень Бога)
Может состоять из Project или Folder
GCP - Folder
Доступ на этом уровне в IMA распространяется на все Folders и Projects внутри
GCP - Project
Доступ на этом уровне в IMA распространяется только на этот Project
Может состоять из Resources
Все ресурсы создаются в проектах.
apt install debootstrap bridge-utils - установка необходимых зависимостей
_________________________________________________________________________
debootstrap --arch=amd64 jessie /var/lib/machines/container1/ - создадим файловую систему для будущего контейнера
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container - запуск контейнера (появится приглашение login)
Ctrl+]]] - нажатие этих клавиш выход из контейнера
_________________________________________________________________________
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container -b - при запуске экземпляра операционной системы в контейнере нужно выполнить init с запуском всех демонов
_________________________________________________________________________
brctl addbr cont-bridge - создание моста для контейнера
ip a a [IP-адрес] dev cont-bridge - назначение IP адреса для контейнера
_________________________________________________________________________
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container --network-bridge=cont-bridge -b - добавление сетевой карты для контейнера (мост)
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container -b --network-ipvlan=[сетевой интерфейс] - добавление сетевой карты для контейнера (сетевой интерфейс)
_________________________________________________________________________
Команды управления machinectl:
machinectl list - вывести список всех имеющихся в системе контейнеров
machinectl status test_container - просмотреть информацию о статусе контейнера
machinectl login test_container - войти в контейнер ( Ctrl+]]] - нажатие этих лавиш выход из контейнера)
machinectl reboot test_container - перезагрузить контейнер
machinectl poweroff test_container - остановить контейнер