ろーてくxyz blog

ローテクを駆使してIT関係でサヴァイヴしようとする人による備忘録

Ansibleでユーザを複数作成していくplaybook

Ansibleを使ってユーザアカウントを作るyamlを。
Passwordの変更を一気に実施するというよりはアカウントの作成とPasswordを設定するのを目的にします。 yamlも書き方色々なので色んな方々のパターンがありますね。

やりたい事

  • 複数のアカウント作成を流し込みたい
  • uid,gid,Passwordも設定してみる(作成時にアカウントexpireさせるのが良いとは思いますが)

今回のplaybookを動かしたAnsibleバージョン

2.0.1 (古い・・・)

playbook

uid, gid, commet等を利用したいためuserモジュールの引数としてパラメータを渡します。
またupdate_password=on_createを付け、アカウントがcreateされたときのみパスワードが更新されるようにします。 あとはwith_itemsでループさせる。ループさせる内容は今回は別ファイルにしてvars_filesとして読み込みしています。

---
- hosts: all
  gather_facts: no
  vars_files:
    - userdata.yml

  tasks:
  - name: Create Accounts
    user: name={{ item.user_name }} password={{ item.user_passwd }} comment={{ item.user_comment }} group={{ item.user_group }} uid={{ item.user_id }} update_password=on_create
    with_items: '{{ user_lists }}'
    tags: user_create

userdataリストのyaml

playbookにてuid, gid, commet等を渡せるように辞書形式で記載していきます。
アカウントがかなりの数がある場合は手で作成するのが手間なので、formatをexportするツールを用意しておくと良いかと思います。

---
user_lists:
- { user_name: 'hogename1', user_comment: 'ore ha hoge1', user_group: '100', user_id: '1001',user_passwd: '$6$fwAEUE29$laf4.'}
- { user_name: 'hogename2', user_comment: 'ore ha hoge2', user_group: '100', user_id: '1002',user_passwd: '$6$fwAEUE29$laf4.'}
- { user_name: 'hogename3', user_comment: 'ore ha hoge3', user_group: '100', user_id: '1003',user_passwd: '$6$fwAEUE29$laf4.'}

ちなみに、辞書内のuser_passwdはOSによってhashタイプが違うのでご注意を。
新規でPasswordを作る場合はgrub-cryptがよく使われるような気がします。(以下はSHA512の作成コマンド例,MD5もいけます)

# grub-crypt --sha512
Password:
Retype password:
$6$fwAEUE29$laf4.