cloud-init
概要
cloud-initはインスタンスの初期化を自動化するツール
EC2はインスタンスの起動時にcloud-initでユーザーの作成などの初期化を行っている
1行目に#cloud-configを記述するのはマスト
設定項目
code:cloud-init.tpl
## (前半)実行モジュールのパラメータを指定する
### defaultで指定したユーザーを作成
users:
- default
### sshでのrootでのログインを無効にする
disable_root: 1
### sshのパスワードログインを無効化
ssh_pwauth: 0
### locale設定ファイルのパスを指定
locale_configfile: /etc/sysconfig/i18n
### mountsを設定(fstabを設定するエントリ)するときのデフォルトの値(指定しないとこの値が設定される)
mount_default_fields: ~, 'auto', 'defaults,nofail', '0', '2'
### /devが存在しない場合、ディレクトリを作成する(ソース読んだのですが自信はないです)
resize_rootfs_tmp: /dev
### sshの「/etc/ssh/ssh_host_*key*」を削除※default無効
ssh_deletekeys: 0
### 「ssh-keygen -t」で利用するキータイプ(rsa,dsa,ecdsa)を指定
ssh_genkeytypes: ~
### 「/var/log/cloud-init.log」のユーザー:グループを指定
syslog_fix_perms: ~
## (後半)実行するモジュールを指定する(前半戦)
cloud_init_modules:
### ブートプロセス時にコマンドを実行
#### コマンドを指定する場合の指定例
####- echo 192.168.1.130 us.archive.ubuntu.com > /etc/hosts - bootcmd
### ファイル書き込み
- write-files
### /のファイルシステムを拡張する
- resizefs
### ホスト名を設定する(/etc/sysconfig/networkのホスト名を書き換える)
- set_hostname
### ホスト名を設定する(/etc/hostnameのホスト名を書き換える)※起動時に毎回実行されるはずだがRHEL6.5では動いてない模様?
- update_hostname
### ホスト名を設定する(テンプレートでの指定やlocalhost等の指定が可能)
- update_etc_hosts
### rsyslogの設定変更を行う(デフォルトでは何もしない)
- rsyslog
### ユーザー・グループの作成を行う(デフォルトではdefaultで指定されているec2-userを作成する)
- users-groups
### sshの設定を行う(デフォルトではrootログイン、パスワードログインの無効化)
- ssh
cloud_config_modules:
### fstabの設定を行う(エフェメラル等やswapの設定を行うがrhelの場合デフォルトでは何もしない)
- mounts
### localeの設定を行う(デフォルトはen_US.UTF-8に初期化される)
- locale
### ユーザーのパスワードを設定(デフォルトは何も実施しない)
- set-passwords
### タイムゾーンの設定(デフォルトでは何も実施しない)
- timezone
### 構成管理ツールの設定と起動を行う。デフォルトでは何も実施しない
- puppet
- chef
- salt-minion
- mcollective
### メタデータアクセスを拒否ができないように設定する(デフォルトfalseでメタデータにアクセスできる状態)
- disable-ec2-metadata
### 指定したコマンドを実行する(デフォルト何もしない)
- runcmd
cloud_final_modules:
### rightscaleをユーザーデータで設定
- rightscale_userdata
### 一回だけスクリプトを実行(/var/lib/cloud/scripts/per-onceのスクリプト)
- scripts-per-once
### 起動毎に実行(/var/lib/cloud/scripts/per-bootのスクリプト)
- scripts-per-boot
### AMIからインスタンス作成時の初回起動時だけスクリプトを実行(/var/lib/cloud/scripts/per-instanceのスクリプト)
- scripts-per-instance
### AMIからインスタンス作成時の初回起動時だけスクリプトを実行(/var/lib/cloud/scripts/vendorのスクリプト)
- scripts-user
### sshフィンガープリントをconsoleに出力する
- ssh-authkey-fingerprints
### ssh時のフィンガープリントを出力をする、しないの制御をする(デフォルトでは何もしない)
- keys-to-console
### boot完了時に指定したURLにリクエストを投げる※デフォルトでは何もしない
- phone-home
### 完了ログをconsoleに出力する
- final-message
system_info:
### ディストリビューションを指定
distro: rhel
### 初回起動時に作成するユーザーを指定
default_user:
name: ec2-user
### cloud-initのディレクトリ設定
paths:
cloud_dir: /var/lib/cloud
templates_dir: /etc/cloud/templates
### sshdの再起動を行う
ssh_svcname: sshd
# vim:syntax=yaml
### cloud-iniが利用するデータソースを指定(EC2の場合はmetadataを利用するようになる)
datasource:
Ec2:
timeout: 10
max_wait: 30
参照