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

プレイブックの例

  1. システム管理ユーザーとデプロイユーザーを作成:

    ---
    # このプレイブックは共通のユーザーをマシンに設定します
    
    - 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/groupnamehost_vars/hostnameを試してください。target_hostsはホストグループのリストであり、AWS/GCP/その他のクラウドでの動的インベントリのタグであることもできます。

依存関係

ライセンス

MIT。

プロジェクトについて

Ansible role for managing user accounts and authorized ssh-keys

インストール
ansible-galaxy install 1it.users
ライセンス
mit
ダウンロード
366
所有者
Site Reliability Engineer