ときどきAnsible日記

主にITインフラ基盤の自動化に関する事を書いているブログです

AnsibleのModule:user

お疲れ様です。伊藤です。


Moduleについてまだ書いていきます。続いてはuserです。
説明文はこちら。
ユーザーアカウントとユーザー属性を管理します。
う~ん、あっさり。機能も基本的にはuseradd、userdelコマンドと一緒です。

ではオプション。

パラメータ 必須 デフォルト 選択肢 備考
append no no yes no yes の場合、グループを追加するだけで、グループのリストには設定しません。
comment no オプションで、ユーザーアカウントの説明(別名 GECOS )を設定します。
createhome no yes yes no no に設定されていない限り、アカウントが作成されたとき、またはホームディレクトリが存在しないときに、ユーザのホームディレクトリが作成されます。
expires no None エポックでのユーザーの有効期限は、これをサポートしていないプラットフォームでは無視されます。 現在、LinuxFreeBSDでサポートされています。
force no no yes no state = absent で使用すると、動作は userdel --force のようになります。
generate_ssh_key no no yes no 問題のユーザーのSSHキーを生成するかどうか。 これは、既存のSSH鍵を上書きしません。
group no オプションで、ユーザーのプライマリグループを設定します(グループ名を使用します)。
groups no ユーザーをグループのリストに入れます。 空の文字列( 'groups =')に設定すると、プライマリグループ以外のすべてのグループからユーザが削除されます。
home no オプションで、ユーザーのホームディレクトリを設定します。
login_class no オプションで、FreeBSDOpenBSD、およびNetBSDシステムのユーザのログインクラスを設定します。
move_home no no yes no home = で使用するときに yes に設定すると、ユーザーのホームディレクトリが指定されたディレクトリに移動します。
name yes 作成、削除、または変更するユーザーの名前。
non_unique no no yes no オプションで-uオプションとともに使用する場合、このオプションを使用すると、ユーザーIDを一意でない値に変更できます。
password no オプションで、ユーザーのパスワードをこの暗号化された値に設定します。playbookでこれがどのように見えるかについては、github examplesディレクトリのユーザーの例を参照してください。これらのパスワード値を生成するさまざまな方法の詳細については、http://docs.ansible.com/ansible/faq.html#how-do-i-generate-crypted-passwords-for-the-user-moduleを参照してください。 Darwinシステムでは、この値はクリアテキストでなければなりません。セキュリティ上の問題に注意してください。
remove no no yes no state = absent で使用すると、動作は userdel --remove のようになります。
seuser no オプションで、selinux対応システムでseuserタイプ(user_u)を設定します。
shell no オプションで、ユーザーのシェルを設定します。
skeleton no オプションで、ホームスケルトンディレクトリを設定します。 createhomeオプションが必要です!
ssh_key_bits no default set by ssh-keygen オプションで、作成するSSHキーのビット数を指定します。
ssh_key_comment no ansible-generated on $HOSTNAME オプションで、SSHキーのコメントを定義します。
ssh_key_file no .ssh/id_rsa オプションで、SSHキーファイル名を指定します。 これが相対ファイル名の場合、ユーザーのホームディレクトリからの相対パスになります。
ssh_key_passphrase no SSH鍵のパスフレーズを設定します。 パスフレーズが指定されていない場合、SSHキーはデフォルトでパスフレーズを持ちません。
ssh_key_type no rsa オプションで、生成するSSH鍵のタイプを指定します。 使用可能なSSH鍵のタイプは、ターゲットホスト上の実装に依存します。
state no present present absent presentの場合は、アカウントが存在しない場合は作成、存在する場合は設定どおりに変更します。absentの場合はユーザが存在する場合には削除します。
system no no yes no アカウントを作成するときにこれを yes に設定すると、ユーザーはシステムアカウントになります。 既存のユーザーはこの設定を変更できません。
uid no オプションで、ユーザーの UID を設定します。
update_password no always always on_create パスワードが異なる場合は、 always がパスワードを更新します。 on_create は新しく作成されたユーザーのパスワードのみを設定します。

ふう、、結構多いですね。特に注意が必要なのがpasswordです。playbookに記載するパスワードはハッシュ化する必要があります。というかありましたが、最近のバージョンアップでそのままでも行けるようになったようです。記載方法は下記のような感じ

- user:
    name: test_user
    state: present
    password: {{ '任意のパスワード' | password_hash('sha512') }}

playbook例はこちら

# ユーザー 'johnd'を特定のuidとプライマリグループ 'admin'で追加します。
- user:
    name: johnd
    comment: "John Doe"
    uid: 1040
    group: admin

# ユーザー 'james'をbashシェルで追加し、 'admins'グループと 'developers'グループをユーザーのグループに追加します
- user:
    name: james
    shell: /bin/bash
    groups: admins,developers
    append: yes

# ユーザー 'johnd'を削除する
- user:
    name: johnd
    state: absent
    remove: yes

# 〜jsmith / .ssh / id_rsaのユーザーjsmith用に2048ビットのSSH鍵を作成する
- user:
    name: jsmith
    generate_ssh_key: yes
    ssh_key_bits: 2048
    ssh_key_file: .ssh/id_rsa

# アカウントを期限切れにしたいコンサルタントを追加しました
- user:
    name: james18
    shell: /bin/zsh
    groups: developers
    expires: 1422403387


ユーザに関してはとりあえず作成と削除ができればよいかと思います。
お疲れ様でした。