web-dev-qa-db-ja.com

AWSのCloudInitを介してデフォルトユーザー(ubuntu)を変更する方法

AWSでのインスタンスの起動を自動化するためにCloudInitを使用しています。 http://Bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/annotate/head%3A/doc/examples/cloud-config。 txt/usr/share/doc/cloud-initの例ですが、デフォルトのユーザー名(ubuntu、id:1000)を変更する方法はまだわかりません。

デフォルトのubuntuを手動で削除してユーザーを追加するスクリプトを作成できることはわかっていますが、CloudInitが正確に初期設定を自動化するために存在することを考えると、直感に反するようです。

何か案は?

10
Gui Ambros

this によると、CloudInitは、デフォルトの「ubuntu」ユーザーのオーバーライドを含む新しいユーザーを作成するためのカスタムディレクティブをサポートする必要があります。例に従って試してみましたが、動作させることができませんでした。

ただし、CloudInitはユーザーデータスクリプトをサポートしており、スクリプト内でほぼ何でも実行できるため、新しいカスタムディレクティブを学ぶよりも、標準のコマンドを使用することを好みます。

ユーザーデータスクリプトで、デフォルトのユーザー名を「ubuntu」から変更する方法は次のとおりです。この例では、新しいユーザー名「newuser」を使用していますが、これは好みに変更する必要があります。

#!/bin/bash -ex
user=newuser
usermod  -l $user ubuntu
groupmod -n $user ubuntu
usermod  -d /home/$user -m $user
mv /etc/sudoers.d/90-cloudimg-ubuntu /etc/sudoers.d/90-cloudimg-$user
Perl -pi -e "s/ubuntu/$user/g;" /etc/sudoers.d/90-cloudimg-$user

このユーザーデータスクリプトに追加して、インスタンスで必要なその他の初期化と構成を行うことができます。

更新:ユーザーデータスクリプトの使用手順と、Ubuntuの最近のバージョンでCloudInitを使用する方法の両方を説明する拡張記事を書きました:- http://alestic.com/2014/01/ec2-change-username

3
Eric Hammond

これをuserdataに入れることができます:

#cloud-config
system_info:
  default_user:
    name: otherusername
2
Robie Basak