2.4. cloud-init にとって重要なファイルとディレクトリー


Red Hat は、cloud-init ユーティリティー、cloud-init モジュール、およびデフォルトのディレクトリーとファイルをサポートしています。ディレクトリーとファイルを使用すると、次のようなタスクを実行できます。

  • cloud-init の設定
  • cloud-init 実行後の設定詳細の確認
  • ログファイルの検証
  • テンプレートの検索

要件とデータソースによっては、設定にとって重要な追加のファイルとディレクトリーが存在する場合があります。

Expand
表2.1 cloud-init ディレクトリーおよびファイル
ディレクトリーまたはファイル説明

/etc/cloud/cloud.cfg

cloud.cfg ファイルには基本的な cloud-init 設定が含まれ、各モジュールが実行するフェーズを確認できます。

/etc/cloud/cloud.cfg.d

cloud.cfg.d ディレクトリーでは、cloud-init の追加ディレクティブを追加できます。

/var/lib/cloud

cloud-init を実行すると、/var/lib/cloud の下にディレクトリーレイアウトが作成されます。このレイアウトには、インスタンス設定の詳細情報を提供するディレクトリーとファイルが含まれます。

/usr/share/doc/cloud-init/examples

examples ディレクトリーには、複数の例が含まれています。これらを使用すると、独自のディレクティブを作成できます。

/etc/cloud/templates

このディレクトリーには、特定のシナリオの cloud-init で有効にできるテンプレートが含まれています。テンプレートは、有効にするための指示を提供します。

/var/log/cloud-init.log

cloud-init.log ファイルは、デバッグに役立つログ情報を提供します。

/run/cloud-init

/run/cloud-init ディレクトリーには、データソースおよび ds-identify スクリプトのログ記録情報が含まれます。

2.4.1. デフォルトの cloud.cfg ファイル

/etc/cloud/cloud.cfg ファイルには、cloud-init の基本設定に含まれるモジュールがリストされます。これらのモジュールは cloud-init のデフォルトモジュールです。要件に応じてモジュールを設定または削除できます。

  • いずれかの cloud-init フェーズでアクションを実行するには、各モジュールを個別に設定し、cloud.cfg ファイルにリストする必要があります。モジュールは、cloud.cfg で指定された順序で実行されます。通常、この順序を変更することはありません。ただし、追加するモジュールが Red Hat によってサポートされている場合は、cloud.cfg にモジュールを追加できます。
  • cloud.cfg ディレクティブは、ユーザーデータによって上書きされることができます。cloud-init を手動で実行する場合、コマンドラインオプションを使用して cloud.cfg を上書きできます。
  • 各モジュールには独自の設定オプションが含まれており、この設定オプションに特定の情報を追加することができます。
  • 設定の機能を最適化するには、モジュール名にダッシュ (-) ではなくアンダースコア (_) を使用します。
  • Red Hat Enterprise Linux (RHEL) 用ファイルのデフォルトの内容は次のとおりです。
users:
 - default

disable_root: true
resize_rootfs_tmp: /dev
ssh_pwauth:   false

mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
ssh_deletekeys:   true
ssh_genkeytypes: ['rsa', 'ecdsa', 'ed25519']
syslog_fix_perms: ~
disable_vmware_customization: false

cloud_init_modules:
  - migrator
  - seed_random
  - bootcmd
  - write_files
  - growpart
  - resizefs
  - disk_setup
  - mounts
  - set_hostname
  - update_hostname
  - update_etc_hosts
  - ca_certs
  - rsyslog
  - users_groups
  - ssh

cloud_config_modules:
  - ssh_import_id
  - locale
  - set_passwords
  - rh_subscription
  - spacewalk
  - yum_add_repo
  - ntp
  - timezone
  - disable_ec2_metadata
  - runcmd

cloud_final_modules:
  - package_update_upgrade_install
  - write_files_deferred
  - puppet
  - chef
  - ansible
  - mcollective
  - salt_minion
  - reset_rmc
  - rightscale_userdata
  - scripts_vendor
  - scripts_per_once
  - scripts_per_boot
  - scripts_per_instance
  - scripts_user
  - ssh_authkey_fingerprints
  - keys_to_console
  - install_hotplug
  - phone_home
  - final_message
  - power_state_change

system_info:
  default_user:
    name: cloud-user
    lock_passwd: true
    gecos: Cloud User
    groups: [adm, systemd-journal]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash
   distro: rhel
   network:
    renderers: ['sysconfig', 'eni', 'netplan', 'network-manager', 'networkd']
  paths:
    cloud_dir: /var/lib/cloud
    templates_dir: /etc/cloud/templates
  ssh_svcname: sshd

# vim:syntax=yaml
Copy to Clipboard Toggle word wrap
  • users はシステムのデフォルトユーザーを指定します。詳細は、Users and Groups を参照してください。
  • disable_root は、root ログインを有効または無効にします。詳細は、Authorized Keys を参照してください。
  • ssh_pwauth は、パスワード認証を許可するように ssh を設定するかどうかを指定します。詳細は、Set Passwords を参照してください。
  • mount_default_fields はマウントポイントを設定します。6 つの値を含むリストを設定する必要があります。詳細は、Mounts を参照してください。
  • ssh_deletekeys は、デフォルトのホスト SSH 鍵を削除するかどうかを指定します。詳細は、Host Keys を参照してください。
  • ssh_genkeytypes は生成する鍵の種類を指定します。詳細は、Host Keys を参照してください。
  • syslog_fix_perms は、すべてのブート段階をログファイルに記録するように cloud-init を設定します。詳細は、usr/share/doc/cloud-init/examples ディレクトリーの cloud-config.txt ファイルを参照してください。
  • disable_vmware_customization は、VMware vSphere のカスタマイズを有効または無効にします。
  • cloud_init_modules: このセクションのモジュールは、ブートプロセスの早い段階で cloud-init サービスが起動するときに実行されるサービスです。
  • cloud_config_modules: これらのモジュールは、初期ブート後の cloud-init 設定中に実行されます。
  • cloud_final_modules: これらのモジュールは、設定が完了した後、cloud-init の最終フェーズで実行されます。
  • default_user は、デフォルトユーザーの詳細を指定します。詳細は、Users and Groups を参照してください。
  • distro: ディストリビューションを指定します。
  • cloud_dir は、cloud-init 固有のサブディレクトリーを含むメインディレクトリーを指定します。詳細は、Directory layout を参照してください。
  • templates_dir はテンプレートが配置される場所を指定します。
  • ssh_svcname は SSH サービスの名前です。

