【CoreOS】cloud-config解説〜インストール
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)