CoreOSのcloud-config解説〜インストール
今回はcloud-configの各セクションの解説〜インストール・再設定までをしていきたいと思います。
cloud-config.ymlとは・・・
CoreOSインストール及び設定ファイルを変更する際に必要な基本設定を記述した設定ファイルとなります。
主に取り扱うのがサーバーの環境変数、NIC/IPの設定、etcdクラスタ設定、Unit(systemd)起動設定などが可能となっています。
CoreOSの本体設定ファイルは/var/lib/coreos-install/user_dataにymlデータとして格納されており、CoreOS起動時に「/usr/bin/coreos-cloudinit」が呼び出され
OEM版提供は https://coreos.com/os/docs/latest/notes-for-distributors.html に記載されているOSインストールイメージを各種クラウド、VM向けにカスタマイズされた設定となります。
そのため、user_dataの保持位置が/usr/bin/coreos-cloudinitに記載されている oem版かどうかの振り分けで読み込みファイルが指定されています
では早速各セクションへ
cloud-config
冒頭1行目はかならず#cloud-config と明示的に記載してください。
インストール時にパースエラーが表示されます
#cloud-config
write_files及びhostname
環境変数の設定やインストール時にsystemdのconfig設定、systemdのファイルを生成することが可能なセクションとなっております。
write filesとある通り、実体のあるファイルを書き込みます。
hostname: coreos-dev #/etc/hostnameに書き込まれる値です
write_files:
- path: /etc/environment #環境変数への書き込み
permissions: 0644 #パーミッションの設定
content: | #パイプを入れることで改行を保持
COREOS_PUBLIC_IPV4=192.168.0.xx #環境変数で呼び出したいサービスIPの指定
COREOS_PRIVATE_IPV4=192.168.0.xx #バックヤードIPの指定
- path: /etc/skel/.bash_profile #user作成時、スケルトンの設定
permissions: 0644
content: |
[[ -f ~/.bashrc ]] && . ~/.bashrc
alias ll='ls -la --color=auto'
上記の通り、自分の設定したい項目が可能になります。
.vimrcや~/.git/configなどユーザーごとに書き込み可能です。
coreos:
coreos:セクションはOSの自動アップデート、Units(systemd)の設定を行う重要な要素となります。
coreos:
update:
reboot-strategy: 'off' #OSのアップデート時に自動起動するか
units: #各種unitのサービス起動方法 systemctl由来の設定となります
- name: etcd2.service
command: start
- name: fleet.service
command: start
- name: docker.service
command: start
- name: timezone.service
command: start
- name: 10-static.network
runtime: false
content: |
[Match]
Name=enp0s3 #NICの名称を指定
[Network]
Address=192.168.0.xx/24 #IPアドレスの指定及びサブネットマスク
Gateway=192.168.0.1 #Gatewayの指定
DNS=8.8.8.8 #DNS primaryの指定
DNS=8.8.4.4 #DNS secondaryの指定
ssh_authorized_keys:
- ssh-rsa # coreユーザーに持たせる公開鍵の指定
*NICの指定はMacadressでもMatch対象にすることが可能です
users:
- name: coreuser
passwd: $1$VIyj3wZe$HVVOEAc/H6a6YZGKCBWSD/ # パスワード認証。openssl passwdコマンドを叩いて実行した結果を貼り付け
groups: #所属するgroupの指定
- sudo
- docker
ssh-authorized-keys:
- ssh-rsa #coreuserに持たせる公開鍵
簡単ですがcloud-config.ymlの作成は以上となります。
各セクションで作ったものは以下の形になります。
#cloud-config
hostname: coreos-dev
write_files:
- path: /etc/environment
permissions: 0644
content: |
COREOS_PUBLIC_IPV4=192.168.0.xx
COREOS_PRIVATE_IPV4=192.168.0.xx
- path: /etc/skel/.bash_profile
permissions: 0644
content: |
[[ -f ~/.bashrc ]] && . ~/.bashrc
alias ll='ls -la --color=auto'
coreos:
update:
reboot-strategy: 'off'
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
- name: docker.service
command: start
- name: timezone.service
command: start
- name: 10-static.network
runtime: false
content: |
[Match]
Name=enp0s3 #NICの名称を指定
[Network]
Address=192.168.0.xx/24 #IPアドレスの指定
Gateway=192.168.0.1 #Gatewayの指定
DNS=8.8.8.8 #DNS primaryの指定
DNS=8.8.4.4 #DNS secondaryの指定
ssh_authorized_keys:
- ssh-rsa # coreユーザーに持たせる公開鍵の指定
- name: coreuser
passwd: $1$VIyj3wZe$HVVOEAc/H6a6YZGKCBWSD/ # パスワード認証。openssl passwdコマンドを叩いて実行した結果を貼り付け
groups: #所属するgroupの指定
- sudo
- docker
ssh-authorized-keys:
- ssh-rsa #coreuserに持たせる公開鍵
実際のインストール・編集コマンド
# cloud-configのシンタックスチェック
sudo coreos-cloudinit -validate=true -from-file=./cloud-config.yml
# 初回インストールの場合 デバイスはご自身の環境に合わせてください
sudo coreos-install -d /dev/sda -C stable -c ./cloud-config.yml
sudo reboot
# cloud-configの再読み込み おまじないでuser_dataにコピー
sudo coreos-cloudinit -from-file=./cloud-config.yml
sudo cp cloud-config.yml /var/lib/coreos-install/user_data
sudo reboot
設定ファイルの解説〜インストールは以上です。
次回は今回端折った、etcd2の細かい設定記述について踏み込んでいきたいと思います。
参考:
Using Cloud-Config
Notes for Distributors
前回記事ご紹介:
Mac + Virtualbox + CoreOS + etcd2 + fleet の基本設定(1)
Mac + Virtualbox + CoreOS + etcd2 + fleet の基本設定(2)
Mac + Virtualbox + CoreOS + etcd2 + fleet の基本設定(完)