LoginSignup
39
38

More than 5 years have passed since last update.

Ansibleでユーザ追加とグループ作成方法

Last updated at Posted at 2016-03-16

ansibleでユーザとグループの設定する

イベントリファイルの作成

dev-serverという親グループを作成し、共通設定としてcommon-baseという子グループを作成し、dev-serverを包含させる。
親グループを複数作成し、子グループへ属させことで、実行タスクを振り分けPlayBookの再利用性を高めたいのでこの構成を組む。

staging
[dev-server]
dev002

[common-base:children]
dev-server

マスタープレイブック作成

実行ホストと実行タスクが増えた時に修正が容易になるように、マスタープレイブックはシンプルにする。
今回は1つのymlのみinculuedさせる

site.yml
---
- include: common-base.yml

グループのプレイブック作成

実行ホストをイベントリで設定したグループを指定し、変数を定義したymlファイルとタスクを定義したymlファイルをinculdeする

common-base.yml
---
- hosts: common-base
  vars_files:
    - ./vars/usergroup.yml
  tasks:
    - include: ./tasks/user-group-setting.yml

変数定義ファイルの作成

いろいろなサイトをみたところkey名にユーザー名を当てているものがあったが、拡張性が悪くなるので以下のように定義。

usergroup.yml
usergroup:
  user:
    name: hoge
    group: hoge
    uid: 4519
    gid: 4519
    password: $6$hoge$zOyVU7p6q2aLNjyi7.WZy8sgiSqUPRnQBYruV9iAIdBr5p3tqipt9ZscPHlwe8wBEW91jb4mB2fLGPY7dsRBA/

  group:
    name: hogegroup
    gid: 1919

パスワードの作成

AnsibleのUSERモジュールで設定するパスワードはハッシュ化されたものを記載する必要がある。
以下でハッシュ化して変数ファイルのpasswordに設定

python -c 'import crypt; print crypt.crypt("123456789", "$6$hogehoge$")'

※ pythonではcrypt.crypt("ここにパスワード","$6$ここにハッシュkey")でHASH化できるのでそれをprintさせて取得する

タスクファイルの作成

構築対象のサーバーの設定をタスクとして定義する。ユーザ作成とグループ作成を行う場合は
userモジュールとgroupモジュールを利用して変数定義ファイルから設定値を取得してユーザとグループを設定する

user-group-setting.yml
- name: create group
  group: name={{usergroup.group.name}} gid={{usergroup.group.gid}}

- name: add users that join to group (wheel and usergroup)
  user: name={{usergroup.user.name}} uid={{usergroup.user.uid}} state=present password={{usergroup.user.password}} groups={{usergroup.user.group}},wheel

- name: user join to other group
  user: name={{usergroup.user.name}} append=yes groups={{usergroup.group.name}}

- name: ~/.ssh for users exist
  file: path="/home/{{usergroup.user.name}}/.ssh" state=directory owner={{usergroup.user.name}} group={{usergroup.user.group}} mode=0700

実行

テストをして問題ないことを確認したら実行する

シンタックステスト

$ ansible-playbook -i ~/ansible/playbook/common-playbook/staging  ~/ansible/playbook/common-playbook/site.yml --syntax-check

実行タスクリストを確認

$ ansible-playbook -i ~/ansible/playbook/common-playbook/staging  ~/ansible/playbook/common-playbook/site.yml --list-task

リハーサル(dry-rub)

$ ansible-playbook -i ~/ansible/playbook/common-playbook/staging  ~/ansible/playbook/common-playbook/site.yml --check

本番

$ ansible-playbook -i ~/ansible/playbook/common-playbook/staging  ~/ansible/playbook/common-playbook/site.yml

参考

http://docs.ansible.com/ansible/playbooks_best_practices.html#top-level-playbooks-are-separated-by-role
http://knowledge.sakura.ad.jp/tech/3084/

39
38
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
38