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== [email protected] 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:
[[email protected] ~]$ 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:
[[email protected] ~]$ 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