Ansible: Uzak Bilgisayarlardaki Kullanıcı Hesaplarını Yönetin

Ansible’ın kullanıcı modülü, uzak sunucularda kullanıcı hesapları oluşturmanıza, değiştirmenize ve yönetmenize olanak tanır. Kullanıcı modülüyle yeni kullanıcı ekleme, parola ayarlama, grupları yönetme ve hatta gerektiğinde kullanıcıları kaldırma gibi görevleri otomatikleştirebilirsiniz.

Bu yazımızda Ansible kullanıcı modülünün nasıl kullanılacağını pratik örneklerle inceleyeceğiz.

Ansible Kullanıcı Modülünün Temel Sözdizimi

Kullanıcı modülünün temel sözdizimi aşağıdaki gibidir:

- name: Manage user accounts
  ansible.builtin.user:
    name: <username>
    state: <state>
    password: <hashed_password>
    groups: <group_list>
    ...

Şimdi farklı kullanım durumlarını inceleyelim.

1. Yeni bir kullanıcı hesabı oluşturun

Kullanıcı modülü, yeni bir kullanıcı oluşturmak ve gruplar, ana dizinler ve kabuk türleri gibi varsayılan yapılandırmaları ayarlamak için kullanılabilir.

Aşağıda testuser adında yeni bir kullanıcı oluşturan bir playbook bulunmaktadır:

---
- name: Create a new user account
  hosts: all
  become: yes
  tasks:
    - name: Create user 'testuser'
      ansible.builtin.user:
        name: testuser
        state: present
        groups: sudo
        comment: "Test User"
        shell: /bin/bash

Her parametrenin kısa bir açıklaması şöyledir:

  • name: Oluşturulacak kullanıcı hesabının adı. Burada testuser adında bir kullanıcı oluşturuyoruz.
  • state: present: Kullanıcının var olduğundan emin olur. Kullanıcı yoksa oluşturulur.
  • groups: sudo: Kullanıcıyı sudo grubuna ekler ve yönetici ayrıcalıkları verir.
  • comment: “Test Kullanıcısı”: Kullanıcı hesabına bir açıklama ekler, genellikle kullanıcının tam adını saklamak için kullanılır.
  • shell: /bin/bash: Kullanıcının varsayılan kabuğunu /bin/bash olarak ayarlar.

Playbook, birden fazla hedef  bilgisayara aynı anda uygulanabilir ve bu sayede tüm altyapıda tek tip kullanıcı oluşturulmasına olanak tanır.

2. Kullanıcı için bir parola belirleyin

Kullanıcı hesapları oluştururken, erişimi kontrol etmek için parola belirlemek önemlidir. Kullanıcı modülü bir parola belirlemenize olanak tanır, ancak güvenlik nedeniyle parolanın karma biçiminde sağlanması gerekir. Karma bir parola oluşturmak için mkpasswd yardımcı programını kullanabilirsiniz:

mkpasswd --method=SHA-512

Karma parolayı elde ettiğinizde, bunu playbookda aşağıdaki gibi kullanabilirsiniz:

---
- name: Set password for the user
  hosts: all
  become: yes
  tasks:
    - name: Create user 'testuser' with a password
      ansible.builtin.user:
        name: testuser
        state: present
        password: "$6$rounds=656000$...$..."  # Replace with your hashed password

İşte açıklaması:

  • password: Kullanıcı için parolayı karma biçiminde ayarlar. Karma bir parola kullanmak, hassas verilerin düz metin olarak ifşa edilmesini önler.

3. Belirli bir UID ve ana dizine sahip bir kullanıcı oluşturun

Bazı durumlarda, belirli bir kullanıcı kimliğine (UID) sahip bir kullanıcı oluşturmanız veya özel bir ana dizin ayarlamanız gerekebilir. Bu, kullanıcıları bir sistemden diğerine taşırken veya belirli uygulamalarla uyumluluğu sağlarken özellikle faydalıdır.

---
- name: Create user with specific UID and home directory
  hosts: all
  become: yes
  tasks:
    - name: Create user 'developer' with UID 1050
      ansible.builtin.user:
        name: developer
        uid: 1050
        home: /opt/developer_home
        state: present

