��������
���� �� ��������������� ������ ������ �������, �� ��������� ���������
������������ �����: "�������� ������ - � ����� �����".
����� �� ���������� - �������� ��������, �� �� �������� ��� ����� ������� ��
������ ���������: ������ �����������, ���������� ������ ���������, �����������
����� ��������� �� ��������� � ������ ������������, ���-�� ������������� ����,
� �������� ������ ����� ��, ��� ��� "����������" ���� ����� ���������� ������
����� ���� ������ ����������� ��� �� ������ �����������.
������� �������� �� � ���, ��� �������� ��������� ������. �������� � ���, ���
������ "���������� = ����� ����������� ���������" ����� ���������� �
������������ ��������������: ����������������, ������� ��������������� �
������������ ޣ��� �������� �� ������: ����� ������ ������ ������� ������ ��������.
OSTree ���������� ������ �������: ������� ������������ ��� ������ (������) �
������������� �������. �� "��� ��� 200 �������, �����", � "��� ��� ���������
��������� ������� �������, ������� ����� ����������, ��������� � ���
������������� ��������".
��� ����� ������ - ��������: ��� �������� ���������� ��������, �� � ����
���������, ������� ������� �����, ����� ������, ����� �� ��� ��� ���������� �
�������. �������� �� ������� ����.�� ����� �� 2-3 �����.
��� ����� OSTree � � ޣ� "�����������"
OSTree - ��� �������� �������� � �������� "�������" �������� ������� (������,
������� ����� �������) � ���� ��������. ������ - ��� ��������������� ���������
������ ������, ������� ����� �������� �� ����������� � ���������� �� ����.
� OSTree ���� ��������� ������� ���������, � �� ������� ������� ���� ���:
������ - ��� ������ �������, Ref - ��� "�����/�����", ������� ��������� ��
������. ��������, ref ����� ���������� "����.�� 5.2 minimal ��� x86_64". Remote
- ��� ��������, ������ ���� �������� refs � ������� (������/�����������,
�������������� �� ����). ������������� ������ �������� �� � "������ ��������",
� � ref. Ref - ��� ������������ ��������: ���������� ������������� ������ ��������.
���� ����������� ����������� � �������� "deploy" � "rollback".
Deploy - ��� ���ף�������� ���������� ������� � sysroot ���, ����� �������
����� ����������� � ���� ������. ��� deploy ����� ������ �������������� ���
���������, �� �������� ������� ������� ������ "� ��������".
Rollback - ��� ����� �� ���������� deploy. �����, ��� ����� ����� - ��
"���������� 17 ������� � ��������", � ������������� �� ����� ���ף������ ������
�������. ������� rollback ����� ���� ������� � �������������.
������ � �������� ����� "��� ������ �����": ������� ������� � �����
��������������. ��� ���������� � �������� �����������: ��� ���������
����������� ��� ����������� ���� � ����-��������� "�������� ������� / �������� ������".
� OSTree-������ ���������� sysroot - �����, ��� �����:
* ������ OSTree (�����������, ����������),
* ���ף������ ������,
* ��������, ����������� ��� ��������.
�� �������� �������������� ���������� �������� "��� ������ ������", ����� ���-�� ����� �� ���:
* � sysroot ��ף� ��������� OSTree;
* � /boot/loader ������ ��������� ������ �������� (entries), ������� ������������� �������.
��� �� ����������� �� ������� ���������� - ��� ���������, ����� �� ������ �������� "� �������".
OSTree �������� �� "��������������� � �������� ���������".
�� ������ ������� ��� ��������� (�������)?
���� ������� ��� � ��� RPM, �� ���� �������� ��������� "rpm-ostree". �� ��ң�
���������� ������� ������� (treefile, ������ JSON), ����� ������ �� ���������
������������, �������� �������� ������ � �������� ��������� � OSTree-�����������.
Treefile - ��� ���� � ����������: �� �� ���������� ������� "��� ���������", ��
���������� ������ �� �������� "��� ������ ����".
��� OSTree ���������� �� "������� ����������"
������������ ������: ����� �������, ����� ������������, ����� ��������� ����������.
������� �������� ������ - ��� �������� ��� ���������� ��������. ���� ����
������� ����, ���������� �� ���������:
* ������ ���������� ������������ � ����������� �� �������,
* ������ ���������� � ������ ������������,
* ������ ��������� �� ��������� � ������������,
* � ����� ���������� - ������ ���������� �� �����, ��� "��������� ��
����������" ��� ������ �����������.
��-�� ����� "����������" ��������� ���� ��������� ����������� ���������.
� OSTree-������ �� ��������: "���� ������ ���� �� ref X".
Ref X ��������� �� ���������� ������. ������ - ��� ���������� ���������.
��� ����, ������� ����� ���� � ��� �� ref/������, �������� ���������� ����.
��� �� ��������, ��� � ��� ����� ���������� ������ � ������� ����������. ��
��������, ��� "������" �� � ��������� ���������� ������������� �������.
�������� ������ ������� "��������� �������" ��� ��� ���������� ��������� ����
����������� ����������� ������� ���������.
����� ������ ��������� ��������, � ������������ ���������� �� ������� (������
�� ������������/������������ ������).
� �������: ������ ����������� ��� ������ ����� �� ������� ������. ���� � ���
���������� ������� - �� ���������� ������ (������) �� ����, ��� �� ��ۣ� � production.
OSTree - ��� �� "�������� � �����". ��� ������ �����:
* ����: ������������ � �������������.
* �����: �� �� ��������� "� ����� �� ���� ������� ������ ����������� �ݣ 15
�������" ��� �������� �������.
���� ��� ����� ���, ��� ������ ������ - ��������, OSTree ����� ������.
���� ��� ����� ���, ��� ������� - ����� � �������������� �����, OSTree ������� �������.
���� OSTree ��������, � ���� - ���
��������:
1. ����� ���������� ��������/��
����� �� ������, ����� "���� ����� ����" ������� ���� �����������, � �� "�������� ��������".
2. Edge � ���̣���� ��������
��� ����� ������ ���� ������� � �� ��������� "������� ������� �� ���������".
3. ������������������ ������� � �����
��� ����� ����� ��������, ��� ���������� ���� �������� �� ���������� ������
�������, � �������������� ��������.
4. ���������������� ����
NAT, VPN, IDS/�������, �����������, ������� ������� ������������� - ��� �����
���������� ���� � ������ ��������� �� ��������.
�� �������� ��� ������� ������������:
1. ���������� ���������� ������ ����������� ������� ������� �� ������ ����
���� �� ��������� ������� ������ "����" ������ (�� �������, � ������ �������),
�� ������ ������� � �������.
2. �������� "��������� ������������" ��� ������� ������/�������
OSTree ������������, ����� ���� ������ (������) � ����� (ref). ��� ����������
�������� �� ������� �����.
3. ��� ���������� ����� refs � �������� �������
����� ����������, ��� ����� stable/testing, ��� ��������� refs, ��� ���������, ��� �����������.
4. ���������� BIOS/UEFI � ������ ����������� ������������ ��� ��������
OSTree �� �������� ���������� ��������: root-����������, fstab, ����� BIOS/UEFI
- �ӣ ��� ����� ���������. ���� �� ������ "���� ����� �� ��� ������", ���ģ���
������ ������� ������ � �������.
��������� ���������� � OSTree: ����� ������ �����?
� ����.�� ������������ ������� ������ ������� �� ��� ����������� ����:
1. ������ OSTree - ��� ������, ���:
* �� RPM-������������ �������� ������ �� �� treefile (JSON),
* ��������� �������� � OSTree-�����������,
* ��������� summary,
* ��������� ������� OSTree-����������� �� HTTP(S) ��� ��������.
2. ������ - ��� ���� (��� ������� ������ ������), �������:
* ��������� remote �� ���� ������,
* ������ pull ������� ref,
* ������ deploy,
* ������ ����������� � ��������� deploy.
��� ����.�� � ��� ��� ���� ��� "����� �������������", ������� ������� ������� �� ���� �����:
* mkostreerepo - ���������/��������� OSTree-����������� �� ������� (rpm-ostree
compose tree + summary).
* mk-ostree-host.sh - ������� �������� ����� � ��������� deploy ������� ref (��� ����� � 3 �����).
��� ����� ������ - ��� ������: ��� ������� �����������, ��� ���������, ��� ��
����������, � ��� ������ ����������� ��������.
��������� �����: �������� OSTree-����������� � ����.��
���������� � �����������
������� �����:
* rpm-ostree � ostree (���� rpm-ostree �����������, mkostreerepo ��������
��������� ��� ����� tdnf);
* ������ � RPM-������������ (������ rpm-ostree ����� �������� ������);
* ����� �� �����: ����������� ���ԣ�, ���� ���� ��� compose.
mkostreerepo ���������� ������� ������� ���:
* REPOPATH/rep� - ������ OSTree (��� ��, ��� ���������);
* REPOPATH/cache - ��� ������ (��� ����������, �������� �� �����).
��� �������� ������������� mkostreerepo:
1. ������� ����� "� ����" (��� ������ JSON)
���� �� �� ������� JSON, ������ �������� ������� REPOPATH/niceos-base.json.
���� ����� ��� - �� ����������� ����������� treefile (niceos-base.json) � ���������.
������:
sudo /usr/bin/rpm-ostree-server/mkostreerepo -r=/srv/ostree/niceos
��� �������ģ�:
* ��������� ������� /srv/ostree/niceos (���� ��� ���);
* ���������� ����������� repo � cache;
* ��� ������������� ����� ������ niceos-base.json;
* ����� ������������� ��������� *.repo (���� �� ��� � �� ����ޣ� custom �����);
* ���������� rpm-ostree compose tree, �������� ������ � ref;
* ��������� summary.
2. ����������� ������� "��ϣ ������" (� treefile JSON)
��� ���������� ���� ��� ����������: �� ���������� ������ ������� ��� ����������.
������:
sudo /usr/bin/rpm-ostree-server/mkostreerepo \
-r=/srv/ostree/niceos \
-p=/srv/ostree/niceos/treefiles/niceos-minimal.json
��������� �������:
* ��������, ��� JSON ����������,
* ��������� ��� � REPOPATH (� ����� ������������ ��� ����� ������ �������� ����),
* ��������� ������.
3. "Custom repo files" (-c) - ���������, ��� ����������
���� -c/--customrepo ������� "��������� ����� ���������, ��������� �� ������������".
�� ������ � ������� ���� ������������� ������ (Y/N), ������� ����� �������� CI/�������������.
������������ �����:
* ���� �� ������ ��������� �������������� *.repo � �� ��������� ������������� - ����������� -c,
* �� ������, ��� ��� ��������������� ������ ����� ���� ������� ���� �������,
���� ������� ���������� ��� ������ *.repo � ������� ����� ��� ��������.
������ (������� ����� ���� � ����������):
sudo /usr/bin/rpm-ostree-server/mkostreerepo \
-c \
-r=/srv/ostree/niceos \
-p=/srv/ostree/niceos/niceos-base.json
� treefile (JSON) �� ������ �������� ����� ��� ����:
1. ref - ��� ������ ��������. ��� "��������� API-�����" ��� ��������.
2. repos - ����� RPM-����������� ������������ ��� ������.
3. packages/units - ������ ������� � ������ �������.
����������� �������� ������ (�� ������):
{
"osname": "niceos",
"releasever": "5.2",
"ref": "niceos/5.2/x86_64/minimal",
"repos": ["niceos", "niceos-updates", "niceos-extras"],
"packages": ["systemd","openssh","rpm-ostree"],
"units": ["sshd.service"]
}
��������� �� ����������:
ref ����� ������� �������������������: ������ -> ����������� -> �������.
��� �������� ������ stable/testing � ����� ���, ��� ����� ����������� ������� ����� ���.
���������� repo �� HTTP(S) � �������� (refs/summary)
�������� ����� ������ ������� OSTree-�����������: REPOPATH/repo.
������� cache ����������� �� ����� (� �� �����): ��� ���������� ��� ������.
Summary �������� ��� ��� mkostreerepo ����� compose ������:
* ostree summary --repo=... --update
* ostree summary -v --repo=...
Summary - ��� ����������, ������� �������� �������� ������ ������������ refs �
��������� �������� � ������������.
���� summary �� �����̣�, �� ��������� �������� �������� �� ��������: "ref ��
�����", "pull ��ģ� ���� �� ���", "�� �������� ������ refs".
������� �������� �� �������
1. ���������� refs:
ostree refs --repo=/srv/ostree/niceos/repo
2. ���������� ������� �� ref (������):
ostree log --repo=/srv/ostree/niceos/repo niceos/5.2/$(uname -m)/minimal | head -n 80
3. ��������� summary:
ostree summary -v --repo=/srv/ostree/niceos/repo
4. ��������� ��������� ��������:
ls -la /srv/ostree/niceos
ls -la /srv/ostree/niceos/repo | head -n 50
ls -la /srv/ostree/niceos/cache | head -n 50
���� ���������� �� HTTP(S): ���-������ ������ �������� /srv/ostree/niceos/repo �� URL ����:
http://OSTREE_SERVER/ostree/repo/
������ ������ �� ����� ������� ��������� remote � ������ pull/deploy (��� ����� � 3 �����).
�������� ����������� � ������� (������ "��� �� HTTP"):
curl -I "http://OSTREE_SERVER/ostree/repo/" || true
����-������� "������ �����"
1. REPOPATH ����������, ������ ���� repo/ � cache/.
2. ostree refs ���������� ������ refs (� ��� ������������� ����� ����� ����������).
3. ostree summary -v ������������ ��� ������.
4. repo/ �������� �� HTTP(S) �� ���� ��������.
5. � release-�������� ���� �������: ����� ������� compose summary �����������
(� ��� ������� �����������).
������ � ������� ������ �� �������
����������� RPM � �����
� ��������� *.repo, ������� mkostreerepo ����� �������������, ����ޣ�:
* gpgcheck=1
* gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NICEOS
��� ��������� �� ������, �� �������� ������� ����:
�� ������� ������ ������ ���� ����� � �������, ����� compose ���ģ� �� "��-��
OSTree", � ��-�� �������� �������� RPM.
Customrepo � CI
���� -c ����� ������� ���������� (Y/N). ��� CI ��� ���������:
�������� ��������, ���� ���-�� �� ���ģ� "������ ������".
���� �� ������ �������������, ������ �����:
* �� ������������ ������������� �����,
* ���� ������� ����������� *.repo � ���������� ������ ��� non-interactive.
���������� ���� �������
����������� - ��� ����� �������� �������.
���������� ��������:
* ������ � repo/ ������ � ���������� ������������/��������,
* ���-������ ����� ������ ������,
* ������ ������� ��������� (HTTPS ��� �������� ������).
���������� �����: ���ף�������� �������/������ � ����.��
�� ���������� ������� OSTree ���� �������� ����: �� ���������� "�������������
������� ��������" ��� ����� ������ ��������.
�� ����:
1. �������������� ������� ����� � sysroot (�������� "���������" ����� pull/deploy),
����
2. �������� �������� �����, � ������� ��� ���� ������ deploy � �������� ���������.
��� �������� (�������� ��� �������������) ������ ������� �������: ���� ���
������� ����� - ������ ����������� ��� ������.
� ����.�� ��� ��� ��� ���� ������: mk-ostree-host.sh, ������� ������ �����
����� � ������������� � ���� ��������� ref.
������ "��� ����������" ����� mk-ostree-host.sh (RAW-�����)
������ ��������� ������ ���� ���������� ������������ ��������� ������:
1. ������� sparse-���� *.raw ��������� ������� (������� ����).
2. ���������� ��� ��� loop-����������.
3. ��������� GPT ��� BIOS-�����:
* p1: BIOS boot (��� GRUB2),
* p2: /boot,
* p3: / (������).
4. ������� device-mapper ���������� ��� �������� (kpartx).
5. ����������� p2 � p3 � ext4.
6. ��������� p3 ��� sysroot, p2 ��� /boot.
7. �������������� OSTree sysroot, ��������� remote, ������ pull ������� ref � deploy.
8. ������������ ������ ������ ��������� FS (/dev, /proc, /sys, /run, /boot).
9. ������������� GRUB2 � �����, ���������� �������, ���������� kernel args.
10. ��������� root= ���, ����� ������� ����������� �� ������� ������.
11. ����������� /etc/fstab � ������ ��������� ������ root.
12. ��������� ������������ �ӣ � ������� loop/devicemapper (���� ��� �������).
������ ���������:
* FILE_SIZE - ������ ������ � ��.
* IMG_NAME - ��� (��������� IMG_NAME.raw).
* IP_ADDR - ����� OSTree-������� (remote ����� ���� http://IP_ADDR).
* REPO_REF - ref, ������� ����� ���������� (�������� niceos/5.2/x86_64/minimal).
* MOUNT_POINT - ��������� ����� ������������ sysroot ��� ������.
* root-dev - ������ ��������: ����� ���� "������" �� ��� ������ (������ /dev/sda3 ��� /dev/vda3).
�� ����� ������ ������ ������ �������� ��� ���-�� �����:
/dev/mapper/loop0p3
�� ��� ������� VM/�� ������ ��� ���������� �� ����������.
��� �������� ������ �����, ��������:
* /dev/sda3 (������������ SATA/SCSI ����������),
* /dev/vda3 (virtio � KVM/QEMU),
* ���� ������ �������� � ����������� �� ���������.
������� ������ ������ ������ ����:
������� ����������� root= �� "�������" ���������� ������, � ����� �������� ���
�� ������� root-dev, ����� ��������� � �������� ������ ����� ������ ���, ��� ��
������������� �����.
���� root-dev ������ ������� - �������� ������: ������� ������ �� ������ � "cannot mount root".
������ ������� (BIOS + SATA: /dev/sda3)
sudo ./mk-ostree-host.sh \
-s 20 \
-n niceos-5.2-minimal \
-i 10.0.0.10 \
-r niceos/5.2/x86_64/minimal \
-m /mnt/niceos-root \
--root-dev /dev/sda3
������ ������� (BIOS + virtio: /dev/vda3)
sudo ./mk-ostree-host.sh \
-s 20 \
-n niceos-5.2-virtio \
-i 10.0.0.10 \
-r niceos/5.2/x86_64/minimal \
-m /mnt/niceos-root \
--root-dev /dev/vda3
������ ����� ��� � /var/log/mk-ostree-host.sh-YYYY-MM-DD.log
��������:
sudo tail -n 200 "/var/log/mk-ostree-host.sh-$(date +%Y-%m-%d).log"
�������� ���������� �� ������ ������� � ������� ������������
����� VM �����������, ������ �������������� - ���������, ��� ������� ������
deploy � ������� ����� ������������ ���������.
������ ������������ ��������
1. ������� ��������� ������ root (������ ������ root:changeme):
passwd
2. ���������� ��������� OSTree:
ostree admin status
����� ������:
* �� �������, ����� deploy ����������,
* ����� ������� ������,
* ����� ����� ������� ����� ������������ (���� ���������).
3. ��������� ������������ / � /boot:
mount | egrep ' on / | on /boot '
4. ��������� fstab:
cat /etc/fstab
��������� ������ (������):
* /dev/sda3 -> /
* /dev/sda2 -> /boot
���� ���� VM ���������� virtio, ��� ������ ���� /dev/vda* (����� �� ��������
�������� root-dev � fstab).
5. ��������� ������ ��������:
ls -la /boot/loader/entries/
��� ������� ������ ���������, ��� deploy ������������� ���������� ����������� entry.
���� ������ (rollback) ��� ������� ��������
OSTree ����� ���, ��� ����� - ��� �� "������� 30 ������� � ������� 30 �������",
� ������������ ����� deploy.
������ �������:
* � ��� ���� "������� ������" (deploy A),
* �� ����������/���������� ����� (deploy B),
* ���� ����� �������� �� B ���-�� �� ��� - �� ������������� �� A.
�� ��������, ������ ��� ���� � ������� �����������, � ���������������� ������� ����� ��������:
1. ������� ������� ��������� �������,
2. ����� �������� ���������, ������ ����� deploy �������� ����������.
� ��������, ��� ����� SLA, ��� ������ ��������� � ����������: "������ ������
��������", � �� "�� ������ ��� ���� ����������� �����������".
������� ������ � ����������� �� �������
VM �� �����������: �������� root-dev
�������:
kernel panic / cannot mount root / �������� root device.
�������: � ���������� root= ��������� �� /dev/sda3, � ������� ���� -
/dev/vda3 (��� ��������).
�������:
* ����������� ����� � ���������� --root-dev,
* ���� (� ��������� ������) ������� loader entries � fstab ������� - �� ��� ���
"������", � �� ���������� �������.
������ �� ����� ref: ����/summary/ref
�������:
pull ������, ref �� �����, ������ refs ������.
�������:
* ��� ������� �� HTTP(S) �����������,
* ������ �� ��������� repo/,
* summary �� �����̣�,
* ref ������ �����������.
������� ��������:
* curl -I �� URL �����������,
* ostree remote refs �� �������,
* ostree summary -v �� �������.
��������� UEFI, � ����� BIOS
�������: VM �� ����� ���������, "No bootable device".
�������: ������� mk-ostree-host.sh ��������� BIOS-only (bios_grub), ��� EFI System Partition.
�������:
* ������� ��������� ������� ������ UEFI (ESP + grub2-efi),
* �� �������� "����� �������" ������� ��� ������ �������� ��� ��������.
���������� �������� ����������, fstab �� ���������
�������: �������� �������� ��������, /boot �� ����������� ��� ������ ����������� �� ����.
�������: fstab ֣���� �������� � /dev/sdX ��� /dev/vdX, � ����� ������.
�������:
* ������� ����������������� ������� (virtio/sata),
* ���� ������� �� UUID/labels � fstab ��� ������� ������������ (��� ��������� ��������� ��������).
����-������� "������ �����"
1. ���� ���������� � ������ ������� (BIOS/virtio ��� BIOS/sata - ��� �����������).
2. ������ root ���� (root:changeme �� ������ ���� ������ ������� �����).
3. ostree admin status ���������� ��������� deploy/ref.
4. / � /boot ������������ ���������, /etc/fstab ������������� �������� ����� �����.
5. /boot/loader/entries �������� ������, ��������������� deploy.
6. � ��� ���� ���������: ��� ��������� (ref stable/testing), � ��� ���������� ��� ���������.
�� ���� "������" �������� ������: ������ ��������� ����������� � ref, ������
������������� deploy � �����/���� � �������� ������������� ���������� � ������.
|