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)によって作成されました。