Açıklama:

  • uid: 1050: Sistemler arasında tutarlılığı sağlamak veya belirli izinleri atarken kullanışlı olan kullanıcı için belirli bir UID ayarlar.
  • home: /opt/developer_home: Kullanıcı için özel bir ana dizin tanımlar. Varsayılan /home dizini kullanım durumunuz için uygun değilse bu özellik faydalı olabilir.

4. Bir kullanıcı hesabını silin

Kullanıcı yönetimi, güvenlik nedeniyle veya kaynak kullanımını yönetmek için artık ihtiyaç duyulmayan hesapların kaldırılmasını da içerir. Kullanıcı modülünü kullanarak bir kullanıcı hesabını silmek için durumu “yok” olarak ayarlayabilirsiniz:

---
- name: Delete a user account
  hosts: all
  become: yes
  tasks:
    - name: Delete user 'testuser'
      ansible.builtin.user:
        name: testuser
        state: absent

Açıklama:

  • state: absent: Kullanıcının sistemden kaldırılması gerektiğini belirtir.

Bu işlem kullanıcıyı kaldıracaktır ancak varsayılan olarak ana dizinini veya diğer ilişkili dosyaları silmez.

5. Kullanıcıyı birden fazla gruba ekleyin

Erişim kontrolünün kritik olduğu ortamlarda, kullanıcıları birden fazla gruba atamak yaygın bir gerekliliktir. Kullanıcı modülünü kullanarak bir kullanıcıyı birden fazla gruba atayabilirsiniz ve ekleme parametresi, mevcut grup üyeliklerinin üzerine yazılmamasını sağlar.

---
- name: Add user to multiple groups
  hosts: all
  become: yes
  tasks:
    - name: Create user 'devops' and add to groups
      ansible.builtin.user:
        name: devops
        groups: "sudo,docker"
        append: yes
        state: present

Açıklama:

  • groups: "sudo,docker": Kullanıcının dahil olması gereken grupları belirtir. Bu durumda kullanıcı hem sudo hem de docker gruplarına eklenecektir.
  • append: yes: Kullanıcının, halihazırda üyesi olabileceği diğer gruplardan çıkarılmadan, belirtilen gruplara eklenmesini sağlar.

Bu, özellikle farklı hizmetlerde birden fazla role veya yönetim ayrıcalığına erişmesi gereken kullanıcılar için faydalıdır.

6. Bir kullanıcı hesabını kilitleyin

Bir kullanıcının hesabını silmeden oturum açmasını geçici olarak engellemeniz gereken durumlar olabilir. Bu gibi durumlarda, hesabı kilitlemek için password_lock parametresini kullanabilirsiniz:

---
- name: Lock a user account
  hosts: all
  become: yes
  tasks:
    - name: Lock user 'testuser'
      ansible.builtin.user:
        name: testuser
        password_lock: yes

Açıklama:

  • password_lock: yes: Kullanıcının parolasını kilitleyerek oturum açmasını etkili bir şekilde engeller. Bu, bir güvenlik denetimi sırasında veya kullanıcının izinli olması gibi erişimi geçici olarak devre dışı bırakmanız gereken durumlarda faydalıdır.

Bir kullanıcı hesabını silmeden kilitlemek, yetkisiz erişimi engellerken verilerini ve yapılandırmalarını korumanıza olanak tanır.

7. Kullanıcıyı ana diziniyle birlikte kaldırın

Bir kullanıcı hesabını kaldırırken, disk alanını boşaltmak ve veri gizliliğini sağlamak için genellikle ana dizinini ve diğer ilgili dosyaları silmek gerekir. Bunu, kaldırma parametresini “evet” olarak ayarlayarak yapabilirsiniz:

---
- name: Remove user and their home directory
  hosts: all
  become: yes
  tasks:
    - name: Remove user 'developer' and delete home directory
      ansible.builtin.user:
        name: developer
        state: absent
        remove: yes

Açıklama:

  • remove: yes: Kullanıcının ana dizinini ve ilişkili e-posta biriktiricisini siler. Bu, kullanıcı silindikten sonra sistemde hiçbir kalıcı verinin kalmamasını sağlar.

 

Yazının orijinalini buradan okuyabilirsiniz.

Hüseyin GÜÇ

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım. Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum. Son 6 yıldır  sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum. Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.