簡単!さくらのVPSにcoreOSをインストールする方法
さくらのVPSを契約直後の状態から10〜15分程度でインストールが完了します。
SSHで準備する
SSHでログインしてインストールに必要なファイルを収集します。
sshならコピー&ペーストできるので、この後のコンソール操作で手が抜けるようにこの段階で出来るだけ纏めておきます。
cloud-init
まだ勉強中なので最低限の設定だけしています。
static.networkの[Match]で悩んでる方が多いですがeth*は非推奨みたいなのでMACAddressで良いのではと思ってますが機種に依存する設定は省きたいし難しいですね←アドバイスお待ちしております
mkdir -p /tmp/work export VPS_IP=160.16.83.xx # VPSのIPアドレス export VPS_GATEWAY=160.16.82.1 # VPSのGATEWAYアドレス export VPS_DNS1=210.188.224.10 # プライマリDNS export VPS_DNS2=210.188.224.11 # セカンダリDNS export VPS_MAC=9C:A3:BA:01:CD:F1 # MACアドレス export NTP_SERVER=ntp1.sakura.ad.jp # sakura以外ならntp.nict.jpが便利 export ETCD_HOST=`curl -s https://discovery.etcd.io/new` # ディスカバリー用アドレスを発行する cat > /tmp/work/cloud-config << EOT #cloud-config hostname: $HOSTNAME coreos: # etcd: # discovery: $ETCD_HOST # peer-addr: $VPS_IP:7001 units: # - name: etcd.service # command: start # - name: fleet.service # command: start - name: docker.service command: start - name: timezone.service command: start content: | [Unit] Description=set the timezone [Service] Type=oneshot ExecStart=/usr/bin/timedatectl set-timezone Asia/Tokyo RemainAfterExit=yes - name: swap.service command: start content: | [Unit] Description=Turn on swap [Service] Type=oneshot Environment="SWAPFILE=/swapfile" Environment="SWAPSIZE=1GiB" RemainAfterExit=true ExecStartPre=/usr/bin/sh -c '/usr/bin/fallocate -l \${SWAPSIZE} \${SWAPFILE} && chmod 0600 \${SWAPFILE} && /usr/sbin/mkswap \${SWAPFILE}' ExecStartPre=/usr/sbin/losetup -f \${SWAPFILE} ExecStart=/usr/bin/sh -c "/sbin/swapon \$(/usr/sbin/losetup -j \${SWAPFILE} | /usr/bin/cut -d : -f 1)" ExecStop=/usr/bin/sh -c "/sbin/swapoff \$(/usr/sbin/losetup -j \${SWAPFILE} | /usr/bin/cut -d : -f 1)" ExecStopPost=/usr/bin/sh -c "/usr/sbin/losetup -d \$(/usr/sbin/losetup -j \${SWAPFILE} | /usr/bin/cut -d : -f 1)" [Install] WantedBy=multi-user.target - name: static.network content: | [Match] MACAddress=$VPS_MAC [Network] Address=$VPS_IP/23 Gateway=$VPS_GATEWAY DNS=$VPS_DNS1 DNS=$VPS_DNS2 write_files: - path: /etc/ntp.conf content: | server $NTP_SERVER restrict $NTP_SERVER kod nomodify notrap nopeer noquery restrict default ignore restrict 127.0.0.1 ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEA5BqkP+ToroYtzOhnZ2aOJj8WqUpRcQRy/D2ojlPsQutM9Pqfo3qI+75iLpTAAkt+X0RlSBNFLfLsDgfV45IWS/5jv7CKLF/AAIU8Ke5wKVXZrC1LkZ7HfnluALhepUkeB3ilrhFQS+qeS8LHw2s2C2Ig/bGj8lXuEyt93aSREIU= makoto@2ch.to EOT
※公開鍵は自分のに書き変えてください。
ファイルの収集
installerの中で呼ばれるコマンドや設定ファイルを準備します。
(コンソールでviとか面倒臭いので出来るだけこの段階で用意しましょう)
cp /sbin/{blockdev,wipefs,blkid} /tmp/work/ cp /bin/{mktemp,sed,grep,bash,lsblk,env,mkdir,rm,mount,umount,echo,cp} /tmp/work/ cp /usr/bin/{tee,wget,gpg,bzip2,which} /tmp/work/ (cd /tmp/work && ln -f bzip2 bunzip2) echo 'nameserver 8.8.8.8' > /tmp/work/resolv.conf
VNCコンソールを立ち上げる
コントロールパネルからカスタムOSインストールを選択して「CentOS7 x86_64」をインストールするVNCコンソールを立ち上げます。
(/dev/vdaを解放した状態でシェルが使いたいだけなので互換性のあるOSならなんでもかまいません)
「Rescue a CentOS system」を選択
coreOSをinstallする
しばらくするとシェルが立ちあがりますのでまずは先ほど作成したwork.tarを取り出します。
mkdir -p /mnt/root mount /dev/vda3 /mnt/root tar xf /mnt/root/work.tar -C /tmp umount /mnt/root
coreOSのinstall中にネットワークが必要になるのでネットワークを有効にします。
ifconfig eth0 160.16.83.xx(IPアドレス)/23 route add default gw 160.16.xx.1(ゲートウェイ) cp /tmp/resolv.conf /etc/
「coreos-install」を実行します。
export PATH=$PATH:/tmp/ bash /tmp/coreos-install -d /dev/vda -C stable -c /tmp/cloud-config
「Success! CoreOS stable current is installed on /dev/vda」と表示されたらシャットダウンし、コントロールパネルから起動します。
(rebootだとカスタムOSインストールが終わらないのでシャットダウンが必要です)