Рубрики
KVM Виртуализация \ контейнеры \ облака

KVM изменить размер диска / blockresize / domblklist / guests linux / mbr /gpt

Внимание !!!

Всегда делаем backup!!!

Изменение диска offline / qemu-img

!!! не забываем делать 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 /

Смонтировать образ диска qcow2 в гипервизоре:

modprobe nbd max_part=8
qemu-nbd --connect=/dev/nbd0 .qcow2
fdisk /dev/nbd0 -l
mount -o ro /dev/nbd0p1 /mnt/ext0
umount /mnt/ext0
qemu-nbd --disconnect /dev/nbd0
rmmod nbd
Рубрики
KVM Виртуализация \ контейнеры \ облака Конспект

Конспект: KVM / libvirt / apt / yum / systemctl / ip / virt / libvirt / virsh / lvm

ссылки

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

KVM swap in file / Файл подкачки

fallocate -l 1G /.swap
chmod 600 /.swap
mkswap /.swap
echo '/.swap none swap defaults 0 0' >> /etc/fstab
swapon /.swap


Команда «virsh list не показывает ВМ»

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"

Рубрики
gcp Виртуализация \ контейнеры \ облака Конспект

Конспект: GCP / Google Cloud Platform

0. Введение

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.
!!! Кастомные роли сложна редактировать для пользователя. Всегда может чегото не хватать.

5. Иерархия GCP: Organization, Folder, Project, Resource


GCP - Organization
Высший компонент Иерархии GCP
Доступ на этом уровне в IAM распространяется на всё ниже описанное (Уровень Бога)
Может состоять из Project или Folder

GCP - Folder
Доступ на этом уровне в IMA распространяется на все Folders и Projects внутри

GCP - Project
Доступ на этом уровне в IMA распространяется только на этот Project
Может состоять из Resources

Все ресурсы создаются в проектах.
























Рубрики
systemd-nspawn Виртуализация \ контейнеры \ облака

Systemd и контейнеры

Источник:

https://blog.selectel.ru/systemd-i-kontejnery-znakomstvo-s-systemd-nspawn/

Команды создания:

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 - остановить контейнер

автозагрузка контейнера 0:

nano /etc/systemd/system/file_name 
_________________________________________________________________________
[Unit]
Description=Test Container

[Service]
LimitNOFILE=100000
ExecStart=/usr/bin/systemd-nspawn --machine=test_container --directory=/var/lib/machines/container1/ -b --network-ipvlan=[сетевой интерфейс] 
Restart=always

[Install]
Also=dbus.service
_________________________________________________________________________
systecmctl start test_container - запуск контейнера
systecmctl enable test_container - включение автозагрузки контейнера

автозагрузка контейнера 1:

Воспользоватся заготовка конфигурационного файла для автоматического запуска контейнеров из каталога /var/lib/machines:
 # sudo systemctl enable machine.target
 # mv ~/test_container /var/lib/machines/test_container
 # sudo systemctl enable systemd-nspawn@test_container.service

Логи контейнера:

systemd-nspawn -D /var/lib/machines/container1/ --machine test_container -b --link-journal=host - включение логов
journalctl -u <имя контейнера>.service - просмотр логов на хосте
journalctl -M test_container - просмотр логов на хосте

Управление ресурсами хоста для контейнера:

systemctl set-property <имя контейнера> CPUShares=200 CPUQuota=30% MemoryLimit=500M