リリカルマジカル頑張るブログ

のんびり生きていて思った事とかを書いていくブログです

CoreOSインストールしましょ

リリカルマジカル頑張るブログ

2019/10/30 追記

FedoraCoreOSの話を追記しました

ちなみにCoreOSはUEFIブートできませんでした
最近のPCだとインスコできないじゃん...()

なのでそういう方はFedoraCoreOS使ってください(投げやり)

にゃんぱすー

おひさしぶりです
前回の記事から半年以上経ってしまったので, とりあえずなんか書きました
CoreOSをインストールしたいと思いまーす

CoreOSって??

CoreOSっていうのは簡単に言うとDockerなどのコンテナ利用に特化したOSです

なぜCoreOSをインストールするかと言うと
「コンテナオーケストレーション実験したいから この子達にOS入れといて」
とお願いされたからです

これからCoreOSインストールしようと思っている人は参考にしてください

CoreOSのISOの入手

CoreOS
https://coreos.com/os/docs/latest/booting-with-iso.html
公式から入手
ひとまずStableでいきましょ

追記:Container Linux(CoreOS)は2020年に終了して, 後継はFedoraCoreOSになるらしい

FedoraCoreOS
https://getfedora.org/en/coreos/download/

bootable mediaの作成

bootable mediaを作るんじゃ!

ISOをUSBフラッシュドライブとかのデバイスに書き込む

当方の環境はMacだが,一応Linuxの場合も書いておく

## デバイスのリストを取得

## Mac
diskutil list

## Linux
lsblk

## デバイスのフォーマット
## ラベルは大文字で

## Mac
diskutil eraseDisk FAT32 [LABEL] /dev/disk? 

## Linux
mkfs.vfat -v -F 32 -n [LABEL] /dev/sda?

## デバイスのアンマウント

## Mac
diskutil unmountDisk /dev/disk?

## Linux
umount /dev/sda?

## デバイスに書き込む
## わざとrdiskにしてある
## bsを設定するなら16mとか
sudo dd if=[PATH_ISO] of=/dev/rdisk?? 

CoreOSのインストール

公式ではignition.jsonを用いてインストールするのが推奨だが,
cloud-config.ymlから 設定を読み出してインストールすることも可能である(非推奨)

今回は めんどくさいので 後者で行う

cloud-config

設定ファイルを書く

設定する項目はいろいろあるんですけど, ここでは説明を割愛する(etcd, etcd2, fleet, flannel)

とりあえず etcdとetcd2はdeprecatedだったので使わなかった

詳細な設定に関しては聞いていないのでこれで大丈夫だと思う(適当)
必要最低限には使えるはず

以下,cloud-config.ymlの例

#cloud-config
#sudo coreos-install -d /dev/sda -C stable -c cloud-config.yml

hostname: core-01

coreos: 
  update:
    reboot-strategy: 'off'
  manage_etc_hosts: localhost

  # etcd2: deprecated
  # name: core-01
  # discovery: 192.168.32.???/v2/keys/machines
  # addr: $public_ipv4:4001
  # peer-addr: $private_ipv4:7001

  units: 

    - name: coreos-setup-environment.service
      command: restart

    - name: systemd-networkd.service
      command: restart

    - name: timezone.service
      command: start
      content: |
        [Unit]
        Description=timezone
        [Service]
        Type=oneshot
        RemainAfterExit=yes
        ExecStart=/usr/bin/ln -sf ../usr/share/zoneinfo/Japan /etc/localtime

    - name: etcd2.service
      command: start

    - name: fleet.service
      command: start

    - name: docker.service
      command: start

users: 

  - name: core
    passwd: passwdのハッシュ値
    groups:
    - sudo
    - docker

write_files: 

  - path : /etc/environment
    permissions: 0644
    content: |
      COREOS_PUBLIC_IPV4=192.168.32.??? 
      COREOS_PRIVATE_IPV4=192.168.32.??? 

  - path: /etc/systemd/network/10-static.network
    content: |
      [Match]
      Name=e*

      [Network]
      Address=192.168.32.???/24
      Gateway=192.168.32.1
      DNS=???.???.???.???

passwdのハッシュ値はopensslコマンドで出力した

## -1はMD5ハッシュ化
openssl passwd -1

さっき作ったbootable mediaを
インストールするマシンのUSBに挿してCoreOSを起動
ここで起動しない場合,書き込みに失敗してるのでやり直してください
また,UEFIでBoot Priorityいじるかはマシンとお話して判断してください

追記:どうやらUEFIブートできないっぽい()
「助けて〜LegacyBIOS〜」という方は, FedoraCoreOSを入れてください
そっちはちゃんとUEFI対応してました.

## cloud-configはisoに埋め込むか
## どっかのサーバにおいてscpとかで取ってきたらいいと思う

## cloud-configを用いてinstall
## たぶんsdaとかでしょ...()
sudo coreos-install -c cloud-config.yml -d /dev/sda -C stable

## ignition.jsonの場合
sudo coreos-install -i ignition.json -d /dev/sda -C stable

## FedoraCoreOSの場合
/usr/libexec/coreos-installer -d sda -i ignition.json -b image.iso

インストール!!

最後にSSH接続できるかdocker使えるか確認して終わり!!

参考URL

公式のドキュメント

https://coreos.com/os/docs/latest/installing-to-disk.html
https://coreos.com/os/docs/latest/provisioning.html
https://coreos.com/os/docs/latest/cloud-config.html

終わりに

今回はCoreOSのインストールについて書きました

設定に関して全然説明してないけど
公式のDocumentsに全部書いてるので そっち見てください

近々,Linuxの記事書くと思います
あと自作PC界隈の話とか