freehck.user-func

ユーザーファンクション

ロール「ユーザーファンクション」は、ユーザーを機能的な方法で設定することを目的としています。ユーザー設定は、設定ファイルに記載されたものとまったく同じであり、副作用がないことが保証されています。

説明

このロールは、設定の主なエントリポイントがマシンではなくユーザーであることを前提に書かれています。つまり、マシン上にユーザーを作成するのではなく、特定のマシンへのユーザーのアクセスを提供したいということです。

できること:

  • ユーザーの公開鍵データベースを管理する
  • 1人のユーザーに対して複数の鍵を設定できる
  • ユーザーを削除できる(ホームディレクトリは削除されません)
  • パスワード認証をロック/ロック解除できる
  • ホストまたはホストのAnsibleグループごとにローカル設定を行う

ロールの変数

パラメータはグローバルとローカルに分かれています。パラメータがホスト(ホスト辞書)にローカルに記載されている場合、グローバルパラメータが採用されます。グローバルパラメータが記載されていない場合は、デフォルト値が使用されます。

  • username: 必須、マシン上のユーザー名を指定します。
  • hosts: 必須のパラメータで、ユーザーがアクセスするホストのリストとそのローカル設定を定義します。
  • give_sudo: sudo/wheelグループは例外的に重要であるため、別のパラメータとして扱われます。このパラメータは、ユーザーにsudoを開始する権利を与えるかどうかを決定します。ローカルホストの設定で使用できます。デフォルトは「いいえ」です。
  • password: ユーザーのパスワードを設定します。ローカル設定で使用できます。
  • lock_password: パスワードロックを設定します。「はい」に設定すると、ユーザーのパスワード入力が許可されません(shadowでは‘*’が設定されます)。ローカルで使用できます。デフォルトは「いいえ」です。
  • disable_user: ユーザーのログインをブロックします。「はい」に設定すると、指定されたユーザーでのログインが不可能になります(デフォルトのシェルはnologinが設定されます)。ローカルで使用できます。デフォルトは「いいえ」です。
  • delete_user: ユーザーを削除します(ホームディレクトリは削除されません)。ローカルで使用できます。デフォルトは「いいえ」です。注意して使用し、可能であれば使用しないことが望ましいです - disable_userの方が好まれます。
  • shell: ユーザーのシェルを指定します。ローカルで使用できます。デフォルトは/bin/bashです。
  • ssh_public_keys: 名前、フルネームフィールド(オプション)、および鍵を持つオブジェクトのリストです。これは、名前で操作できるようにするための既知の鍵のベースです。
  • authorized_keys: ssh_public_keysデータベースからの名前のリストです。この名前は、データベースのオブジェクトの名前フィールドにあり、その鍵が.ssh/authorized_keysに追加されます。ローカルで使用できます。デフォルトは[]です。
  • common_groups: 完全にグローバルなパラメータです。ユーザーが作成されるすべてのホストに共通するグループを指定します。「users」を設定することをお勧めします。デフォルトは[]です。ここにsudoを追加しないでください。これにはgive_sudoを使用します。
  • groups: 完全にローカルなパラメータです。この特定のホストに共通グループに追加されるグループを指定します。ここにsudoを追加しないでください。これにはgive_sudoがあります。

例1(短い)

manage-users.yml

- hosts:
    - all
  become: yes
  become_user: root
  vars_files:
    - vars/ssh_public_keys.yml
  vars:
    common_groups: [ users ]
  roles:

    - tags: [ admins, freehck ]
      role: user-func
      username: freehck
      give_sudo: yes
      authorized_keys: [ freehck ]
      hosts:
        - host: all

    - tags: [ special, jenkins ]
      role: user-func
      username: jenkins
      authorized_keys: [ jenkins, jenkins-slave01, jenkins-slave02 ]
      hosts:
        - host: all
        - host: jenkins-slave01
          groups: [ docker ]

    - tags: [ testers, tester ]
      role: user-func
      username: tester
      authorized_keys: [ tester ]
      hosts:
        - host: stand01
        - host: stand02
        - host: db01

vars/ssh_public_keys.yml

ssh_public_keys:
  - name: freehck
    fullname: Dmitrii Kashin
    key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPSD4/7GDGnHuFr/p/ZmDoW0RZ/3bHvoI/s5WwOpARJuqgnzj2CyfiPxkKzvCuncUq8O8FfjnAyyj7pEIV2MSEQnxzoFDfcJHRH4sw68TLlGENUvQjtTqrZQ2fyZ6Nu7dktq4A3aOxV0rVZa2oJMA1V1LFj5y9u9B4Sj1pSuY0HkAF1XHJDyBQUs8ncrBkwakqCw0wKI7aLC6tph4whFzJqs8LSnwrR6kMMyVC2xjaw8vczM1wcYVfc6lPN7tWJTH3GrjQRdEYEJo3VqInoiQ9OKb171fMrp9N1u6a88ffTDdX3Jlgm8MRSItuGkdJ9tNXke/hq7GuKmavx7sMf34d freehck

  - name: jenkins
    key: ...

  - name: jenkins-slave01
    key: ...

  - name: jenkins-slave02
    key: ...

例2(すべてのオプションを使用)

- role: user-func
  username: freehck # 必須
  give_sudo: no
  password: "mysecret"
  lock_password: no
  disable_user: no
  delete_user: no
  shell: "/bin/bash"
  common_groups: [ "users" ]
  authorized_keys: [ key_name, ... ]
  ssh_public_keys:
    - name: freehck
      fullname: Dmitrii Kashin
      key: <public-key>
  hosts: # 必須
    - host: host-or-inventory-group # 必須
      give_sudo: yes
      password: "mysecret"
      lock_password: no
      disable_user: no
      delete_user: no
      shell: "/bin/zsh"
      groups: [ "vboxusers" ]
      authorized_keys: [ key_name, ... ]
    - host: host-or-inventory-group
      ...

ライセンス

GPLv3+

著者情報

このロールは、Dmitrii Kashin(別名 freehck)によって作成されました。

プロジェクトについて

manage user functionally

インストール
ansible-galaxy install freehck.user-func
ライセンス
Unknown
ダウンロード
6.1k
所有者