bodsch.users
Ansibleロール: users
Linuxで複数のユーザーを管理するためのロールです。
ユーザーの追加、パスワードの変更、ユーザーアカウントのロック/アンロック、ユーザーごとのsudoアクセスの管理、sshキーの追加を行います(sshkeyベースの認証用)。
対応OS
以下のOSでテスト済みです。
- Arch Linux
- Debian系
- Debian 10 / 11 / 12
- Ubuntu 20.04 / 22.04
RedHat系のシステムは公式にサポートされていません!動作する可能性はありますが、保証はありません。
パスワードの生成方法
- Ubuntuの場合 -
whois
パッケージをインストールして使用
mkpasswd --method=SHA-512
- RedHatの場合 - Pythonを使用
python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'
デフォルト設定
---
users_output: "compact" # または、より詳細な出力が必要な場合は 'full'
users: []
ユーザー設定
パラメータ | デフォルト | 説明 | |
---|---|---|---|
username |
必須 | ユーザー名(スペース不可) | |
uid |
任意 | ユーザーのIDの数値 | |
state |
必須 | present / absent / lock |
|
password |
任意 | sha512で暗号化されたパスワード。未設定の場合、パスワードは ! に設定される |
|
update_password |
always |
任意 | always / on_create 。注意: always の場合、パスワードが新しい値に変更される。既存のユーザーに対して always を使用する場合は、必ずパスワードを設定していることを確認すること。 |
comment |
任意 | フルネームと部門またはアプリケーションの説明(設定するべきです!) | |
groups |
任意 | ユーザーが追加されるグループのカンマ区切りリスト(追加されます)。 グループが存在しない場合は、特定のサーバー上で作成されます。プライマリグループは変更されません(プライマリグループは変更されません)。 |
|
shell |
/bin/bash |
任意 | ログインシェルへのパス |
authorized_key_directory |
- |
任意 | 中央に保存されたsshキーのパス(例: /etc/ssh/authorized_key ) |
authorized_keys |
[] |
任意 | authorized_keys に保存される承認済みキーのリスト。$HOME/.ssh/authorized_keys または authorized_key_directory に保存される |
ssh_keys |
任意 | 様々なsshキーの辞書。静的な公開鍵または秘密鍵ファイルを展開するために使用できます。 | |
sudo |
{} |
任意 | sudo設定の辞書(下記参照) |
remove |
False |
任意 | state=absent にのみ影響します。ユーザーに関連付けられたディレクトリを削除しようとします。 |
ssh_keys
静的な公開鍵または秘密鍵をAnsible経由でデプロイする必要がある場合は、ここで定義できます。データはプレーンテキストまたはbase64エンコードされた文字列として利用できます。
(ここで実際のSSHキーを使用していると思う人がいるなら…すみません、違います!)
users:
- username: foo-bar
ssh_keys:
id_ed25519: |
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAXYpRZio
BDw+o+oic9MwrqAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIK6jjUFopFO9kV4G
WIkR0gNzpoaOgpwFFRLWKcpeG8THAAAAkHtt03xiYPgAEc7T0nEtnCjt67sN6msNP2Nxgv
+Fd8BANdzbYFzsMoQ45Ldja2gsOt1KAecwO+xY+5BRCA0huWCTHwbd7Y6BqCKLEpHwXWG1
UI4GzDt6+hD1LZSbYTFpi+LhiQ1PlrmG5eRQOXzlEAY6AziN7gajlQRsOxkmTW98DuVzWw
S/KVZZ/wwzyaIPYQ==
-----END OPENSSH PRIVATE KEY-----
id_ed25519.pub: ssh-ed25519 AAAAC3NzaC1lYDI1NTE5AAAAIL+LmfwIhn8kxZcyusbcITtwsAOnI1I/d/c40XnGBg7J bar.foo <[email protected]>
id_rsa: "LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KaCtmZVZZQVg1Sm1EM2QvdEx6UkxUbTBmUm5CL1NVTDFFQ21jK1gwZ3dLL3UvUG4zU2RJOE0zVk9aMUJkUWJNNjkrU2oyYgozLzRRN1NsbUZObEVXaG43M2VHUFhTTTBLU1VUcGk5bFk0dVJndEhDdGYrejhsaVNBNFlvRlJKcTcxYi9JWHZ1SkUxVks1Ck5jQ3dSUFZRSGRUc0VEdG52M09lNDdFbW9XWFgzOUdFazRoQWNqV1BoeVRvZWFvSWNYTXZDbkVTMXp6SS8wQ2RsVUo2TGEKU1p4Njk2aFE0a1dPZ2k5UE0vVERHdytBRDZGbGVNTUtTK0FtalNuWHBYTjMwTzVacTFuMEhEWGd4ak55VVZ4SjdEVUNDMgpwZ2p1RHpPdDF3QUFBOGhNeC9oMlRNZjRkZ0FBQUFkemMyZ3Rjbk5oQUFBQkFRQytDRGdQYzllZnhvcWZQKzNoc0FBOFMvCm1Kb04wR2xwc2haNEZNNnVrWFdWc3RTQS9ONmJPSDU5NVZnQmZrbVlQZDMrMHZORXRPYlI5R2NIOUpRdlVRS1p6NWZTREEKcis3OCtmZEowand6ZFU1blVGMUJzenIzNUtQWnZmL2hEdEtXWVUyVVJhR2Z2ZDRZOWRJelFwSlJPbUwyVmppNUdDMGNLMQovN1B5V0pJRGhpZ1ZFbXJ2VnY4aGUrNGtUVlVyazF3TEJFOVZBZDFPd1FPMmUvYzU3anNTYWhaZGZmMFlTVGlFQnlOWStICklqNTlnck8ydldDa3JSTTd1Vk9sTUEzSnQ2ZDVkSDE4RDN5Vk5HWHB5dnVROUxXWUxWUGdvMlVUV0lVV3VHR2djVXNydVYKVm8xYm1HUTBsSnlQTkpVUmdUTnJ4dGd0emdEdUdoWWZGMzU2QVJkaHVUeXhBQUFBZ1FDT2hlMHF1bzhlakphalM0dUxydApqTkg2b1FNaWF3NGxMMkJtTWlMc3I5STdVWE5BMXZhRzl6R2J6Ym5wS3pSV0VKMWIxRExUWm42bnRMR2l1UVlCaGNuRUx5CnF3aVdrUDlqNnFZd2NtNlJ3b2tkTGMzWHkvdzdrZXluUVU5SlR4YlVtSGpLQnNKRW9YaGUyS1JVNlhDK0pLYm16cHF3M1QKbkpKcXdodVFNWjBXN3lBMzdheWtYenpLejV2Qlpac1pvekY4MEpXc3FITHBXMTh4ZCtoM1JxWDB3c1dUcjVLcUxWdEN6bgp0UzBKYTl6TXppTWp6S2Z2RDRlT0wwR3NWTXdFc042SUM1bGhkYjdBcGRHTkwyVVpzQUFBQ0JBTVZIc2EwaEFTYW01MVdUCkJkRW5HNjNJZkhwcjhFWjFBQUFBRDJKdlpITmphRUJrWVhKclkybDBlUUVDQXc9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K"
authorized_keys
承認されたキーを展開するために、$HOME
に対応する.ssh
ディレクトリが作成され、そこに保存されます。
ユーザーがSSHキーを自分で管理しないようにしたい場合、アクセスできないディレクトリ(例: /etc/ssh/authorised_key
)に保存することもできます。
ただし、これを行う前にsshdを適切に構成する必要があります!
次の設定行を追加すると良いでしょう: AuthorizedKeysFile: /etc/ssh/authorized_keys/%u .ssh/authorized_keys
sudo
各ユーザーに対してシンプルなsudoルールを設定できます。 強調点はシンプルにです!
次の設定
- username: foo-bar
sudo:
nopassword: true
runas: "ALL"
commands: ALL
は次のようなsudoersファイルになります。
foo-bar ALL=(ALL)NOPASSWD: ALL
利用可能な構成オプションは以下の通りです。
パラメータ | デフォルト | 型 | 説明 |
---|---|---|---|
nopassword |
False |
bool |
sudoコマンドを実行するのにパスワードが必要かどうか。 |
runas |
- |
string |
コマンドを実行する対象ユーザーを指定。 |
commands |
- |
string またはlist |
sudoersルールで許可されたコマンド。 複数のコマンドをリストとして追加できます。 |
group |
- |
string |
sudoersルールのためのグループ名。 |
使い方
詳細はmolecule testsを参照してください。
- hosts: all
any_errors_fatal: false
vars:
users:
- username: foo-bar
update_password: always
comment: Foo Bar
# password: foo-barbar
shell: /bin/bash
ssh_keys:
id_ed25519: |
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAXYpRZio
BDw+o+oic9MwrqAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIK6jjUFopFO9kV4G
WIkR0gNzpoaOgpwFFRLWKcpeG8THAAAAkHtt03xiYPgAEc7T0nEtnCjt67sN6msNP2Nxgv
+Fd8BANdzbYFzsMoQ45Ldja2gsOt1KAecwO+xY+5BRCA0huWCTHwbd7Y6BqCKLEpHwXWG1
UI4GzDt6+hD1LZSbYTFpi+LhiQ1PlrmG5eRQOXzlEAY6AziN7gajlQRsOxkmTW98DuVzWw
S/KVZZ/wwzyaIPYQ==
-----END OPENSSH PRIVATE KEY-----
id_ed25519.pub: ssh-ed25519 AAAAC3NzaC1lYDI1NTE5AAAAIL+LmfwIhn8kxZcyusbcITtwsAOnI1I/d/c40XnGBg7J bar.foo <[email protected]>
id_rsa: "LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KaCtmZVZZQVg1Sm1EM2QvdEx6UkxUbTBmUm5CL1NVTDFFQ21jK1gwZ3dLL3UvUG4zU2RJOE0zVk9aMUJkUWJNNjkrU2oyYgozLzRRN1NsbUZObEVXaG43M2VHUFhTTTBLU1VUcGk5bFk0dVJndEhDdGYrejhsaVNBNFlvRlJKcTcxYi9JWHZ1SkUxVks1Ck5jQ3dSUFZRSGRUc0VEdG52M09lNDdFbW9XWFgzOUdFazRoQWNqV1BoeVRvZWFvSWNYTXZDbkVTMXp6SS8wQ2RsVUo2TGEKU1p4Njk2aFE0a1dPZ2k5UE0vVERHdytBRDZGbGVNTUtTK0FtalNuWHBYTjMwTzVacTFuMEhEWGd4ak55VVZ4SjdEVUNDMgpwZ2p1RHpPdDF3QUFBOGhNeC9oMlRNZjRkZ0FBQUFkemMyZ3Rjbk5oQUFBQkFRQytDRGdQYzllZnhvcWZQKzNoc0FBOFMvCm1Kb04wR2xwc2haNEZNNnVrWFdWc3RTQS9ONmJPSDU5NVZnQmZrbVlQZDMrMHZORXRPYlI5R2NIOUpRdlVRS1p6NWZTREEKcis3OCtmZEowand6ZFU1blVGMUJzenIzNUtQWnZmL2hEdEtXWVUyVVJhR2Z2ZDRZOWRJelFwSlJPbUwyVmppNUdDMGNLMQovN1B5V0pJRGhpZ1ZFbXJ2VnY4aGUrNGtUVlVyazF3TEJFOVZBZDFPd1FPMmUvYzU3anNTYWhaZGZmMFlTVGlFQnlOWStICklqNTlnck8ydldDa3JSTTd1Vk9sTUEzSnQ2ZDVkSDE4RDN5Vk5HWHB5dnVROUxXWUxWUGdvMlVUV0lVV3VHR2djVXNydVYKVm8xYm1HUTBsSnlQTkpVUmdUTnJ4dGd0emdEdUdoWWZGMzU2QVJkaHVUeXhBQUFBZ1FDT2hlMHF1bzhlakphalM0dUxydApqTkg2b1FNaWF3NGxMMkJtTWlMc3I5STdVWE5BMXZhRzl6R2J6Ym5wS3pSV0VKMWIxRExUWm42bnRMR2l1UVlCaGNuRUx5CnF3aVdrUDlqNnFZd2NtNlJ3b2tkTGMzWHkvdzdrZXluUVU5SlR4YlVtSGpLQnNKRW9YaGUyS1JVNlhDK0pLYm16cHF3M1QKbkpKcXdodVFNWjBXN3lBMzdheWtYenpLejV2Qlpac1pvekY4MEpXc3FITHBXMTh4ZCtoM1JxWDB3c1dUcjVLcUxWdEN6bgp0UzBKYTl6TXppTWp6S2Z2RDRlT0wwR3NWTXdFc042SUM1bGhkYjdBcGRHTkwyVVpzQUFBQ0JBTVZIc2EwaEFTYW01MVdUCkJkRW5HNjNJZkhwcjhFWjFBQUFBRDJKdlpITmphRUJrWVhKclkybDBlUUVDQXc9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K"
id_rsa.pub: "c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCQTVWZ0Jma21ZUGQzKzB2TkV0T2JSOUdjSDlKUXZVUUtaejVmU0RBTzJlL2M1N2pzU2FoWmRmZjBZU1RpRUJ5TlkrSEpPaGRlbGMzZlE3bG1yV2ZRY05lREdNM0pSWEVuc05RSUxhbUNPNFBNNjNYIGJhckBkZm9vYmFyLmNvbQo="
sudo:
nopassword: true
runas: "ALL"
commands:
- ALL
- /bin/systemctl restart my-service
- /bin/systemctl reload my-service
group: wheel
state: present
roles:
- role: ansible-users
著者とライセンス
- ボド・シュルツ
ライセンス
フリーソフトウェア、バンザイ!
インストール
ansible-galaxy install bodsch.users
ライセンス
mit
ダウンロード
3.5k
所有者
ex-developer (c, c++, php),
ex-system administrator / engineer,
keep-it-simple,
monitoring,
automation,
system architect