1it.users
Ansibleのユーザーロール
このロールは、システム上のユーザーアカウントを簡単に管理することを可能にします。v0.2
以降、特定のユーザーアカウントを作成する場所を制御できるようになりました - ターゲットホストグループ(例:インベントリグループ、EC2タグ、その他のクラウドラベル)を設定することで。
変更履歴
0.2.1 - 2021-11-08
追加:
ユーザーグループの削除
ユーザーホームディレクトリの削除 - delete_homedirs
0.2 - 2021-11-08
変更:
target_hosts
は必須になりました。すべてのホストにこのユーザーを作成したい場合は、各ユーザーエントリにtarget_hosts: ['all']
を追加してください。
削除:
互換性の問題によりusers_keys
が削除されました。おそらく全く使用されていませんでした。
0.1 - 2021-10-27
修正:
groups
はデフォルトで省略されるべきです。他のデフォルト値も。
追加:
target_hosts
の初回試行(動作していません)。
変更:
users.state
は必須です。
要件
- Ansible 2.9.0以上
変数
このロールに渡すことができる変数とその簡単な説明は以下の通りです。
# システムに追加するユーザーアカウントのリスト
users: []
# すべてのユーザーアカウントに与えられるデフォルトシェル
users_default_shell: '/bin/bash'
# 新しいユーザーアカウントが追加されるデフォルトグループ
users_default_group: 'users'
# 各ユーザーごとに固有のグループを作成するか、上記で定義されたデフォルトグループに全ユーザーをまとめるかのデフォルトフラグ
users_create_group_per_user: true
# ユーザーホームディレクトリを作成するかどうかのデフォルトフラグ
users_create_homedir: true
# デフォルトのグループリスト(作成されるグループ)
users_group_list: []
# ユーザー削除時のホームディレクトリ削除 - デフォルトで無効
delete_homedirs: false
ユーザーリストの構造
# システムに追加するユーザーアカウントのリスト
users:
# 最初のユーザーは必須属性のみを定義
- username: 'johndoe' # Linuxのユーザー名
uid: 1000 # OPTIONAL ユーザーID(一般的に非システムユーザーは1000から始まる)
authorized: [] # アカウントに追加する公開SSHキーのリスト
target_hosts: ['dev'] # ユーザーアカウントが存在すべきインベントリホストグループのリスト
state: 'present' # REQUIRED アカウントの状態
# 二人目のユーザーはすべての属性を定義
- username: 'janedoe' # Linuxのユーザー名
uid: 1001 # OPTIONAL ユーザーID(一般的に非システムユーザーは1000から始まる)
authorized: # アカウントに追加する公開SSHキーのリスト
- 'ssh-rsa key_string1'
- 'ssh-ecdsa key_string2'
name: 'Jane Doe' # アカウント作成時のコメントとして使用
system: false # アカウントがシステムユーザーかどうかを指定
group: 'jdoe' # ユーザー固有のプライマリグループ
groups: # 追加のユーザーグループ
- 'admin'
- 'developers'
shell: '/bin/bash' # アカウントのデフォルトシェル
home: '/home/jdoe' # アカウントの代替ホームディレクトリ
generate_key: true # アカウント用に新しいSSHキーを生成
state: 'present'
# 無効化されたアカウント
- username: 'bob'
uid: 1003
authorized: []
target_hosts: ['dev']
state: absent
プレイブックの例
システム管理ユーザーとデプロイユーザーを作成:
--- # このプレイブックは共通のユーザーをマシンに設定します - name: すべてのノードに共通ユーザーを適用 hosts: all roles: - { role: users, users: - username: 'sa' authorized: ['ssh-rsa key_string'] name: 'システム管理者' groups: ['admin'] target_hosts: - dev - stage - prod state: 'present' - username: 'ansible' name: 'Ansibleサービスアカウント' generate_key: true authorized: [] state: 'present' # 注意 - target_hostsを定義しないとユーザーは作成されません。 # デフォルトで全ホストにユーザーを作成するには['all']を使用します。 target_hosts: ['all'] - username: 'johndoe' name: 'John Doe' generate_key: true authorized: [] target_hosts: ['dev'] state: 'present' }
注意: 追加または削除するユーザーのリストを含む変数を作成する際は、group_vars/all
から始めるのが最適です。特定のマシンにだけユーザーを設定したい場合は、group_vars/groupname
やhost_vars/hostname
を試してください。target_hosts
はホストグループのリストであり、AWS/GCP/その他のクラウドでの動的インベントリのタグであることもできます。
依存関係
ライセンス
MIT。