2.4.2. デフォルトの cloud.cfg.d ディレクトリー

cloud-init は、ユーザーが提供および設定するディレクティブに対応します。通常、これらのディレクティブは cloud.cfg.d ディレクトリーに含まれています。

注記

cloud.cfg ファイル内でユーザーデータディレクティブを追加することでモジュールを設定できますが、cloud.cfg を未変更のままにすること (ベストプラクティス) をご検討ください。ディレクティブを /etc/cloud/cloud.cfg.d ディレクトリーに追加します。このディレクトリーにディレクティブを追加することで、今後の変更およびアップグレードを容易にすることができます。

ユーザースクリプトを *.cfg ファイルとして追加する方法の詳細は ユーザーデータ形式 を参照してください。

2.4.3. デフォルトの 05_logging.cfg ファイル

05_logging.cfg ファイルは、ログ情報と cloud-init のデフォルトのログ設定ファイルを設定します。/etc/cloud/cloud.cfg.d ディレクトリーには、このファイルとその他の cloud-init ディレクティブが含まれています。RHEL のファイルのデフォルトの内容は次のとおりです。

## This yaml formatted config file handles setting
## logger information.  The values that are necessary to be set
## are seen at the bottom.  The top '_log' are only used to remove
## redundancy in a syslog and fallback-to-file case.
##
## The 'log_cfgs' entry defines a list of logger configs
## Each entry in the list is tried, and the first one that
## works is used.  If a log_cfg list entry is an array, it will
## be joined with '\n'.
_log:
 - &log_base |
   [loggers]
   keys=root,cloudinit

   [handlers]
   keys=consoleHandler,cloudLogHandler

   [formatters]
   keys=simpleFormatter,arg0Formatter

   [logger_root]
   level=DEBUG
   handlers=consoleHandler,cloudLogHandler

   [logger_cloudinit]
   level=DEBUG
   qualname=cloudinit
   handlers=
   propagate=1

   [handler_consoleHandler]
   class=StreamHandler
   level=WARNING
   formatter=arg0Formatter
   args=(sys.stderr,)

   [formatter_arg0Formatter]
   format=%(asctime)s - %(filename)s[%(levelname)s]: %(message)s

   [formatter_simpleFormatter]
   format=[CLOUDINIT] %(filename)s[%(levelname)s]: %(message)s
 - &log_file |
   [handler_cloudLogHandler]
   class=FileHandler
   level=DEBUG
   formatter=arg0Formatter
   args=('/var/log/cloud-init.log',)
 - &log_syslog |
   [handler_cloudLogHandler]
   class=handlers.SysLogHandler
   level=DEBUG
   formatter=simpleFormatter
   args=("/dev/log", handlers.SysLogHandler.LOG_USER)

log_cfgs:
# Array entries in this list will be joined into a string
# that defines the configuration.
#
# If you want logs to go to syslog, uncomment the following line.
# - [ *log_base, *log_syslog ]
#
# The default behavior is to just log to a file.
# This mechanism that does not depend on a system service to operate.
 - [ *log_base, *log_file ]
# A file path can also be used.
# - /etc/log.conf

# This tells cloud-init to redirect its stdout and stderr to
# 'tee -a /var/log/cloud-init-output.log' so the user can see output
# there without needing to look on the console.
output: {all: '| tee -a /var/log/cloud-init-output.log'}
Copy to Clipboard Toggle word wrap

2.4.4. /var/lib/cloud ディレクトリーのレイアウト

cloud-init が開始されると、インスタンスの詳細と cloud-init 設定を含むディレクトリーレイアウトが作成されます。このディレクトリーには、/scripts/vendor などのオプションのディレクトリーを含めることができます。以下は、cloud-init のサンプルディレクトリーレイアウトです。

/var/lib/cloud/
    - data/
       - instance-id
       - previous-instance-id
       - previous-datasource
       - previous-hostname
       - result.json
       - set-hostname
       - status.json
    - handlers/
    - instance
       - boot-finished
       - cloud-config.txt
       - datasource
       - handlers/
       - obj.pkl
       - scripts/
       - sem/
       - user-data.txt
       - user-data.txt.i
       - vendor-data.txt
       - vendor-data.txt.i
    - instances/
        f111ee00-0a4a-4eea-9c17-3fa164739c55/
          - boot-finished
          - cloud-config.txt
          - datasource
          - handlers/
          - obj.pkl
          - scripts/
          - sem/
          - user-data.txt
          - user-data.txt.i
          - vendor-data.txt
          - vendor-data.txt.i
    - scripts/
       - per-boot/
       - per-instance/
       - per-once/
       - vendor/
    - seed/
    - sem/
       - config_scripts_per_once.once
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る