bodsch.users

Ansibleロール: users

Linuxで複数のユーザーを管理するためのロールです。

GitHub Workflow Status GitHub issues GitHub release (latest by date) Ansible Quality Score

ユーザーの追加、パスワードの変更、ユーザーアカウントのロック/アンロック、ユーザーごとの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

著者とライセンス

  • ボド・シュルツ

ライセンス

MIT

フリーソフトウェア、バンザイ!

プロジェクトについて

ansible role to manage users on linux

インストール
ansible-galaxy install bodsch.users
ライセンス
mit
ダウンロード
3.5k
所有者
ex-developer (c, c++, php), ex-system administrator / engineer, keep-it-simple, monitoring, automation, system architect