rembik.users
Ansibleロール: ユーザー
このロールは、システム上のユーザーとそのグループを管理します。
要件
- パッケージが含まれるリポジトリへのアクセス(おそらくインターネット上にあります)。
- 最新のAnsibleバージョン(最近の2つの安定版メジャーバージョンでテスト済み)。
以下のロールをインストールすることで、すべての要件が満たされることを確認できます。コマンドは ansible-galaxy install -r requirements.yml
です:
---
- rembik.bootstrap
ロール変数
これらのデフォルト値は defaults/main.yml
に設定されています:
---
# ユーザー用のデフォルトファイル
# 各ユーザーにグループを作成するかどうかのデフォルト値
# それをプライマリグループとする
users_group_per_user: yes
# グループが作成されない場合、すべてのユーザーが属する
# デフォルトのプライマリグループ
users_group: users
# アカウント作成時またはホームディレクトリが存在しない場合に
# ユーザー用のホームディレクトリを作成するかどうかのデフォルト値
users_create_home: yes
# sudoがyesに設定されている場合、指定がないときのデフォルトのsudoオプション
users_sudo_options: "ALL=(ALL) NOPASSWD: ALL"
# 指定がないときにユーザーのデフォルトシェル
users_shell: /bin/bash
# 生成されたSSHキーを探す/保存するローカルディレクトリ
users_ssh_key_dir: ssh_keys
# 作成、削除、または変更するユーザーのリスト
users: []
# 作成または削除するユーザーグループのリスト
users_groups: []
これらの変数の値を置き換える良い場所は、group_vars/all
または group_vars/group_name
です。
特定のマシンにのみ定義されたユーザーとグループが存在するようにできます。
users
変数には、作成、削除、または変更するユーザーのリストが含まれています。
このリスト内の各ユーザーは辞書として定義されています。
各ユーザー辞書には以下のパラメーターが利用可能です:
ユーザーパラメーター | 選択肢 / デフォルト | コメント |
---|---|---|
name 必須 |
作成、削除、または変更するユーザーの名前。 | |
state |
選択肢:
|
アカウントが存在すべきかどうか。状態が異なる場合はアクションを取ります。 |
comment |
ユーザーアカウントの説明(GECOS)を設定します(オプション)。 | |
uid |
ユーザーのUIDを設定します(オプション)。 | |
group |
デフォルト: user.name |
ユーザーのプライマリグループをオーバーライドします(オプション)。 |
gid |
users_group_per_user=yes の場合のみ影響。ユーザーのプライマリグループの異なるGIDを設定します(オプション)。 |
|
groups |
ユーザーが追加されるグループのリスト。空文字列に設定すると、このユーザーはプライマリグループを除くすべてのグループから削除されます。 | |
append |
選択肢:
|
yesの場合、groups に指定されたグループにユーザーが追加されます。noの場合、groups に指定されたグループのみにユーザーが追加され、他のグループからは削除されます。 |
password |
デフォルト: ! | ユーザーのパスワードをこの暗号化された値に設定(オプション)。そうでない場合、ユーザーアカウントはロックされます。 |
update_password |
選択肢:
|
alwaysは、異なる場合にパスワードを更新します。on_createは、新たに作成されたユーザーのみパスワードを設定します。 |
create_home |
選択肢:
|
users_create_home からの値をオーバーライドする場合があります(オプション)。noに設定しない限り、アカウント作成時またはホームディレクトリが存在しない場合にホームディレクトリが作成されます。 |
home |
デフォルト: /home/user.name |
ユーザーのホームディレクトリを設定します(オプション)。 |
shell |
デフォルト: /bin/bash | ユーザーのシェルをオーバーライドします(オプション)。 |
profile |
ユーザーのプロファイルにカスタムブロックを設定します(オプション)。user.create_home=yesが必要です! | |
cron |
選択肢:
|
yesの場合、ユーザーがcrontabファイルを作成、編集、表示、または削除を許可します。そうでない場合、crontabファイルの変更は許可されません。 |
sudo |
選択肢:
|
yesの場合、ユーザーのsudoオプションを設定します。そうでない場合、ユーザーのsudoオプションは削除されます。 |
sudo_options |
デフォルト: ALL=(ALL) NOPASSWD: ALL | ユーザーのsudoオプションをオーバーライドします(オプション)。 |
ssh_key |
ユーザーの認可されたSSHキーのリスト(公開SSHキーを直接含み、改行なし)。空リストまたは空文字列に設定すると、すべてのユーザーの認可されたSSHキーが削除されます。user.create_home=yesが必要です! | |
generate_ssh_key |
選択肢:
|
noに設定されない限り、ローカルディレクトリ users_ssh_key_dir にSSHキーが存在しない場合、ユーザーのSSHキー対を生成します。その後、認可されたSSHキーに追加し、ユーザーにSSHキー対を展開します。user.create_home=yesが必要です! |
remove |
選択肢:
|
user.state=absent のみに影響し、ユーザーに関連するディレクトリを削除しようとします。動作は userdel --remove と同じです。詳細についてはmanページを確認してください。 |
force |
選択肢:
|
user.state=absent にのみ影響し、サポートされているプラットフォームのユーザーと関連するディレクトリの削除を強制します。動作は userdel --force と同じです。詳細についてはmanページを確認してください。 |
users_groups
変数には、作成または削除するユーザーグループのリストが含まれています。各グループは辞書として定義されています。
各グループ辞書には以下のパラメーターが利用可能です:
グループパラメーター | 選択肢 / デフォルト | コメント |
---|---|---|
name 必須 |
管理するグループの名前。 | |
state |
選択肢:
|
リモートホストにグループが存在すべきかどうか。 |
gid |
グループに設定するオプショナルなGID。 |
依存関係
一般的に、このロールには依存関係はありません。推奨されるロール rembik.bootstrap
と組み合わせると、このロールは必要に応じて定義された bootstrap_user
を使用してリモートホストに接続し、このロールタスクを実行します。
例プレイブック
この例は molecule/playbook.yml
からのものです:
---
- name: コンバージョン
hosts: all
gather_facts: no
become: yes
roles:
- role: rembik.bootstrap
- role: rembik.users
vars:
users_ssh_key_dir: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}/ssh_key"
users_groups:
- name: users
- name: bin
users:
- name: nouser
comment: No User
create_home: no
- name: molecule
comment: Ansible Test User
uid: 2001
home: /home/test
cron: yes
sudo: yes
generate_ssh_key: yes
- name: administrator
comment: Administrator
uid: 2002
groups: [users]
cron: yes
sudo: yes
profile: |
alias ll='ls -lah'
alias cp='cp -iv'
ssh_key:
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABWBILQeRSYYmGea/WIf6kd... [email protected]"
- name: user
comment: User
uid: 2003
groups: [users]
shell: /bin/sh
generate_ssh_key: yes
ロールテスト
このロールは、以下のLinuxディストリビューションに対して定期的にテストされています:
アスタリスクはビルドが失敗しても許可されており、実験的ビルドとしてマークされます。
貢献
問題を見つけた場合は、GitHubプロジェクトのイシューページに登録するか、このガイドラインに従ってコードを貢献することを検討してください。
ライセンス
Apache-2.0