cloud-init に関する FAQ
Red Hat Enterprise Linux Atomic Host は cloud-init を使用して、インストールと最初の起動時にシステムを設定します。当初、cloud-init は、クラウドインスタンスの早期初期化を提供するために作成されました。Red Hat Enterprise Linux Atomic Host では、仮想マシンのインストールに使用できます。アップストリームのドキュメントがオンラインで利用できます。
注意: マシンを最初に起動した時だけ cloud-init を実行します。ファイルで構文エラーが発生したため cloud-init に失敗した場合や、ユーザーの信用情報など必要なディレクティブがすべて含まれていない場合は、新しいインスタンスを作成して起動する必要があります。新しい cloud-init ファイルで失敗したインスタンスを再起動しても有効ではありません。
以下は、cloud-init で共通タスクを行う例となります。
-
cloud-init にユーザーを作成するには
ユーザーを cloud-init に作成するには、meta-data および user-data ファイルを作成し、ISO イメージにパッケージ化します。
-
ディレクトリを作成し、そのディレクトリに移動します。
$ mkdir clouinitiso $ cd cloudinitiso
-
meta-data という名のファイルを作成します。以下の行を meta-data というファイルに追加します。
instance-id:Atomic0 local-hostname: atomic-00
-
user-data という名前のファイルを作成します。以下の行を user-data ファイルに追加します。
#cloud-config password: atomic chpasswd:{expire:False} ssh_pwauth:True ssh_authorized_keys: - ssh-rsa AAA...SDvZ user1@domain.com
注意: 上述の user-data ファイルの最終行は、ssh 公開キーです。SSH 公開キーは ~/.ssh/id_rsa.pub に保存されています。
-
meta-data および user-data を含む ISO イメージを作成します。
# genisoimage -output atomic0cidata.iso -volid cidata -joliet -rock user-data meta-data
-
atomic0cidata.iso という名前のファイルが生成されます。Red Hat Enterprise Linux Atomic Host をインストールするマシンにこのファイルを添付して、ユーザー名を "cloud-user" にし、パスワードは "atomic" にします。
-
-
cloud-user のパスワードの有効期限を設定して、最初のログイン時に変更するように設定するには
cloud-user に、最初のログイン時にパスワードを変更するように設定するには、user-data ファイルで、
chpasswd: {expire: False}
行をchpasswd: {expire: True}
に変更します。#cloud-config password: atomic chpasswd:{expire:True} ssh_pwauth:True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com
password および chpasswd は、特に指定がない限りデフォルトユーザーで操作するため有効になります。
注意: これはグローバル設定です。True に設定すると、作成したすべてのユーザー (以下を参照) でパスワードを変更する必要があります。
-
デフォルトのユーザー名を変更するには
デフォルトのユーザー名を cloud-user から変更するには、
user: username
行を user-data ファイルに追加します。#cloud-config user: username password: atomic chpasswd:{expire:False} ssh_pwauth:True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com
-
root パスワードを設定するには
root パスワードを設定するには、user-data ファイルの
chpasswd
セクションにユーザーリストを作成する必要があります。リストのフォーマットは以下のとおりです。空白文字は重要です。リストに空白を持つパスワードを設定するため、空白文字はコロン (:) のいずれの側にも追加しないでください。この方法でユーザーパスワードを設定する場合は、すべてのパスワードをこのセクションに設定する必要があります。つまり、トップのセクションからこのセクションにpassword:
行を移動する必要があります。#cloud-config ssh_pwauth:True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com chpasswd: list:| root:password cloud-user:atomic expire:False
-
最初のシステム設定時にユーザーをさらに追加したり、ユーザーオプションを設定したりするには
ユーザーは、user-data ファイルの users セクションに作成され説明されます。このセクションを追加した場合は、デフォルトユーザーのオプションを設定する必要があります。
users セクションの最初のエントリーは
default
であるため、デフォルトユーザー cloud-user は、その他のユーザーとともに作成されます。デフォルトの行を削除すると、cloud-user は作成されません。#cloud-config users: - default - name: foobar gecos:User N. Ame selinux-user: staff_u groups: users,wheel ssh_pwauth:True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.com chpasswd: list:| root:password cloud-user:atomic foobar:foobar expire:False
注意: デフォルトでは、se-linux-user 値がない場合、ユーザーには unconfined_u とラベルが追加されます。
注意: この例では、foobar ユーザーを 2 つのグループ (
users
およびwheel
) に保存します。cloud-init 0.7.5 以降では、グループリストに空白文字に使用することはサポートされていません。詳細は Bug #1126365 を参照してください。 -
first boot コマンドを実行するには
user-data ファイルの
runcmd
およびbootcmd
セクションを使用して、起動時および初期化時に任意のコマンドを実行できます。bootcmd
セクションは、初期化プロセスの早いうちに実行されます。runcmd
セクションは、init によるプロセスの最後のほうで実行されます。これらのコマンドはその後の起動のために保存されず、最初の初期化起動時にのみ実行されます。#cloud-config users: - default - name: foobar gecos:User N. Ame groups: users chpasswd: list:| root:password fedora:atomic foobar:foobar expire:False bootcmd: - echo New MOTD >> /etc/motd runcmd: - echo New MOTD2 >> /etc/motd
-
さらに sudoer を追加するには
ユーザーは、
sudo
およびgroups
エントリーを、以下に示す user-data ファイルのusers
セクションに追加すれば sudoer として設定できます。#cloud-config users: - default - name: foobar gecos:User D. Two sudo:["ALL=(ALL) NOPASSWD:ALL"] groups: wheel,adm,systemd-journal ssh_pwauth:True ssh_authorized_keys: - ssh-rsa AA...vz user@domain.com chpasswd: list:| root:password cloud-user:atomic foobar:foobar expire:False
-
静的なネットワークを設定するには
network-interfaces
セクションを meta-data ファイルに追加します。このセクションには、ネットワーク設定オプションの通常のセットが含まれます。cloud-init で発生している現在のバグのせいで、静的なネットワーク設定は自動的に開始しません。代わりに、デフォルトの DHCP 設定がアクティブになったままとなります。回避策としては、bootcmd ディレクティブからネットワークインターフェイスを手動で停止して再起動することが推奨されます。
network-interfaces:| iface eth0 inet static address 192.168.1.10 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.254 bootcmd: - ifdown eth0 - ifup eth0
-
cloud-user を削除し、root 以外のユーザーを持たないようにするには
root ユーザーだけを作成するには、user-data ファイルの
users
セクションで、root のエントリーを作成します。このセクションは、name
オプションと同様シンプルです。users: - name: root chpasswd: list:| root:password expire:False
また、任意で、以下のように、root ユーザーに SSH キーを設定できます。
users: - name: root ssh_pwauth:True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.com
Comments