Rancher Meetup Tokyo #1 RancherOS のymlを書いてみる

  • 4
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Rancher Meetup Tokyo #1 に行ってきて これの続きになります。

今回は、RancherOSを設定してみようと思います。
私は検証環境でCoreOSを使用しております。vim,curl,git,wget が捨てられませんでした開発中のDockerImageをテストするためです。

今回はRancher もくもく勉強会 #1で使用する可能性があるRancherOSを少し触れてみたいと思います。

RancherOSとは、

  • プロダクション利用可能なDocker向けミニマルOS
  • Dockerと競合を引き起こすおそれのあるsystemdのようなinitシステムを不要にし、最小限のコードベースとOSで動作するシステムサービスによってセキュリティを高めている
  • Kernel上に即座にDockerコンテナを実行するよう設計されており、これらのコンテナがコアとなるLinuxサービスをユーザに提供する
  • ライブラリが豊富

引用:【Docker】RancherOSで本格的な自宅サーバーを構築しよう(1) ~ 要件と構成 ~

インストール

ダウンロード

Releases · rancher/osからダウンロードできます。
今回はv0.6.1を使用しました。

私の環境ではVmware ESXiが稼働してるのでマシンを作成してISOをマウントしました。

sshでログインする。

初回起動時はautologinできるようでパスレスでログインできるのですが、sshでのログインがID:rancher/PASS:rancherではできませんでした。

[rancher@rancher ~]$ sudo passwd rancher
Changing password for rancher
New password:
Bad password: too short
Retype password:
Password for rancher changed by root

をして強引に変更しました。

cloud-config.yml の作成

cloud-config.yml
hostname: rancher-1-1
rancher:
  console: ubuntu
  network:
    dns:
      nameservers:
      - 172.16.xx.xxx
    interfaces:
      eth0:
        address: 172.16.xx.xxx/24
        gateway: 172.16.xx.xxx
ssh_authorized_keys:
- ssh-rsa AAAAB (ship)

vmware などをHostマシンとして使用している場合

vmwareなどをhostとして使用してる場合open-vm-toolsをインストールするとvsphere Client上で再起動、シャットダウンができるようになります。

cloud-config.yml
hostname: rancher-1-1
rancher:
  network:
    (snip)
  services_include:
    open-vm-tools: true
ssh_authorized_keys:
- ssh-rsa
(snip)

services_includeopen-vm-tools: true を追記しました。

TimeZone を設定する

Ubuntuのコンソールに切り替えたのでTimeZoneも設定しておきましょう。
(Defaultコンソールではできなかった わかる方教えて下さい)

runcmd:
 - [ ln, -sf, /usr/share/zoneinfo/Japan, /etc/timezone ]

完成形

hostname: rancher-1-1
runcmd:
 - [ ln, -sf, /usr/share/zoneinfo/Japan, /etc/timezone ]
rancher:
  console: ubuntu
  network:
    dns:
      nameservers:
      - 172.16.xx.xxx
    interfaces:
      eth0:
        address: 172.16.xx.xxx/24
        gateway: 172.16.xx.xxx
ssh_authorized_keys:
- ssh-rsa AAAAB (ship)

RancherOS インストール

$ sudo ros install -c cloud-config.yml -d /dev/sda
INFO[0000] No install type specified...defaulting to generic
Installing from rancher/os:v0.6.1
Continue [y/N]: y
Unable to find image 'rancher/os:v0.6.1' locally
v0.6.1: Pulling from rancher/os

952132ac251a: Pull complete
82659f8f1b76: Pull complete
c19118ca682d: Pull complete
8296858250fe: Pull complete
24e0251a0e2c: Pull complete
cedc1388d1ff: Pull complete
71cd173b86e2: Pull complete
128c1dcd50f6: Pull complete
Digest: sha256:b374dc39710c2b15fb0c71c299a9ea52c626bff9df370f139ca2aee0edfc24c3
Status: Downloaded newer image for rancher/os:v0.6.1
+ DEVICE=/dev/sda
+ [[ -z /dev/sda ]]
++ wc -l
+++ cut -d / -f3
+++ echo /dev/sda
++ grep sda /proc/partitions
+ PARTITION_COUNT=1
+ '[' 1 -gt 1 ']'
+ dd if=/dev/zero of=/dev/sda bs=512 count=2048
2048+0 records in
2048+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.0532469 s, 19.7 MB/s
+ partprobe /dev/sda
+ fdisk /dev/sda

Welcome to fdisk (util-linux 2.27.1).
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 0x36ab9f59.

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-33554431, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-33554431, default 33554431):
Created a new partition 1 of type 'Linux' and of size 16 GiB.

Command (m for help): The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

++ dirname /scripts/lay-down-os
Creating filesystem with 4194048 4k blocks and 4194304 inodes
Filesystem UUID: 924ac9df-d004-48b9-bc38-39f7e7b508ad
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: + SCRIPTS_DIR=/scripts
+ VERSION=v0.6.1
+ getopts i:f:c:d:t:r:o:p:ka: OPTION
+ case ${OPTION} in
+ DEVICE=/dev/sda
+ getopts i:f:c:d:t:r:o:p:ka: OPTION
+ case ${OPTION} in
+ ENV=generic
+ getopts i:f:c:d:t:r:o:p:ka: OPTION
+ case ${OPTION} in
+ CLOUD_CONFIG=/opt/user_config.yml
+ getopts i:f:c:d:t:r:o:p:ka: OPTION
+ [[ '' == \a\r\m ]]
+ DIST=/dist
+ CLOUD_CONFIG=/opt/user_config.yml
+ CONSOLE=tty0
+ 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.13 (17-May-2015)
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
++ wc -l
++ grep RANCHER_BOOT
++ lsblk -o label
+ '[' 0 -gt 0 ']'
+ 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
++ dirname /scripts/seed-data
+ SCRIPTS_DIR=/scripts
+ BASE_DIR=/mnt/new_img
+ CLOUD_DATA=/opt/user_config.yml
+ IFS=,
+ read -ra FILES
+ '[' -z /mnt/new_img ']'
+ mkdir -p /mnt/new_img/var/lib/rancher/conf/cloud-config.d
+ '[' /opt/user_config.yml '!=' /scripts/conf/empty.yml ']'
+ cp /opt/user_config.yml /mnt/new_img/var/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.6.1-rancheros
+ cp /dist/vmlinuz /mnt/new_img/boot/vmlinuz-v0.6.1-rancheros
+ seusers=/mnt/new_img/etc/selinux/ros/seusers
+ failsafe_context=/mnt/new_img/etc/selinux/ros/contexts/failsafe_context
+ '[' -f /mnt/new_img/etc/selinux/ros/seusers ']'
+ '[' -f /mnt/new_img/etc/selinux/ros/contexts/failsafe_context ']'
+ '[' '' = y ']'
+ umount /mnt/new_img
Continue with reboot [y/N]: y
INFO[0030] Rebooting

インストールまでしてみました。
やはりntp,systemd,syslogはほしいのでymlに記述したいのですが勉強不足です。
しばらくはCoreOSは私の中ではHost用OSになりそうです。