ab’s blog

インフラの呟きです。

AnsibleでLinuxのユーザーパスワード有効期限を設定する

hahahahahaha

ansible-galaxyからchageコマンドに相当するロールをもらってユーザパスワードの有効期限を設定します。EPEL版のAnsibleが入った状態での解説になります。

目次

ansible-galaxyでlqueryvg.chageをインストール

 以下コマンドでロールを取得します。インターネットにつながっていることが前提です。

$ su - ansible   ←playbookの実行ユーザ
$ ansible-galaxy  install lqueryvg.chage

インストールが終了したら、念のためリストの一覧を確認しておきます。

$ ansible-galaxy list

# /home/ansible/.ansible/roles
- geerlingguy.jenkins, 4.3.0
- lqueryvg.chage, master   ←chageと出てたらok
# /usr/share/ansible/roles
# /etc/ansible/roles

プレイブック作成

作成例として「testuser」というユーザのパスワード有効期限を設定するプレイブックを作ります。「chage:」を実行するためにはroot権限への昇格が必須なので「become:」入れときます。(今回始めてgalaxy使ったのですが正直マニュアル(readme)みてもよくわからず、動くプレイブック作るのに時間かかりました。galaxy使いであればわかる内容なのだろうか。。その他パラメータはマニュアルを見るとわかる)

#user_password_limit.yml
---
- hosts: all
  become: yes
  roles:
    - role: lqueryvg.chage
  tasks:
    - name: パスワード期限設定
      chage:
        user: testuser  #対象のユーザ
        sp_max: "28"   #有効期限日数
        sp_warn: "7"    #期限の警告を出す日数

プレイブック実行

例として自ホスト(localhost)向けにプレイブックを実行します。

$ su- ansible
$ ansible-playbook -i localhost, user_password_limit.yml --ask-become-pass

実行後、/etc/shadowを見るか$ cat /etc/shadowchageコマンド$ chage -l testuserでパスワードの有効期限が変更されたことをチェックしておきます。

以上