Ansibleで複数ユーザを一括追加
Sambaで使用する複数ユーザを一括で追加する。
ディレクトリ構成
.
├── group_vars
│ ├── user_groups.yml
│ └── users.yml
├── hosts
├── roles
│ └── useradd
│ └── tasks
│ └── main.yml
└── setup.yml
setup.yml
- hosts: local
user: vagrant
roles:
- setup
vars_files:
- group_vars/user_groups.yml
- group_vars/users.yml
追加するユーザ・グループをgroup_varsに記述
user_groups.yml
user_groups:
- { name: 'engineer', comment: 'エンジニアグループ' }
users.yml
users:
- {name: 'user1', group: 'engineer', comment: 'ユーザ1'}
- {name: 'user2', group: 'engineer', comment: 'ユーザ2'}
- {name: 'user3', group: 'engineer', comment: 'ユーザ3'}
複数ユーザを追加
roles/useradd/tasks/main.yml
- name: グループ作成
become: True
group:
name: "{{ item.name }}"
with_items:
- "{{ user_groups }}"
- name: ユーザ作成
become: True
user:
name: "{{ item.name }}"
shell: /bin/false
with_items: "{{ users }}"
- name: グループ追加
become: True
user:
name: "{{ item.name }}"
append: yes
groups: "{{ item.group }}"
with_items: "{{ users }}"
group_varsに記述したユーザをwith_itemsを利用してループさせることで、一括追加。
今回は、Samba用アカウントなので、shell: /bin/false
にしてshellを奪う。