ゆるい感じのプログラムを書きたい。

プログラムの敷居を下げて、多くの人が開発出来るように色々書いていきます!

【モジュールの使い方】user

機能

userモジュールを使用することで、hostsで指定したサーバで以下の操作が実施できる

  • ユーザの追加/削除
  • ユーザのパスワード設定
  • ユーザのホームディレクトリ設定
  • ユーザのグループ設定
  • ユーザのログインシェル設定

使用例

  • 使用例 ユーザの新規作成
- hosts: all
  become: yes
  tasks:
    - name: Add user
      user :
        name: hoge
        state: present
        password: "{{ 'hogepasswd' | password_hash('sha521')}}"
        createhome: yes

passwordではハッシュ化後のパスワードを指定する必要があり、以下のように設定すると
passwordをハッシュ化した値を入力値とする事が出来る。

password: "{{ 'hogepasswd' | password_hash('sha521')}}"


  • 使用例 サブグループ設定
- hosts: all
  become: yes
  tasks:
    - name: Add user
      user :
        name: hoge
        groups: wheel, testuser

groupsの値として追加したいサブグループだけを記載すると
記載したサブグループだけに所属する状態になるので注意してください。

  • 使用例 ユーザの削除
- hosts: all
  become: yes
  tasks:
    - name: Delete user
      user :
        name: hoge
        groups: absent


主なパラメータ

パラメータ 必須 デフォルト値 選択肢 説明
state present absent
present
absent→ユーザが存在しない状態
ユーザが存在する状態
password ハッシュ化後のパスワードを指定
createhome yes yes
no
ホームディレクトリが存在しない場合に作成する
home ホームディレクトリを設定する場合に指定
groups 所属するサブグループを「,」区切りをすべて指定
shell ユーザのシェルを指定


全パラメータ

パラメータ 必須 デフォルト値 選択肢 説明
append no yes
no
yes:指定されたグループを追加
no:指定されたグループのみ追加され、他のすべてのグループから削除
authorizaition ユーザの認証を設定します
カンマ区切りで複数の認証を設定可能
現在、Illumos/Solarisでサポートされてます。
他のプラットフォームで使用しても何も起こりません
cooment ユーザアカウントにコメントを設定
create_home yes yes
no
ユーザアカウントが作成されたかホームディレクトリが存在しない時にホームディレクトリを作成
expires エポックでのユーザーの有効期限
これをサポートしていないプラットフォームでは無視されます
現在、GNU/LinuxFreeBSD、およびDragonFlyBSDでサポートされています
Ansible 2.6以降では、負の値を指定することで有効期限を削除できます。現在、GNU/LinuxおよびFreeBSDでサポートされています。
force no yes
no
『state=absent』と一緒に設定した場合、『userdel --force』と同じ動作をする。
generate_ssh_key no yes
no
SSH鍵を生成する。既存のSSH鍵は上書きされない。
group メイングループの名前を指定
groups サブグループをカンマ区切りで指定する。『groups=』(空文字列)を指定するとサブグループを削除する。
hidden yes yse
no
macOSのみ、オプションでログインウィンドウとシステム環境設定からユーザーを非表示にします。
システムオプションが使用されている場合、デフォルトはyesになります。
home ユーザアカウントのホームディレクトリを指定
local no yes
no
ローカルユーザを造作する場合(つまり、useraddではなくluseraddを使用する場合)に集中認証を使用する環境で役に立ちます。
これにより、コマンドを呼び出す前に、既存おアカウントの/etc/passwdがチェックされます。
ローカルアカウントデータが/etc/passwdがチェックされます。,
ローカルアカウントデータが/etc/passwd以外の場所に存在する場合、この設定は機能しません。
これには、上記のコマンドとetc/passwdがターゲットホストに存在する必要があり、存在しない場合は、致命的なエラーになります。
login_class FreeBSD, OpenBSD, NetBSDのログインクラスを設定
move_home no yes
no
『yes』を指定すると、『home=』で指定されたディレクトリがまだ存在しなくてもホームディレクトリを移動
name 作成・変更・削除するユーザアカウントを指定
non_unique no yes
no
オプションで、-uオプションとともに使用すると、このオプションを使用して、ユーザーIDを一意でない値に変更できます。
password パスワードを設定
password_expire_max パスワード変更間の最大日数
Linuxでのみサポート
password_expire_min パスワード変更間の最小日数
Linuxでのみサポート
password_expire_lock yes
no
パスワードをロックします(usermod -L,usermod -U,pw lock)
実装はプラットフォームによって異なります。このオプションは、ユーザーが他の方法を使用してログインできないことを常に意味するわけではありません。
このオプションはユーザーを無効にするのではなく、パスワードをロックするだけです。
False現在ロックされているパスワードのロックを解除するには、これをに設定する必要があります。このパラメーターがなくても、パスワードのロックは解除されません。
現在、LinuxFreeBSD、DragonFlyBSD、NetBSDOpenBSDでサポートされています。
profile ユーザのプロフィールを設定
他のプラットフォームで使用しても何も起こりません
カンマ区切りを使用して複数の役割を設定可能
全ての役割を削除するにはprofile=""を使用
現在、Illumos/Solarisでサポートされています。
rmove no yes
no
『state=absent』と一緒に設定した場合
『userdel --remove』と同じ動作をする。
role ユーザの役割を設定
他のプラットフォームで使用しても何も起こりません
カンマ区切りを使用して複数の役割を設定可能
全ての役割を削除するにはrole=""を使用
現在、Illumos/Solarisでサポートされています。
seuser selinux対応システムでseuserタイプ(user_u)を設定します
shell ユーザシェルを設定
skelton オプションで、ホームスケルトンディレクトリを設定
create_homeオプション必須
ssh_key_bits ssh-keygenによって設定されたデフォルト 作成するSSHキーのビット数を指定
ssh_key_comment SSHキーのコメントを定義
sshe_key_file SSH鍵のファイル名の指定
ssh_key_passphase SSH鍵のパスワードを設定する。
パスワードが設定されない場合、SSH鍵はパスワードを持たない。
ssh_key_type rsa SSH鍵のタイプを指定する。
利用可能なSSH鍵のタイプは、ホスト上での実装に依存する。
state present present
absent
present:存在する(無ければ作成)
absent:存在しない(あったら削除)
system no yes
no
『yes』を指定するとユーザアカウントはシステムアカウントになる。この設定は既存ユーザアカウントの変更はできない。
uid LinuxのユーザIDを指定
umask ユーザーのumaskを設定
他のプラットフォームで使用しても何も起こりません
現在Linuxでサポート
ローカルが省略されているか、Falseが必要
update_password always always
on_create
always:必ずパスワードを更新する。
on_create:新しく作成された時にパスワードを設定する。


