Ansible ile Yeni Kullanıcı Hesapları ve SSH Erişimi Tanımlama

📅 4 Ağustos 2025Emre Karabulut
⏱️ Yaklaşık 3 dakikalık okuma süresi

Ansible ile Yeni Kullanıcı Hesapları ve SSH Erişimi Tanımlama

1. Senaryo Tanımı

Sistem yöneticisi olarak, birden fazla Linux sunucusunda aynı kullanıcı hesabını oluşturmak, bu kullanıcı için SSH anahtarı tanımlamak ve gerekiyorsa sudo yetkisi vermek istiyoruz. Bu işlemleri manuel yapmak yerine Ansible playbook’u kullanarak otomatik hale getireceğiz.

2. Ön Hazırlıklar

– Ansible kontrol nodunda SSH bağlantısı yapılabilir olmalı.
– Hedef sunucuların envanteri `inventory.ini` dosyasına yazılmalı.
– Ansible yüklü olmalı: `sudo apt install ansible` veya `sudo yum install ansible`

3. Playbook ile Kullanıcı Oluşturma

Aşağıdaki örnek playbook, yeni bir kullanıcıyı oluşturur ve SSH anahtarını ekler:



– name: Yeni kullanıcı oluştur ve SSH anahtarını ekle
  hosts: all
  become: true

  vars:
    users:
      – username: devuser
        pubkey: “ssh-rsa AAAAB3…kullanıcının_public_keyi”

  tasks:
    – name: Kullanıcı oluştur
      user:
        name: “{{ item.username }}”
        state: present
        shell: /bin/bash
        create_home: yes
      loop: “{{ users }}”

    – name: SSH klasörü oluştur
      file:
        path: “/home/{{ item.username }}/.ssh”
        state: directory
        owner: “{{ item.username }}”
        group: “{{ item.username }}”
        mode: ‘0700’
      loop: “{{ users }}”

    – name: Yetkili anahtar ekle
      copy:
        content: “{{ item.pubkey }}”
        dest: “/home/{{ item.username }}/.ssh/authorized_keys”
        owner: “{{ item.username }}”
        group: “{{ item.username }}”
        mode: ‘0600’
      loop: “{{ users }}”

4. sudo Yetkisi Verme

Kullanıcıya şifresiz sudo yetkisi vermek için aşağıdaki görevi ekleyebilirsiniz:


    – name: sudo yetkisi ver
      lineinfile:
        path: /etc/sudoers.d/{{ item.username }}
        state: present
        create: yes
        line: “{{ item.username }} ALL=(ALL) NOPASSWD:ALL”
        mode: ‘0440’
      loop: “{{ users }}”

5. Playbook’u Çalıştırmak

Playbook dosyasını örneğin `user_setup.yml` olarak kaydedin ve aşağıdaki komutla çalıştırın:

ansible-playbook -i inventory.ini user_setup.yml

6. Sonuç ve Test

– Hedef makinelerde kullanıcı oluştu mu?
– SSH ile giriş yapabiliyor musunuz?
– sudo yetkisi beklendiği gibi mi?
Bu adımlar başarıyla gerçekleştiyse, yapılandırmanız tamamlanmıştır.

7. Ek Notlar

– Birden fazla kullanıcıyı aynı anda oluşturabilirsiniz.
– Ansible Vault ile private key gibi hassas bilgileri şifreleyebilirsiniz.
– Tüm kullanıcı değişkenlerini ayrı bir `vars/users.yml` dosyasında tanımlayarak yapıyı modülerleştirebilirsiniz.

Emre Karabulut
📊 Bu yazı 36 kez okundu.