Sunday, December 16, 2018

Mengatur User Menggunakan Ansible

Pada artikel sebelumnya sudah ada penjelasan mengenai ansible. Kali ini saya akan berbagi modul user pada ansible. Ansible modul user menolong kita untuk mengatur akun pada sistem linux seperti membuat user, menghapus user, membuat password, menambah grup dan masih banyak lainnya. Sebelum kita mulai pastikan sudah terinstall ansible dan python packages pada server linux anda.

Beberapa distribusi linux memiliki adduser command, atau default nya perintah useradd untuk menambah user pada sistem. adduser command akan menambah user baru dan dapat login ke home direktori nya. useradd membutuhkan beberapa tambahan untuk itu. Untuk itu menggunakan ansible untuk membuat user lebih mudah dibandingkan menggunakan command adduser atau useradd.


Menambah User

Struktur direktory yang akan kita buat seperti di bawah ini:

[root@coba user]# tree
.
|-- create_users.yml
|-- delete_users.yml
|-- hosts
|-- pub_keys
|   |-- land2.pub
|   |-- land3.pub
|   `-- land.pub
`-- vars
    |-- deleteusers.yml
    `-- users.yml

2 directories, 8 files

 Inventory hosts nya seperti ini:

[root@coba user]# cat /etc/ansible/hosts  
[all]  
172.0.2.46 

Buat file user.yml yang isinya adalah list user yang akan kita create:


[root@coba user]# cat create_users.yml
---
- hosts: all
  user: nostra
  become: yes

  tasks:
  - include_vars: users.yml

  - name: Add users | create users, shell, home dirs
    user: name={{ item.username }} shell=/bin/bash createhome=yes comment='create with ansible'
    with_items: '{{users}}'

  - name: Setup | authorized key upload
    authorized_key: user={{ item.username }}
      key="{{ lookup('file', 'pub_keys/{{ item.username }}.pub') }}"
    with_items: '{{users}}'

  - name: Add user to sudo group
    shell: usermod -aG wheel {{item.username}}
    when: 'item.use_sudo == True'
    with_items: '{{users}}'

Pada vars/users.yml tambahkan user mana saya yang memiliki akses sudo.

[root@coba user]# cat vars/users.yml
---
users:
  - username: land
    use_sudo: yes
  - username: land2
    use_sudo: no
  - username: land3
    use_sudo: no

Tambahkan public key user di folder pub_keys:

[root@coba user]# cat pub_keys/land.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCm2wey+RyM81ZWgyEU7npsEUq0NQmtNjIMGPzxPQfxidHkzkMOp0xTyBFJFb95CwQMYxEQz5gzDv5TWZjT0u/1yxfck8pPgotNpPzGbgVTEDmuN/P5SgEhF1gpotYimRomMsMiAf6NEyV5VqUk+dS+F1xbwsdbwwfGle4eI1QeaLXSCnlb9xwDuDcFe+nz0X7m8dnzYtglEIkXPfbXlJUDtxQCBSgVDMnHukJABAwCNdbZgxnr/ZL7zjSOTkQxB2zSQR6+aY01oVj39A4kdw4x/xsoZ5zjeAC5/viYimfLppF1vCLlPLSCIQrsp0D6ym5Em6Xq1huHkLozfjutsdD7 land@macs-MacBook-Air-3.local

Run ansible create user dengan command:

[root@coba user]# ansible-playbook -i /etc/ansible/hosts create_users.yml --key-file "/home/nostra/id_rsa"

PLAY [all] *******************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [172.0.2.46]

TASK [include_vars] **********************************************************************************************************************************************************************************************************************************************************
ok: [172.0.2.46]

TASK [Add users | create users, shell, home dirs] ****************************************************************************************************************************************************************************************************************************
changed: [172.0.2.46] => (item={u'username': u'land', u'use_sudo': True})
changed: [172.0.2.46] => (item={u'username': u'land2', u'use_sudo': False})
changed: [172.0.2.46] => (item={u'username': u'land3', u'use_sudo': False})

TASK [Setup | authorized key upload] *****************************************************************************************************************************************************************************************************************************************
changed: [172.0.2.46] => (item={u'username': u'land', u'use_sudo': True})
changed: [172.0.2.46] => (item={u'username': u'land2', u'use_sudo': False})
changed: [172.0.2.46] => (item={u'username': u'land3', u'use_sudo': False})

TASK [Add user to sudo group] ************************************************************************************************************************************************************************************************************************************************
changed: [172.0.2.46] => (item={u'username': u'land', u'use_sudo': True})
skipping: [172.0.2.46] => (item={u'username': u'land2', u'use_sudo': False})
skipping: [172.0.2.46] => (item={u'username': u'land3', u'use_sudo': False})

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
172.0.2.46                 : ok=5    changed=3    unreachable=0    failed=0



Menghapus User

Buat file delete_users.yml dan isi seperti di bawah ini:

[root@coba user]# cat delete_users.yml
---
- hosts: all
  user: nostra
  become: yes

  tasks:
  - include_vars: deleteusers.yml

  - name: Deleting The users
    user: name={{ item.username }} state=absent remove=yes
    with_items: '{{users}}'

Buat file untuk list user yang akan di delete pada vars/deleteusers.yml

[root@coba user]# cat vars/deleteusers.yml
---
users:
  - username: land3
  - username: land2
  - username: land

Run ansible untuk mendelete user:



[root@coba user]# ansible-playbook -i /etc/ansible/hosts delete_users.yml --key-file "/home/nostra/id_rsa"

PLAY [all] *******************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [172.0.2.46]

TASK [include_vars] **********************************************************************************************************************************************************************************************************************************************************
ok: [172.0.2.46]

TASK [Deleting The users] ****************************************************************************************************************************************************************************************************************************************************
changed: [172.0.2.46] => (item={u'username': u'land3'})
changed: [172.0.2.46] => (item={u'username': u'land2'})
changed: [172.0.2.46] => (item={u'username': u'land'})

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
172.0.2.46                 : ok=3    changed=1    unreachable=0    failed=0


Masih banyak lagi fungsi dari penggunaan ansible playbook ini. Sekian tutorial dari saya, semoga bermanfaat :)

No comments:

Post a Comment