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.

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.