前提
- systemdを採用している。サービス管理はすべて
systemctl
から。ログを見たいときはjournalctl
を使用する。 - パッケージマネージャーは存在しない。サービスはDockerで賄う。
- システムファイルは原則として上書きできない。設定変更はcloud-config.ymlを通じて行う。
- ローリングアップデートで自動的にOSアップデートがかかる。
インストール
いくつかやり方があり、CoreOSを立てる環境に応じて適切なものを選ぶ。
- ISOからブートして、スクリプトでインストールする方法。
- VMwareだとCoreOS側で配布しているovaイメージがあるので、これを利用してデプロイする。Thin Provisioning推奨。
- さくら、ConoHa、DigitalOceanなどメジャーなVPSやクラウドであればイメージが準備されている(特にDigitalOceanのチュートリアルがすごい)。EC2に至ってはCoreOS側でドキュメントを用意している。
ネットワーキング
原則としてDHCPによりIPを自動取得して、SSHで繋がせることを前提としているが、固定IPで使用したい場合はcloud-config.yml
を使用する。
cloud-config.yml
coreos:
units:
- name: static.network
content: |
[Match]
Name=ens*
[Network]
Address=192.168.1.1/24
Gateway=192.168.1.250
DNS=192.168.1.50
秘密鍵認証以外でのログイン
認証回避
あまりないとは思うが、ローカルから入る場合。まず認証を外して入る方法。
- GRUBのboot menuで矢印キーでdefaultでの起動を選択し、
e
を押下してboot optionを開く。 -
load_coreos mout.usr=PARTUUID=$usr_uuid coreos.autologin
になるよう修正してC-x
でbootする。
パスワード認証
パスワード認証でsshしたい場合には、やはりcloud-config.yml
での設定となる。
cloud-config.yml
users:
- name: yourname
passwd: hashed password
ssh-authorized-keys:
- "ssh-rsa AAAA..."
自動アップデートの停止
まだ運用開始して間もないので自分はいまいちわかってないのだが、どうも自動アップデートのときに(当然ではあるが)勝手に再起動もかかるようなので、嫌であれば自動アップデートは停めた方が無難。
cloud-config.yml
coreos:
update:
reboot-strategy: "off"
cloud-config.yml
書き方に関しては公式を見ておけば困らない。
coreos-cloudinit/cloud-config.md at master · coreos/coreos-cloudinit
起動時に自動で読み込まれて反映されるが、手動で再読込したいときは下記コマンド。
$ sudo coreos-cloudinit --from-file /usr/share/oem/cloud-config.yml