RancherOS to bardzo ciekawa dystrybucja linuxa zaprojektowania do uruchamiania kontenerów dockerowych. W RancherOS wszystko jest kontenerem, nawet podstawowe demony typu syslogd. Więcej o samej idei RancherOS przeczytacie tutaj, ja natomiast w niniejszym wpisie przedstawię jak szybko i skuteczenie zainstalować system RancherOS.
- Tworzymy wirtualną maszynę na której będziemy instalować Ranchera.
- Pobieramy obraz ISO (tylko 22 MB!) z instalatorem oraz podmontowujemy go do maszyny wirtualnej.
- Uruchamiamy maszynę i bootujemy płytę intalacyjną.
- Plik konfiguracyjny cloud-config wygodnie jest stworzyć na zewnętrznym komputerze, gdyż niekoniecznie będziemy w stanie wkleić klucze SSH do konsoli maszyny wirtualnej. Jeśli w naszej sieci nie mamy aktywnego serwera DHCP, konfiguracji sieci dokonujemy poniższymi poleceniami:
sudo ip addr add 192.168.0.100/24 dev eth0 sudo ip route add default via 192.168.0.1
- Po skonfigurowaniu sieci logujemy się zdalnie do systemu uruchomionego z płyty instalacyjnej. Logowanie przez SSH wymaga podania domyśle użytkownika rancher z hasłem rancher.
- Tworzymy plik cloud-config, jak poniżej, i kopiujemy go do systemu uruchomionego z płyty instalacyjnej.
UWAGA: do zainstalowanego systemu RancherOS można zalogować się wyłącznie kluczami SSH, hasło NIE JEST OBSŁUGIWANE!
- Jeśli chcemy utworzyć dedykowany klucz pod instalację RancherOSa, możemy to łatwo zrobić poleceniem jak poniżej, gdzie rancher jest nazwą dla pliku z kluczem prywatnym (utworzony zostanie także plik rancher.pub, w którym znajdziemy klucz publiczny):
ssh-keygen -f rancher
- Przykładowy plik cloud-config obejmuje ustawienie nazwy hosta, dodanie kluczy SSH (publicznych, z pliku rancher.pub utworzonego w poprzednim kroku), konfigurację sieci oraz opcjonalnie konfigurację dostępu do własnego repozytorium z pominięciem weryfikacji certyfikatów:
#cloud-config
hostname: RancherLabMgmt
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2[...]gD0Q== luktom@P01
rancher:
network:
interfaces:
eth0:
address: 192.168.0.100/24
gateway: 192.168.0.1
dns:
nameservers:
- 192.168.0.1
user_docker:
args: [ docker, -d, -s, overlay, -G, docker, -H, 'unix:///var/run/docker.sock', '--insecure-registry registry.lab.luktom.net:5000' ]
- Następnie dokonujemy identyfikacji dostępnych partycji poleceniem sudo fdisk -l. Zazwyczaj będzie to /dev/sda:
[rancher@rancher ~]$ sudo fdisk -l Disk /dev/sda: 107.3 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sda doesn't contain a valid partition table
- Przystępujemy do instalacji właściwej, wykonując polecenie sudo rancheros-install -c config.yml -d /dev/sda, gdzie config.yml jest wcześniej przygotowanym przez nas plikiem cloud config, a /dev/sda dyskiem na którym chcemy zainstalować RancherOSa. Poniżej listing z przykładowej instalacji:
[rancher@rancher ~]$ sudo rancheros-install -c config.yml -d /dev/sda
No install type specified...defaulting to generic
All data will be wiped from this device
Partition: true
DEVICE: /dev/sda
Are you sure you want to continue? [yN]yUnable to find image 'rancher/os:v0.3.3' locally
v0.3.3: Pulling from rancher/os
64e5325c0d9d: Pull complete
bf84c1d84a8f: Pull complete
2fee06ebd21b: Pull complete
f883cdbc141f: Pull complete
3583989b6df5: Pull complete
c5b9cd3135d4: Pull complete
3aa1e4862bf7: Pull complete
18a17f653f50: Already exists
Digest: sha256:a7d233ec194d7e2796ef596ef724c7e7c1dc17504692d596dfb6ea0e62218fad
Status: Downloaded newer image for rancher/os:v0.3.3
+ DEVICE=/dev/sda
+ [[ -z /dev/sda ]]
++ wc -l
+++ echo /dev/sda
+++ cut -d / -f3
++ grep sda /proc/partitions
+ PARTITION_COUNT=1
+ '[' 1 -gt 1 ']'
+ fdisk /dev/sda
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x78c601e2.
Command (m for help): Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): Partition number (1-4, default 1): First sector (2048-209715199, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199):
Created a new partition 1 of type 'Linux' and of size 100 GiB.
Command (m for help): The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
udev
+ getopts i:f:c:d:t:r:o:p: OPTION
+ case $OPTION in
+ DEVICE=/dev/sda
+ getopts i:f:c:d:t:r:o:p: OPTION
+ case $OPTION in
+ ENV=generic
+ getopts i:f:c:d:t:r:o:p: OPTION
+ case $OPTION in
+ CLOUD_CONFIG=/opt/user_config.yml
+ getopts i:f:c:d:t:r:o:p: OPTION
+ DIST=/dist
+ BASE_DIR=/mnt/new_img
+ PARTITION=/dev/sda1
+ KERNEL_ARGS=
+ '[' -n generic ']'
+ case ${ENV} in
+ format_and_mount
+ format_device
+ device_defined /dev/sda
+ [[ -z /dev/sda ]]
+ mkfs.ext4 -F -i 4096 -L RANCHER_STATE /dev/sda1
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 26214144 4k blocks and 26214400 inodes
Filesystem UUID: 86b8214d-037d-4daf-a4ac-f7e6459cce6a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
+ mount_device
+ local label=RANCHER_STATE
+ local raw=false
+ mkdir -p /mnt/new_img
++ lsblk -o name
++ grep RANCHER_BOOT
++ wc -l
+ '[' 0 -eq 1 ']'
+ local 'mount_opts=-L RANCHER_STATE'
+ '[' false == true ']'
+ mount -L RANCHER_STATE /mnt/new_img
+ trap 'umount /mnt/new_img' EXIT
+ create_boot_dirs
+ mkdir -p /mnt/new_img/boot/grub
+ install_grub
+ grub-install --boot-directory=/mnt/new_img/boot /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
+ /scripts/seed-data /mnt/new_img /opt/user_config.yml
+ BASE_DIR=/mnt/new_img
+ CLOUD_DATA=/opt/user_config.yml
+ IFS=,
+ read -ra FILES
+ '[' -z /mnt/new_img ']'
+ mkdir -p /mnt/new_img/lib/rancher/conf/cloud-config.d
+ cp /opt/user_config.yml /mnt/new_img/lib/rancher/conf/cloud-config.d/
+ grub2_config ''
+ local grub_cfg=/mnt/new_img/boot/grub/grub.cfg
+ local append_line=
+ cat
+ '[' '!' -z ']'
+ pvgrub_config ''
+ local grub_file=/mnt/new_img/boot/grub/menu.lst
+ local append_line=
+ cat
+ '[' '!' -z ']'
+ install_rancher
+ cp /dist/initrd /mnt/new_img/boot/initrd-v0.3.3-rancheros
+ cp /dist/vmlinuz /mnt/new_img/boot/vmlinuz-v0.3.3-rancheros
+ umount /mnt/new_img
RancherOS has been installed. Please reboot...
- Po udanej instalacji uruchamiamy ponownie system, a następnie logujemy się do niego z użyciem klucza, w naszym przykładzie będzie to polecenie:
ssh -i rancher 192.168.0.100
W tym momencie system jest gotowy do użycia i uruchamiania na nim kontenerów Dockerowych.
RancherOS stanowi idealną bazę do dalszej rozbudowy i instalacji oprogramowania do zarządzania klastrem, o nazwie… Rancher. Ale o tym w następnych wpisach :)


Dodaj komentarz