戻り値

Key Type Returned 説明
append boolean state=presentの設定でユーザ存在する場合 ユーザをグループに追加したかどうか
Sample:
true
comment string ユーザが存在す場合 passwdファイルのコメント部分。通常はユーザ名が返却
Sample:
Agent Smith
create_home boolean ユーザが存在せず、チェックモードでない場合 ホームディレクトリを作成するかどうか
Sample:
True
force boolean state=absentの設定でユーザ存在する場合 ユーザをグループに追加したかどうか |ユーザアカウントが強制的に削除されたかどうか
group integer ユーザが存在する場合 プライマリユーザグループID
Sample:
1001
groups integer state=presentの設定でグループが存在する場合
Sample:
chrony,apache
ユーザが所属しているグループの一覧
home string state=presentの設定 ユーザのホームディレクトリパス
Sample:
/home/asmith
move_home boolean state=presentの設定でユーザ存在する場合 既存のホームディレクトリを移動するかどうか
name steing always ユーザアカウント名
Sample:
asmith
pasword string state=presentの設定でパスワードがから出ない場合 パスワードのマスクされた値
Samole:
NOT_LOGGING_PASSWORD
password_expire_max integer ユーザが存在する場合 パスワードの有効期限の最大日数
Sample:
20
password_expire_min integer ユーザが存在する場合 パスワード変更の最小日数
Sample:
20
remove boolean state=absentの設定でユーザ存在する場合 ユーザーアカウントを削除するかどうか
Sample:
True
shell string state=presentの設定 ユーザのログインシェル
Sample:
/bin/bash
ssh_fingerprint string generate_ssh_keyがtrueの場合 生成されたSSHキーのフィンガープリント
Sample:
2048 SHA256:aYNHYHYcyVm87Igh0IMEDMbvvW0QDlRQfE0aJugp684ko8 ansible-generated on host (RSA)
ssh_key_file string generate_ssh_keyがtrueの場合 生成されたSSH秘密鍵ファイルのパス
Sample:
/home/asmith/.ssh/id_rsa
ssh_public_key string generate_ssh_keyがtrueの場合 生成されたSSH公開鍵ファイル
Sample:
'SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQC95opt4SPEC06tOYsJQJIuN23BbLMGmYo8ysVZQc4h2DZE9ugbjWWGS1 / pweUGjVstgzMkBEeBCByaEf / RJKNecKRPeGd2Bw9DCj / bn5Z6rGfNENKBmo 618mUJBvdlEgea96QGjOwSB7 / gmonduC7gsWDMNcOdSE3wJMTim4lddiBx4RgC9yXsJ6Tkz9BHD73MXPpT5ETnse + A3fw3IGVSjaueVnlUyUmOBf7fzmZbhlFVXf2Zi2rFTXqvbdGHKkzpw1U8eB8xFPP7y d5u1u0e6Acju / 8aZ / l17IDFiLke5IzlqIMRTEbDwLNeO84YQKWTm9fODHzhYe0yvxqLiK07 ansible、生成されたホスト上で'
stderr string 実行したコマンドで標準エラーが返ってきた場合 実行中のコマンドの標準エラー
Sample:
Group wheels does not exist
stdout string 実行したコマンドで標準出力が返ってくる場合 実行中のコマンドの標準出力
system boolean システムがモジュールに渡され、アカウントが存在しない場合 そのアカウントがシステムアカウントであるかどうか
Sample:
True
uid integer uidがモジュールに渡されたとき ユーザーアカウントのユーザーID
Sample:
1044


ドキュメント

【Ansible Documentation】Module user

参考サイト

【RunaBook.dev】Module user

【Qiita】userモジュール

matsublog Ansible:userモジュールについて