以前、ユーザの作成をやってみたのですが、今回はplaybookを分けてやってみます。
playbookを分けると、再利用性や可読性が高まります。
効率よく公開鍵を配布する方法 Ansibleで複数のサーバとユーザに公開鍵を登録する複数のユーザを作成して、それぞれ公開鍵を配置したい時がたまにあります。
sshして公開鍵を置くのは、面倒です。1台とかだったらいいかもし...
フォルダ構造
|--ansible
| |--group_vars
| | |--all.yml
| |--inventory
| |--playbook.yml
| |--roles
| | |--groups
| | | |--tasks
| | | | |--main.yml
| | |--users
| | | |--tasks
| | | | |--main.yml
|--publickey
| |--user1
| |--user2
| |--user3
https://github.com/msato0731/ansible_useradd_role
各フォルダについて
group_vars
playbookで使う変数を入れておくところ。
今回は、ユーザとグループで使う変数を入れておきました。
unix_groups:
- { name: "testgroup", gid: 1101, state: "present" }
unix_users:
- { name: 'user1', uid: 1101, group: 'testgroup' }
- { name: 'user2', uid: 1102, group: 'testgroup' }
- { name: 'user2', uid: 1103, group: 'testgroup' }
inventory
hostsファイルを入れておくところです。hostsを入れておくことで実行するターゲットを指定できます。
今回は、localhost(自分自身)に実行するので空になっています。
playbook.yml
ansible実行時に指定するplaybookです。
「roles」とすることで、「roles」フォルダ内の
「users」と「groups」を読み込んで実行するようになっています。
- hosts: localhost
become: yes
become_user: root
roles:
- groups
- users
roles
ここで実行される処理を定義します。
main.ymlが実行される処理になっています。
groups/tasks/main.yml
- name: Add unix groups
group:
name: "{{ item.name }}"
gid: "{{ item.gid }}"
state: "{{ item.state }}"
with_items:
- "{{ unix_groups }}"
users/tasks/main.yml
- name: add a new user #Linuxユーザの作成
user:
name: "{{ item.name }}"
uid: "{{ item.uid }}"
state: present
with_items:
- "{{ unix_users }}"
- name: mkdir .ssh #.sshフォルダの作成
file:
dest: "/home/{{ item.name }}/.ssh/"
state: directory
owner: "{{ item.name }}"
group: "{{ item.group }}"
mode: 0700
with_items:
- "{{ unix_users }}"
- name: authorized key is deployed
copy:
src: "/home/bastion_admin/publickey/{{ item.name }}"
dest: "/home/{{ item.name }}/.ssh/authorized_keys"
owner: "{{ item.name }}"
group: "{{ item.group }}"
mode: 0600
with_items:
- "{{ unix_users }}"
publickey
publickeyフォルダには、ユーザの公開鍵を置いておきます。
playbookが実行されると、作成されたユーザの.ssh配下にコピーされます。
ファイル名は、ユーザの名前にしています。
playbookを実行する
ansibleフォルダ内に移動して、ansible-playbookを実行します
$ cd /home/testuser/ansible
$ ansible-playbook playbook.yml
まとめ
playbookの分割知らなかった時は、一つのplaybookに全て書いてしまい見にくかったです。
playbookを分割することでコードを見易くすることができました。
誰が見ても理解しやすいコードやフォルダ構造を意識してplaybookを作っていきたいです。
効率よく公開鍵を配布する方法 Ansibleで複数のサーバとユーザに公開鍵を登録する複数のユーザを作成して、それぞれ公開鍵を配置したい時がたまにあります。
sshして公開鍵を置くのは、面倒です。1台とかだったらいいかもし...
[Ansible入門]俺でもできた!Vagrantを使ってAnsible環境を作る(MAC・Windows)VagrantでAnsible練習用の環境を作ります。Mac向けの手順となっていますが、Windowsでもできるよう注釈を入れています。...
現役インフラエンジニアが選ぶUdemyインフラ系のおすすめコース3選動画学習プラットフォームUdemyのインフラ系おすすめコースを厳選しました。どのコースも基礎から学べるので、インフラ経験が浅い人にもおすすめです。...