InfrastructureConstruction:RHEL8:Survey-CloudInit
91.cloud-init調査
設定方針
インフラ構築時の注意点としては、AMI化したインスタンスからリストアする際に、cloud-initによって、設定が初期化されないようにしたい。
| cloud_init_modules: | モジュール頻度 | 抑止対象 | |
|---|---|---|---|
| - disk_setup | シンプルなパーティションテーブルとファイルシステムを設定します。 | インスタンス別 | |
| - migrator | cloud-initの古いバージョンを新しいバージョンに移行します。 | 常時 | |
| - bootcmd | ブートプロセスの初期段階でコマンドを実行します。 | 常時 | |
| - write-files | 任意のファイルを書き込みます。 | インスタンス別 | |
| - growpart | パーティションのサイズを変更して、利用可能なディスク領域を埋めます。 | 常時 | |
| - resizefs | ファイルシステムのサイズを変更し、パーティションで利用可能な領域をすべて使用します。 | 常時 | |
| - set_hostname | ホスト名および完全修飾ドメイン名(FQDN)を設定します。 | 常時 | 〇 |
| - update_hostname | ホスト名およびFQDNを更新します。 | 常時 | 〇 |
| - update_etc_hosts | /etc/hostsを更新します。 | 常時 | 〇 |
| - rsyslog | rsyslogを使用してリモートシステムロギングを設定します。 | インスタンス別 | |
| - users-groups | ユーザーおよびグループを設定します。 | インスタンス別 | 〇 |
| - ssh | SSH、ホスト、および認可されたSSH鍵を設定します。(/etc/ssh、/root/.ssh配下) SSHパスワード認証を有効または無効にします。(ssh_pwauthに基づき/etc/ssh/sshd_config変更) | インスタンス別 | 〇 |
| cloud_config_modules: | モジュール頻度 | 抑止対象 | |
| - mounts | マウントポイントとスワップファイルを設定します。 | インスタンス別 | |
| - locale | システムロケールを設定し、システム全体に適用します。 | インスタンス別 | 〇 |
| - set-passwords | ユーザーパスワードを設定します。 | インスタンス別 | 〇 |
| - rh_subscription | RedHatEnterpriseLinuxシステムを登録します。 | インスタンス別 | |
| - yum-add-repo | yumリポジトリー設定をシステムに追加します。 | 常時 | |
| - package-update-upgrade-install | 起動時にパッケージを更新、アップグレード、またはインストールできます。 | インスタンス別 | 〇 |
| - timezone | システムのタイムゾーンを設定します。 | インスタンス別 | 〇 |
| - puppet | puppetをインストールおよび設定します。 | インスタンス別 | |
| - chef | CA証明書を追加します。 | インスタンス別 | |
| - salt-minion | saltminionをインストール、設定、および開始します。 | インスタンス別 | |
| - mcollective | mcollectiveをインストール、設定、および起動します。 | インスタンス別 | |
| - disable-ec2-metadata | AWSEC2メタデータを有効または無効にします。 | 常時 | |
| - runcmd | 任意のコマンドを実行します。 | インスタンス別 | |
| cloud_final_modules: | モジュール頻度 | 抑止対象 | |
| - rightscale_userdata | cloud-initにRightScale設定フックのサポートを追加します。 | インスタンス別 | |
| - scripts-per-once | スクリプトを1回実行します。 | 1回 | |
| - scripts-per-boot | 起動スクリプトごとに実行します。 | 常時 | |
| - scripts-per-instance | インスタンススクリプトごとに実行します。 | インスタンス別 | |
| - scripts-user | ユーザースクリプトを実行します。 | インスタンス別 | |
| - ssh-authkey-fingerprints | ユーザーのSSH鍵のフィンガープリントをログに記録します。 | インスタンス別 | |
| - keys-to-console | コンソールに書き込むことができるフィンガープリントとキーの制御を許可します。 | インスタンス別 | |
| - phone-home | 起動完了後にリモートホストにデータを投稿します。 | インスタンス別 | |
| - final-message | cloud-initの完了後に出力メッセージを指定します。 | 常時 | |
| - power-state-change | すべての設定モジュールの実行後にシャットダウンを完了し、再起動します。 | インスタンス別 | |
設定案
設定方針の動作となるように/etc/cloud/cloud.cfgを以下の通り設定。
※抜粋した内容なので、cloud_init_modules:、cloud_config_modules:で、それぞれ対応している項目のみコメントアウトします。
preserve_hostname: trueは末尾にでも記載ください。
cloud_init_modules: # - set_hostname # - update_hostname # - update_etc_hosts # - users-groups # - ssh cloud_config_modules: # - locale # - set-passwords # - package-update-upgrade-install # - timezone preserve_hostname: true
動作確認結果
以下の初期設定項目に対して、AMIから起動した場合の動作について調査してみた。
2021/01/03調査項目以外の実行されてもサーバ設定に影響のないと思われる部分は継続調査とする。
| AMIから起動 | ||||
|---|---|---|---|---|
| 項目 | 再起動 | 対策なし | 対策あり | 備考 |
| SELinuxの無効化 | 変化なし | 変化なし | 変化なし | 対象外 |
| ec2-userユーザ削除 | 変化なし | 再設定 | 変化なし | # - users-groups ec2-userユーザが再登録された。(AMIから起動) |
| ec2-userグループ削除 | 変化なし | 再設定 | 変化なし | # - users-groups ec2-userユーザが再登録された。(AMIから起動) |
| /etc/sudoersからec2-user行削除 | 変化なし | 変化なし | 変化なし | # - users-groupsが有効でも追記されない。 |
| /etc/sudoers.d/90-cloud-init-usersから ec2-user行削除 | 変化なし | 再設定 | 変化なし | # - users-groups ec2-user ALL=(ALL) NOPASSWD:ALLが追記された(AMIから起動) |
| rootのSSH鍵変更(/root/.ssh/authorized_keys) | 変化なし | 再設定 | 変化なし | # - ssh authorized_keysに追記された。(AMIから起動)※再作成ではなく追記されるため、無効を推奨 |
| ホスト名変更(hostnamectl –static set-hostname) | 変化なし | 再設定 | 変化なし | # - set_hostname # - update_hostnameだけではNG、preserve_hostname: trueを追記することで無効とできた。 |
| Hostsファイル(/etc/hosts) | 変化なし | 変化なし | 変化なし | # - update_etc_hosts manage_etc_hostsに設定されたfqdn、hostnameに従って更新される。デフォルトでは何もしない |
| ロケール設定(localectl set-locale LANG=ja_JP.UTF-8) | 変化なし | 再設定 | 変化なし | # - locale デフォルトでLANG=en_US.UTF-8に再設定された。(AMIから起動) |
| タイムゾーン(timedatectl set-timezone Asia/Tokyo) | 変化なし | 変化なし | 変化なし | # - timezone timezone:を明示的に記載することで再設定された。(AMIから起動)デフォルトでは何もしない。 |
| sshd_config(PasswordAuthentication) | 変化なし | 再設定 | 変化なし | # - ssh ssh_pwauthの設定によりPasswordAuthenticationが再設定される ssh_pwauth:0はPasswordAuthentication=no、ssh_pwauth:1はPasswordAuthentication=yes |
| sshd_config(PermitRootLogin) | 変化なし | 変化なし | 変化なし | # - sshが有効でも変更されない。 rootのauthorized_keysのcommandでログインを抑止していることから、sshd_config(PermitRootLogin)とは関係ない。 ※/etc/cloud/cloud.cfgをdisable_root: 0とするとrootのSSH鍵変更(/root/.ssh/authorized_keys)のrootログイン制限 no-port-forwarding...command="echo 'Please login as the user...';echo;sleep 10;exit 142"が消えた。 |
InfrastructureConstruction/RHEL8/Survey-CloudInit.txt · 最終更新: by 127.0.0.1