cans.user-make
cans.user-make
ターゲットホストにユーザーを作成するためのAnsibleロール
使い方
作成する各ユーザーは、以下のようにアイテムとして定義する必要があります:
usermake_users:
- name: "johndoe" # 必須
gecos: "John Doe,,," # デフォルト: 省略
groups: "sudo,adm" # デフォルト: 省略
passwordless_sudo: true # デフォルト: usermake_sudoer_passwordless
ssh_key_create: false # デフォルト: true
ssh_key_upload_to_ec2: true # デフォルト: usermake_ssh_key_upload_to_ec2
ssh_key_download: true # デフォルト: usermake_ssh_key_download
sudoer: true # デフォルト: usermake_sudoer
system: false # デフォルト: false
upload_my_key: false # デフォルト: usermake_upload_ssh_key_to_target
remove: false # デフォルト: 省略またはusermake_remove
home_dir: "/home/jdoe" # デフォルト: usermake_home_base_dir/name
各変数の意味は以下の通りです:
name
: 新しいユーザーのログイン名;gecos
: 新しいユーザーに付加するGECOSデータ;groups
: ユーザーが所属すべきグループのリスト。ここでリストされているグループは事前に存在している必要があります。passwordless_sudo
:true
に設定すると、ユーザーはパスワードを入力せずに他のユーザーとして操作できます;remove
: アイテムの状態が'absent'
の場合、そのユーザーのアカウントが削除されるときに関連ファイルも削除するかどうか (遅くなる場合がある);ssh_key_create
: 新しいユーザーのためにSSHキーのペアを生成するかどうか;ssh_key_download
: 新しいユーザーの生成されたSSH公開鍵をローカルマシンのフォルダーにダウンロードするかどうか;ssh_key_upload_to_ec2
: 新しいユーザーの生成されたSSH公開鍵をAWS EC2のキーマネジメントシステムにアップロードするかどうか;state
: ユーザーを作成あるいは削除するかどうかpresent
またはabsent
の値で指定 (デフォルト:present
);sudoer
:true
に設定すると、ユーザーにsudo権限が与えられる;system
: ユーザーをシステムユーザーとして設定するかどうか (低いUID番号とログイン無効);upload_my_key
: ローカルのSSHキーをターゲットホストにアップロードするかどうか。
これらのすべての値は、定義されている場合、以下のロール変数のデフォルト設定を上書きします。
このロールができないことは?
新しいグループにユーザーを追加することはできません。このロールはユーザーのグループを指定されたグループリストで上書きします。
要件
このロールには特別な要件はありません。
ロール変数
このロールで使用されるすべての変数名にはusermake_
というプレフィックスが付けられています。
usermake_home_base_dir
: ユーザーのホームディレクトリを作成するパスを上書きさせる (デフォルト:/home
);usermake_remove
: ユーザーが削除されるとき、ホームディレクトリを削除するかどうか (デフォルト: false);usermake_ssh_key_create
: 新しいユーザーのためにSSHキーのペアを標準で作成するかどうか (デフォルト: true);usermake_ssh_key_download
: 作成されたユーザーのSSHキーをローカルにダウンロードするかどうか;usermake_ssh_key_download_dir
: ダウンロードした公開SSHキーを保存するディレクトリ (デフォルト:{{ playbook_dir }}/collected-keys
);usermake_ssh_key_download_dir_mode
: ダウンロードした公開SSHキーを保存するディレクトリのモード (デフォルト: 0750);usermake_ssh_key_passphrase
: SSHプライベートキーを暗号化するためのデフォルトのパスフレーズ。これに依存することは推奨されません。別の方法でパスフレーズを提供するのが良いです (デフォルト:omit
[パスフレーズなし]);usermake_sudoer
: 作成されたユーザーがデフォルトでsudo権限を持つべきか (デフォルト: false); 注: この権限をユーザーに与える前に、ディストリビューションがsudo
またはsudoers
グループを持っていることを確認してください。現在のメカニズムは、ディスクイメージ上で高権限ユーザーの事前設定に使われることを意図しています。詳細なユーザーまたはアプリケーションの権限管理のためではありません;usermake_sudoer_dir
: ターゲットマシンにおけるsudoルールファイルを置くディレクトリ (デフォルト:/etc/sudoers.d
);usermake_system
: 作成されたユーザーがデフォルトでシステムユーザーであるべきか (デフォルト: false);usermake_upload_ssh_key_to_target
: ローカルユーザーのSSH公開鍵をターゲットホストにアップロードするかどうか。次のタスクやロールでそのユーザーとして作業する予定がある場合に便利です (デフォルト: true);usermake_upload_ssh_key_file
:usermake_upload_ssh_key_to_target
またはユーザーアイテムのupload_my_key
の値がtrue
の場合、アップロードするために公開鍵を読み取るファイルを指します (デフォルト:~/.ssh/id_rsa.pub
);usermake_user_groups
: 作成されたユーザーをデフォルトで割り当てるグループ (デフォルト:omit
);usermake_users
: 作成するユーザーのリスト、上記のように定義されたアイテムとして (デフォルト:[]
);
依存関係
このロールには依存関係はありません。
例プレイブック
いくつかのユーザーを作成する:
- hosts: servers
roles:
- role: cans.user-make
usermake_users:
- name: "alice"
groups: "sudo,adm"
system: "no"
ssh_key_create: "yes"
- name: "bob"
gecos: "Bob no sponge,,,"
system: "yes"
ssh_key_create: true
いくつかのユーザーを削除する:
- hosts: servers
roles:
- role: cans.user-make
usermake_users:
- name: "alice"
state: "absent"
remove: true # ユーザーの関連ファイルをすべて削除
- name: "bob"
state: "absent"
このロールの多くの使用例については、tests/test.yml
に見てみると良いでしょう。
TODO
AWSキーボードアップロードの統合テストを実装する。
ライセンス
GPLv2
著者情報
Copyright © 2017, Nicolas CANIART.