SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
Puppet ile Linux Sistem
Yönetimi Otomasyonu
Çağrı Ersen
cagri.ersen@bga.com.tr
http://linuxakademi.com.tr
http://syslogs.org
https://twitter.com/CagriErsen
Sistem Yönetimi Temelleri
Nedir, Ne Yapar ?
Ağ servisleri sunan sistemlerin yönetilmesi.
❖ Kurma/Kaldırma/Güncelleme/Yapılandırma
❖ Disk / Storage / Dosya Sistemi Yönetimi
❖ Kullanıcı / Grup Yönetimi
❖ Yedekleme İşleri
❖ Performans Analizi / Micro Management
❖ Güvenlik Yönetimi
Anahtar Kelime: Yapılandırma
Sonuç olarak; sistem yönetimi sürekli olarak
“bir şeylerin” yapılandırılmasından ibarettir.
Ömrünüz genellikle yapılandırma komutları ve
dosyaları içerisinde geçer.
Yapılandırma Seçenekleri
Genel olarak üç yol tercih edilebilir,
1. Manual Yapılandırma
2. Kurulum Sırasında Otomatik Yapılandırma
(Post-Installation Script)
3. Bir Otomasyon Aracı Kullanarak Yapılandırma
Manual Yapılandırma
Manual Yapılandırma (1)
Az sayıda sunucu yönetiyorsanız sorun yok!
Herşeyi manual yapsanız da olur (mu acaba ?)
❖ Kolay
❖ Az sunucuda az zamanda az iş
Manual Yapılandırma (2)
Fakat…
❖ Kesin olarak unuttuğunuz bir şeyler olur.
❖ Değişiklikleri takip edemezsiniz.
❖ Aynı ayarlarla kolayca yeni bir sunucu
kuramazsınız.
Çok sayıda sunucu yönetiyorsanız “en kötü” ve
“en uygulanamaz” seçenektir!
Manual Yapılandırma (3)
Kurulum Sırasında Otomatik
Yapılandırma (Post-
Installation Scripts)
Post Installation Scripts (1)
Standart kurulumun ardından, yazdığımız
küçük yapılandırma scriptlerini çalıştırmak.
❖ Çok sayıda sunucu hızlıca yapılandırılabilir.
❖ Kısmen merkezi bir yönetim sağlanmış olur.
Post Installation Scripts (2)
Fakat:
❖ Yapılandırmanın sürekli aynı kalacağını
garanti edemezsiniz.
❖ Değişiklik yapmak kolay değildir.
❖ Değişiklik geçmişini takip edemezsiniz.
Post Installation Scripts (3)
ve kalabalık bir ekipseniz...
Bir Otomasyon Aracı
Kullanarak Yapılandırma
Otomasyon Araçları Kullanmak (1)
Seçenekler arasında açık ara en iyi alternatif.
● Sunucularınızı nasıl yapılandırmak
istediğinizi tarif edersiniz,
● Otomasyon aracı yapılandırmayı tarifinize
göre uygular.
● Ayarların hep aynı durumda kalmasını sağlar
Otomasyon Araçları Kullanmak (2)
❖ Altyapıya yeni bir sunucu eklemek kolaydır.
❖ Çöken bir sunucu eski durumuna süratle
döndürülebilir.
❖ Yapılandırma değişiklikleri zahmetsizdir.
❖ Değişiklik geçmişi tutulabilir.
Otomasyon Araçları Kullanmak (3)
HIZ
TUTARLILIK
PUPPET
Puppet Nedir ?
❖ Gelişmiş bir Configuration Management Tool
❖ 2005 - Luke Kanie tarafından
❖ Ruby
❖ Son Sürüm 3.4.3
❖ Açık Kaynak Kod
❖ Declarative
❖ Kendine ait DSL (Domain Spesifik Language)
❖ Server / Client Mimari
Desteklediği Platformlar
RHEL CentOS Fedora Debian
Ubuntu SUSE Gentoo Mandriva
FreeBSD OpenBSD
Mac OS X
Solaris
Arch HP-UX
NetBSD
Windows
Yönetebildiği bazı “şeyler”
Paketler Servisler
Kullanıcılar
Gruplar
Komutlar
SSH
Anahtarları
Cron
Dosyalar
Dizinler
Mount
ve daha fazlası...
Çalışma Mod’ları
❖ Server / Client (Master / Agent)
❖ Standalone (Serverless)
Client / Server Mode (1)
Puppet Server (Master)
❖ Tüm config dosyaları master’da tutulur.
❖ Üzerinde bir CA vardır, SSL keyleri tutar.
Bir ya da daha fazla client (Node)
❖ Node 30 dakikada bir sistem bilgilerini Master’a yollar.
❖ Master, node’a “istenilen yapılandırma durumunu”
belirten bir katalog gönderir.
❖ Node kataloğu uygular, master’a raporlar.
SSL
Client / Server Mode (2)
Puppet Master
Node Node Node
Rapor
Katalog
VCS
Client / Server Mode (3)
Puppet: Standalone Mode (1)
Üzerinde Puppet Paketi Kurulu Bir Host
➢ Master / Agent modundan tek fark
yapılandırma dosyalarının localde tutuluyor
olmasıdır.
➢ Çok sunucudan oluşan altyapılar için ideal
değildir.
Standalone Mode (2)
Puppet Mimarisi ve
Bileşenler
Declarative Language
user { 'crom':
ensure => present,
uid => '512',
gid => 'admin',
shell => '/bin/bash',
home => '/home/crom',
managehome => true,
}
Yapılandırma deklare edilir (Desired state)
OS Bağımsız
package { 'openssh-server':
ensure => present,
}
Sistem yöneticisi ile sistem arasındaki katmandır!
Puppet: Resources (1)
Resource’lar sistem yapılandırmasını meydana
getiren her bir bileşene verilen isimdir.
❖ Bir kullanıcı
❖ Bir paket
❖ Bir dosya
❖ Bir servis
❖ ...
Puppet: Resources (2)
user { 'crom':
ensure => present,
uid => '512',
gid => 'admin',
shell => '/bin/bash',
home => '/home/crom',
managehome => true,
}
Attributes
Type
Title
Values
Puppet: Resource Types
❖ packages: Paket kurma kaldırma, update
❖ file: Dosya/Dizin işlemleri içerik, izinleri, sahibi
❖ service: Servis başlatma durdurma, enable/disable,
❖ exec: Komut çalıştırma işlemleri
❖ cron: Zamanlanmış görevlerin yönetilmesi, ekle/kaldır/düzelt
❖ user: Kullanıcı işlemleri ekle/kaldır
❖ group: Grup ekle/çıkar, kullanıcı ekle
❖ mount: disk bağlama işlemleri
❖ sshkeys: SSH Key'lerinin yönetimi
Tam Liste: augeas computer cron exec file filebucket group host interface k5login
macauthorization mailalias maillist mcx mount nagios* notify package resources
router schedule scheduled_task selboolean selmodule service ssh_authorized_key
sshkey stage tidy uservlan yumrepo zfs zone zpool
Puppet: Resources (Örnek - 1)
Resource Type: Service
service { 'NetworkManager':
ensure => 'stopped',
enable => 'false',
}
Puppet: Resources (Örnek - 2)
Resource Type: File
file {'testfile':
path=> '/tmp/testfile',
ensure => present,
mode=> 0640,
content => "I'm a test file.",
}
Puppet: Resources (Örnek - 3)
Resource Type: Cron
cron { logrotate:
command => "/usr/sbin/logrotate",
user => root,
hour => 2,
minute => 0
}
Puppet: Manifests (1)
❖ .pp uzantılı Puppet scriptleri.
❖ Yapılandırma bu dosyalar içerisinde tanımlanır.
❖ Default → /etc/puppet/manifests/site.pp
❖ Tüm tanımlamalar site.pp içinde yapılabilir,
❖ Ya da birden çok .pp dosyası içersinde
tanımlanıp, site.pp içerisinden “include”
edilebilir.
Puppet: Manifests (2)
# vi /etc/puppet/manifests/kullanici-sil.pp
user {'crom':
ensure => absent,
}
# puppet apply /etc/puppet/manifests/kullanici-sil.pp
Puppet: Manifests - Ordering
package { 'openssh-server':
ensure => present,
before => File['/etc/ssh/sshd_config'],
}
file { '/etc/ssh/sshd_config':
ensure => file,
mode => 600,
source => 'puppet:///modules/sshd/sshd_config',
}
service { 'sshd':
ensure => running,
enable => true,
subscribe => File['/etc/ssh/sshd_config'],
}
sshd_config
değişikliklerini
işlemeden önce ssh
paketinin kurulu
olduğundan emin ol.
Bu dosyada
değişiklik yaparsan
ssh servisini restart
et.
Puppet: Variables
Puppet scriptleri içerisinde değişkenler
tanımlayabilir; built-in değişkenleri (facts)
kullanabilirsiniz.
$longthing = "BURADA-SSH-KEY-VAR"
file {'authorized_keys':
path => '/root/.ssh/authorized_keys',
content => $longthing,
}
Puppet: Facts
● Önceden tanımlanmış built-in değişkenler:
file {'motd':
ensure => file,
path => '/etc/motd',
mode => 0644,
content => "IP: ${ipaddress}, FQDN: ${fqdn}
OS: ${operatingsystem} Version:
${operatingsystemrelease} Puppet Version:
${puppetversion}.
",
}
Puppet: Facter
● Fact’leri toplamak için kullanılan Puppet Tool’u
# facter
architecture => x86_64
bios_vendor => Phoenix Technologies LTD
bios_version => 6.00
blockdevice_sda_model => VMware Virtual S
blockdevice_sda_size => 5368709120
blockdevice_sda_vendor => VMware,
boardmanufacturer => Intel Corporation
domain => crom.lab
facterversion => 1.7.5
filesystems => ext4,iso9660
fqdn => puppetmaster01.crom.lab
hardwareisa => x86_64
……...
Puppet: Conditionals Statements
IF kullanımı:
if is_virtual => “true’ { --> Facter variable
service {'ntpd':
ensure => stopped,
enable => false,
}
}
else {
service { 'ntpd':
name => 'ntpd',
ensure => running,
enable => true,
hasrestart => true,
require => Package['ntp'],
}
}
Puppet: Conditionals Statements
Case kullanımı:
case $operatingsystem {
centos, redhat: { $apache = "httpd" }
debian, ubuntu: { $apache = "apache2" }
default: { fail("Unrecognized operating system for
webserver") }
}
package {'apache':
name => $apache,
ensure => latest,
}
Puppet: Classes
❖ Puppet yapılandırmalarını parçalara bölmek
için kullanılan kod blokları.
❖ Amaç tanımlamaların okunaklı ve anlaşılır
olmasını sağlamaktır.
❖ Tanımlanan class’lar manifest dosyaları
içerisinden isimleri ile çağırılabilirler (include).
Puppet: Classes (2)
class add_my_user {
user { 'crom':
ensure => present,
uid => '507',
gid => 'wheel',
shell => '/bin/bash',
home => '/home/crom',
managehome => true,
}
}
include add_my_user
Define
Declare
# vi /etc/puppet/manifests/site.pp
Puppet: Modules
❖ Puppet scriptlerini ve dosyalarını hiyerarşik bir
düzende tutmaya yarayan “dizin”’lerdir.
❖ Örneğin SSHd ve NTP servislerini yöneten
manifest’ler birbirlerinden ayrı modüller olarak
tutulabilir.
❖ Default module dizini: /etc/puppet/modules/
Puppet: Modules - Dizin Yapısı (1)
Module dizinlerinde üç önemli altdizin bulunur.
- /etc/puppet/modules/common/manifests
Bu dizinde .pp uzantılı manifest dosyaları ve bunların include
edildiği init.pp isimli ana manifest dosyası bulunur.
-rw-r--r-- 1 root root 200 Mar 25 17:12 add-users.pp
-rw-r--r-- 1 root root 69 Mar 25 20:25 init.pp
-rw-r--r-- 1 root root 162 Mar 25 20:24 motd.pp
-rw-r--r-- 1 root root 239 Mar 25 20:18 sudoers.pp
Puppet: Modules - Dizin Yapısı (2)
❖ init.pp dosyasında modül ile aynı isimli bir class bulunur,
❖ Dizindeki diğer .pp dosyalarında tanımlı class’lar, bu default
class içerisinden include edilir.
# vi /etc/puppet/modules/common/manifests/init.pp
.
class common {
include add-users
include sudoers
include motd
}
Puppet: Modules - Dizin Yapısı (3)
- /etc/puppet/modules/common/files
❖ Bu dizinde tarif edilen yapılandırma için gerekli olan static
conf dosyaları bulunur. (örn: sudoers)
❖ Master / Agent mode’da, dosyalar manifest’ler / class’lar
içerisinden puppet:///modules/isim/conf_dosyasi şeklinde
çağırılır:
file { '/etc/sudoers':
ensure => file,
mode => 440,
source => "puppet:///modules/common/sudoers",
}
Puppet: Modules - Dizin Yapısı (4)
class ntp {
case $operatingsystem {
centos, redhat: {
$conf_file = 'ntp.conf.el'
}
debian, ubuntu: {
$conf_file = 'ntp.conf.debian'
}
}
file { 'ntp.conf':
path => '/etc/ntp.conf',
ensure => file,
require => Package['ntp'],
source => "puppet:///modules/sshd/${conf_file}"
}
RHEL tabanlı conf
Debian tabanlı conf
/etc/puppet/modules/ntp/files/ntp.conf.*
Puppet: Modules - Dizin Yapısı (5)
- /etc/puppet/modules/common/templates
❖ Templates dizininde, dinamik içerikli conf dosyaları tutulur.
❖ .erb uzantılıdırlar.
❖ Çok sayıda static conf dosyası oluşmasını önlemek içindir.
file { 'ntp.conf':
path => '/etc/ntp.conf',
ensure => file,
require => Package['ntp'],
content => template("ntp/ntp.erb"),
}
/etc/puppet/modules/ntp/templates/ntp.erb
Puppet: Modules - “Puppet Forge”
❖ Kendi modüllerinizi yazabileceğiniz gibi,
başkalarının yazdığı modülleri de kurabilirsiniz.
❖ Puppet Forge Open Source Modül Reposu’dur.
http://forge.puppetlabs.com/
# puppet module install puppetlabs-mysql
# puppet module list
Puppet: Nodes (1)
Hangi manifest, class ya da module’lerin hangi client’larda çalıştırılacağı
“node” kod bloğu içerisinden belirtilir.
# vi /etc/puppet/manifests/site.pp
node 'www1.example.com' {
include common
include apache
include squid
}
node 'db1.example.com' {
include common
include mysql
}
Puppet: Nodes (2)
❖ Birden fazla node’u aynı block içinde tanımlayabilirsiniz:
node 'www1.example.com', 'www2.example.com' {
include common
include apache, squid
}
❖ Regex kullanabilirsiniz:
node /^(foo|bar).example.com$/ {
include common
}
Son Olarak
Otomatikleştirilebilecek hiç
bir şeyi hiç bir zaman manual
yapmayın….
Teşekkürler

Mais conteúdo relacionado

Mais procurados

Temel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve KomutlarıTemel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve KomutlarıAhmet Gürel
 
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri AtlatmakSSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri AtlatmakBGA Cyber Security
 
OpenBSD PAcket Filter DDoS Koruma Özellikleri
OpenBSD PAcket Filter DDoS Koruma ÖzellikleriOpenBSD PAcket Filter DDoS Koruma Özellikleri
OpenBSD PAcket Filter DDoS Koruma ÖzellikleriBGA Cyber Security
 
W3af ile Web Uygulama Güvenlik Testleri – II
W3af ile Web Uygulama Güvenlik Testleri – IIW3af ile Web Uygulama Güvenlik Testleri – II
W3af ile Web Uygulama Güvenlik Testleri – IIBGA Cyber Security
 
Ozgur Yazilimlar ile Saldiri Yontemleri
Ozgur Yazilimlar ile Saldiri YontemleriOzgur Yazilimlar ile Saldiri Yontemleri
Ozgur Yazilimlar ile Saldiri YontemleriFatih Ozavci
 
Web Sunucularına Yönelik DDoS Saldırıları
Web Sunucularına Yönelik DDoS SaldırılarıWeb Sunucularına Yönelik DDoS Saldırıları
Web Sunucularına Yönelik DDoS SaldırılarıBGA Cyber Security
 
Her yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiHer yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiAhmet Han
 
Apache Htaccess Güvenlik Testleri
Apache Htaccess Güvenlik TestleriApache Htaccess Güvenlik Testleri
Apache Htaccess Güvenlik TestleriBGA Cyber Security
 
Hacker’ların Yeni Gozdesi - PowerShell
Hacker’ların Yeni Gozdesi - PowerShellHacker’ların Yeni Gozdesi - PowerShell
Hacker’ların Yeni Gozdesi - PowerShellAdeo Security
 
Linux101 Temel Komutlar-Dizin Yapısı
Linux101 Temel Komutlar-Dizin YapısıLinux101 Temel Komutlar-Dizin Yapısı
Linux101 Temel Komutlar-Dizin YapısıSDU CYBERLAB
 
Siber Güvenlik 1. hafta
Siber Güvenlik 1. haftaSiber Güvenlik 1. hafta
Siber Güvenlik 1. haftaOnur Er
 
Temel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıTemel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıAhmet Gürel
 
Oracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıOracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıBGA Cyber Security
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkBGA Cyber Security
 

Mais procurados (20)

Unix Denetim Dokümanı
Unix Denetim DokümanıUnix Denetim Dokümanı
Unix Denetim Dokümanı
 
BTRisk Adli Bilişim Eğitimi Sunumu
BTRisk Adli Bilişim Eğitimi SunumuBTRisk Adli Bilişim Eğitimi Sunumu
BTRisk Adli Bilişim Eğitimi Sunumu
 
Temel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve KomutlarıTemel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve Komutları
 
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri AtlatmakSSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
 
OpenBSD PAcket Filter DDoS Koruma Özellikleri
OpenBSD PAcket Filter DDoS Koruma ÖzellikleriOpenBSD PAcket Filter DDoS Koruma Özellikleri
OpenBSD PAcket Filter DDoS Koruma Özellikleri
 
W3af ile Web Uygulama Güvenlik Testleri – II
W3af ile Web Uygulama Güvenlik Testleri – IIW3af ile Web Uygulama Güvenlik Testleri – II
W3af ile Web Uygulama Güvenlik Testleri – II
 
Ozgur Yazilimlar ile Saldiri Yontemleri
Ozgur Yazilimlar ile Saldiri YontemleriOzgur Yazilimlar ile Saldiri Yontemleri
Ozgur Yazilimlar ile Saldiri Yontemleri
 
DDoS Engelleme Ürünleri
DDoS Engelleme ÜrünleriDDoS Engelleme Ürünleri
DDoS Engelleme Ürünleri
 
Web Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liğiWeb Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liği
 
Web Sunucularına Yönelik DDoS Saldırıları
Web Sunucularına Yönelik DDoS SaldırılarıWeb Sunucularına Yönelik DDoS Saldırıları
Web Sunucularına Yönelik DDoS Saldırıları
 
Her yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiHer yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliği
 
Apache Htaccess Güvenlik Testleri
Apache Htaccess Güvenlik TestleriApache Htaccess Güvenlik Testleri
Apache Htaccess Güvenlik Testleri
 
Hacker’ların Yeni Gozdesi - PowerShell
Hacker’ların Yeni Gozdesi - PowerShellHacker’ların Yeni Gozdesi - PowerShell
Hacker’ların Yeni Gozdesi - PowerShell
 
Linux101 Temel Komutlar-Dizin Yapısı
Linux101 Temel Komutlar-Dizin YapısıLinux101 Temel Komutlar-Dizin Yapısı
Linux101 Temel Komutlar-Dizin Yapısı
 
Siber Güvenlik 1. hafta
Siber Güvenlik 1. haftaSiber Güvenlik 1. hafta
Siber Güvenlik 1. hafta
 
Temel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıTemel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş Dökümanı
 
Oracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıOracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi Çalışmaları
 
Temel linux
Temel linuxTemel linux
Temel linux
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
 
Linux Guvenligi V1.0
Linux Guvenligi V1.0Linux Guvenligi V1.0
Linux Guvenligi V1.0
 

Destaque

Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve YönetimiAçık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve YönetimiBilgiO A.S / Linux Akademi
 
Open Source Threat Intelligence | Açık Kaynak Tehdit İstihbaratı
Open Source Threat Intelligence | Açık Kaynak Tehdit İstihbaratıOpen Source Threat Intelligence | Açık Kaynak Tehdit İstihbaratı
Open Source Threat Intelligence | Açık Kaynak Tehdit İstihbaratıBilgiO A.S / Linux Akademi
 
DevOps ile Siber Tehditler Karşısında 360 Derece Alan Hakimiyeti
DevOps ile Siber Tehditler Karşısında 360 Derece Alan HakimiyetiDevOps ile Siber Tehditler Karşısında 360 Derece Alan Hakimiyeti
DevOps ile Siber Tehditler Karşısında 360 Derece Alan HakimiyetiBilgiO A.S / Linux Akademi
 
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin KullanımıSiber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin KullanımıBGA Cyber Security
 
Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!Paige Bailey
 
Bünyamin Demir - Kelebek etkisi
Bünyamin Demir - Kelebek etkisiBünyamin Demir - Kelebek etkisi
Bünyamin Demir - Kelebek etkisiKasım Erkan
 
Kayra Otaner - DevOps ile siber saldırılar karşısında 360 derece alan hakimiyeti
Kayra Otaner - DevOps ile siber saldırılar karşısında 360 derece alan hakimiyetiKayra Otaner - DevOps ile siber saldırılar karşısında 360 derece alan hakimiyeti
Kayra Otaner - DevOps ile siber saldırılar karşısında 360 derece alan hakimiyetiKasım Erkan
 
Süleyman Özarslan - Cyber kill chain modeli güvenlik denetim yaklaşımı
Süleyman Özarslan - Cyber kill chain modeli güvenlik denetim yaklaşımıSüleyman Özarslan - Cyber kill chain modeli güvenlik denetim yaklaşımı
Süleyman Özarslan - Cyber kill chain modeli güvenlik denetim yaklaşımıKasım Erkan
 
Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015Stephen Benjamin
 
İnternet Üzerinde Anonimlik ve Tespit Yöntemleri
İnternet Üzerinde Anonimlik ve Tespit Yöntemleriİnternet Üzerinde Anonimlik ve Tespit Yöntemleri
İnternet Üzerinde Anonimlik ve Tespit YöntemleriBGA Cyber Security
 
Pfsense Firewall ve Router Eğitimi
Pfsense Firewall ve Router EğitimiPfsense Firewall ve Router Eğitimi
Pfsense Firewall ve Router EğitimiBGA Cyber Security
 
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıZararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıBGA Cyber Security
 
Log Yönetimi ve Saldırı Analizi Eğitimi - 2
Log Yönetimi ve Saldırı Analizi Eğitimi - 2Log Yönetimi ve Saldırı Analizi Eğitimi - 2
Log Yönetimi ve Saldırı Analizi Eğitimi - 2BGA Cyber Security
 
İleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabıİleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab KitabıBGA Cyber Security
 
Windows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım AnaliziWindows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım AnaliziBGA Cyber Security
 
Man in-the-browser Saldırılarının Analizi
Man in-the-browser Saldırılarının AnaliziMan in-the-browser Saldırılarının Analizi
Man in-the-browser Saldırılarının AnaliziBGA Cyber Security
 
Güvenli Veri Silme ve Dosya Kurtarma
Güvenli Veri Silme ve Dosya KurtarmaGüvenli Veri Silme ve Dosya Kurtarma
Güvenli Veri Silme ve Dosya KurtarmaBGA Cyber Security
 
Kablosuz Ağlara Yapılan Saldırılar
Kablosuz Ağlara Yapılan SaldırılarKablosuz Ağlara Yapılan Saldırılar
Kablosuz Ağlara Yapılan SaldırılarBGA Cyber Security
 

Destaque (20)

Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve YönetimiAçık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
 
Open Source Threat Intelligence | Açık Kaynak Tehdit İstihbaratı
Open Source Threat Intelligence | Açık Kaynak Tehdit İstihbaratıOpen Source Threat Intelligence | Açık Kaynak Tehdit İstihbaratı
Open Source Threat Intelligence | Açık Kaynak Tehdit İstihbaratı
 
DevOps ile Siber Tehditler Karşısında 360 Derece Alan Hakimiyeti
DevOps ile Siber Tehditler Karşısında 360 Derece Alan HakimiyetiDevOps ile Siber Tehditler Karşısında 360 Derece Alan Hakimiyeti
DevOps ile Siber Tehditler Karşısında 360 Derece Alan Hakimiyeti
 
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin KullanımıSiber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
 
Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!
 
Bünyamin Demir - Kelebek etkisi
Bünyamin Demir - Kelebek etkisiBünyamin Demir - Kelebek etkisi
Bünyamin Demir - Kelebek etkisi
 
Kayra Otaner - DevOps ile siber saldırılar karşısında 360 derece alan hakimiyeti
Kayra Otaner - DevOps ile siber saldırılar karşısında 360 derece alan hakimiyetiKayra Otaner - DevOps ile siber saldırılar karşısında 360 derece alan hakimiyeti
Kayra Otaner - DevOps ile siber saldırılar karşısında 360 derece alan hakimiyeti
 
Süleyman Özarslan - Cyber kill chain modeli güvenlik denetim yaklaşımı
Süleyman Özarslan - Cyber kill chain modeli güvenlik denetim yaklaşımıSüleyman Özarslan - Cyber kill chain modeli güvenlik denetim yaklaşımı
Süleyman Özarslan - Cyber kill chain modeli güvenlik denetim yaklaşımı
 
E-Mail Forensics
E-Mail ForensicsE-Mail Forensics
E-Mail Forensics
 
Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015
 
İnternet Üzerinde Anonimlik ve Tespit Yöntemleri
İnternet Üzerinde Anonimlik ve Tespit Yöntemleriİnternet Üzerinde Anonimlik ve Tespit Yöntemleri
İnternet Üzerinde Anonimlik ve Tespit Yöntemleri
 
Pfsense Firewall ve Router Eğitimi
Pfsense Firewall ve Router EğitimiPfsense Firewall ve Router Eğitimi
Pfsense Firewall ve Router Eğitimi
 
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıZararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
 
Log Yönetimi ve Saldırı Analizi Eğitimi - 2
Log Yönetimi ve Saldırı Analizi Eğitimi - 2Log Yönetimi ve Saldırı Analizi Eğitimi - 2
Log Yönetimi ve Saldırı Analizi Eğitimi - 2
 
İleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabıİleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabı
 
Windows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım AnaliziWindows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım Analizi
 
Man in-the-browser Saldırılarının Analizi
Man in-the-browser Saldırılarının AnaliziMan in-the-browser Saldırılarının Analizi
Man in-the-browser Saldırılarının Analizi
 
Outlook E-Mail Forensics
Outlook E-Mail ForensicsOutlook E-Mail Forensics
Outlook E-Mail Forensics
 
Güvenli Veri Silme ve Dosya Kurtarma
Güvenli Veri Silme ve Dosya KurtarmaGüvenli Veri Silme ve Dosya Kurtarma
Güvenli Veri Silme ve Dosya Kurtarma
 
Kablosuz Ağlara Yapılan Saldırılar
Kablosuz Ağlara Yapılan SaldırılarKablosuz Ağlara Yapılan Saldırılar
Kablosuz Ağlara Yapılan Saldırılar
 

Semelhante a Puppet ile Linux Sistem Yönetimi Otomasyonu

Pwnlydays - Linux 101
Pwnlydays - Linux 101Pwnlydays - Linux 101
Pwnlydays - Linux 101canyoupwn.me
 
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}Ali Erdinc Koroglu
 
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARISNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARIMehmetEminDOAN1
 
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux BilgisiSızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux BilgisiFerhat Ozgur Catak
 
Oracle 10g Database Server Kurulum
Oracle 10g Database Server KurulumOracle 10g Database Server Kurulum
Oracle 10g Database Server KurulumAnar Godjaev
 
Puppet Sertifika Yönetimi
Puppet Sertifika YönetimiPuppet Sertifika Yönetimi
Puppet Sertifika YönetimiAybüke Özdemir
 
Ceph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulCeph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulHuseyin Cotuk
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ ProgramlamaOguzhan Coskun
 
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim DökümanıLinux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanıİbrahim UÇAR
 
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)furkan mataraci
 
Linux Türevi İşletim Sistemlerinde Paket Hazırlama.
Linux Türevi İşletim Sistemlerinde Paket Hazırlama.Linux Türevi İşletim Sistemlerinde Paket Hazırlama.
Linux Türevi İşletim Sistemlerinde Paket Hazırlama.İbrahim UÇAR
 
Linux Komut Satırı
Linux Komut Satırı Linux Komut Satırı
Linux Komut Satırı Kemal Demirez
 
Nmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasiNmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasicigalkan
 
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web GeliştiriciliğiBurak Oğuz
 
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim DökümanıLinux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanıİbrahim UÇAR
 

Semelhante a Puppet ile Linux Sistem Yönetimi Otomasyonu (20)

Pwnlydays - Linux 101
Pwnlydays - Linux 101Pwnlydays - Linux 101
Pwnlydays - Linux 101
 
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
 
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARISNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
 
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux BilgisiSızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
 
Oracle 10g Database Server Kurulum
Oracle 10g Database Server KurulumOracle 10g Database Server Kurulum
Oracle 10g Database Server Kurulum
 
Puppet Sertifika Yönetimi
Puppet Sertifika YönetimiPuppet Sertifika Yönetimi
Puppet Sertifika Yönetimi
 
Ubuntu Linux
Ubuntu LinuxUbuntu Linux
Ubuntu Linux
 
Ceph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulCeph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbul
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ Programlama
 
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim DökümanıLinux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
 
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)
 
Linux Türevi İşletim Sistemlerinde Paket Hazırlama.
Linux Türevi İşletim Sistemlerinde Paket Hazırlama.Linux Türevi İşletim Sistemlerinde Paket Hazırlama.
Linux Türevi İşletim Sistemlerinde Paket Hazırlama.
 
Linux Komut Satırı
Linux Komut Satırı Linux Komut Satırı
Linux Komut Satırı
 
Nmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasiNmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasi
 
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
 
11 g RAC -ASM
11 g RAC -ASM11 g RAC -ASM
11 g RAC -ASM
 
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim DökümanıLinux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
 
Linux 101
Linux 101Linux 101
Linux 101
 
Linux komulari
Linux komulariLinux komulari
Linux komulari
 
Nginx sunu 2014
Nginx sunu 2014Nginx sunu 2014
Nginx sunu 2014
 

Puppet ile Linux Sistem Yönetimi Otomasyonu

  • 1. Puppet ile Linux Sistem Yönetimi Otomasyonu Çağrı Ersen cagri.ersen@bga.com.tr http://linuxakademi.com.tr http://syslogs.org https://twitter.com/CagriErsen
  • 3. Nedir, Ne Yapar ? Ağ servisleri sunan sistemlerin yönetilmesi. ❖ Kurma/Kaldırma/Güncelleme/Yapılandırma ❖ Disk / Storage / Dosya Sistemi Yönetimi ❖ Kullanıcı / Grup Yönetimi ❖ Yedekleme İşleri ❖ Performans Analizi / Micro Management ❖ Güvenlik Yönetimi
  • 4. Anahtar Kelime: Yapılandırma Sonuç olarak; sistem yönetimi sürekli olarak “bir şeylerin” yapılandırılmasından ibarettir. Ömrünüz genellikle yapılandırma komutları ve dosyaları içerisinde geçer.
  • 5. Yapılandırma Seçenekleri Genel olarak üç yol tercih edilebilir, 1. Manual Yapılandırma 2. Kurulum Sırasında Otomatik Yapılandırma (Post-Installation Script) 3. Bir Otomasyon Aracı Kullanarak Yapılandırma
  • 7. Manual Yapılandırma (1) Az sayıda sunucu yönetiyorsanız sorun yok! Herşeyi manual yapsanız da olur (mu acaba ?) ❖ Kolay ❖ Az sunucuda az zamanda az iş
  • 8. Manual Yapılandırma (2) Fakat… ❖ Kesin olarak unuttuğunuz bir şeyler olur. ❖ Değişiklikleri takip edemezsiniz. ❖ Aynı ayarlarla kolayca yeni bir sunucu kuramazsınız.
  • 9. Çok sayıda sunucu yönetiyorsanız “en kötü” ve “en uygulanamaz” seçenektir! Manual Yapılandırma (3)
  • 10. Kurulum Sırasında Otomatik Yapılandırma (Post- Installation Scripts)
  • 11. Post Installation Scripts (1) Standart kurulumun ardından, yazdığımız küçük yapılandırma scriptlerini çalıştırmak. ❖ Çok sayıda sunucu hızlıca yapılandırılabilir. ❖ Kısmen merkezi bir yönetim sağlanmış olur.
  • 12. Post Installation Scripts (2) Fakat: ❖ Yapılandırmanın sürekli aynı kalacağını garanti edemezsiniz. ❖ Değişiklik yapmak kolay değildir. ❖ Değişiklik geçmişini takip edemezsiniz.
  • 13. Post Installation Scripts (3) ve kalabalık bir ekipseniz...
  • 15. Otomasyon Araçları Kullanmak (1) Seçenekler arasında açık ara en iyi alternatif. ● Sunucularınızı nasıl yapılandırmak istediğinizi tarif edersiniz, ● Otomasyon aracı yapılandırmayı tarifinize göre uygular. ● Ayarların hep aynı durumda kalmasını sağlar
  • 16. Otomasyon Araçları Kullanmak (2) ❖ Altyapıya yeni bir sunucu eklemek kolaydır. ❖ Çöken bir sunucu eski durumuna süratle döndürülebilir. ❖ Yapılandırma değişiklikleri zahmetsizdir. ❖ Değişiklik geçmişi tutulabilir.
  • 17. Otomasyon Araçları Kullanmak (3) HIZ TUTARLILIK
  • 19. Puppet Nedir ? ❖ Gelişmiş bir Configuration Management Tool ❖ 2005 - Luke Kanie tarafından ❖ Ruby ❖ Son Sürüm 3.4.3 ❖ Açık Kaynak Kod ❖ Declarative ❖ Kendine ait DSL (Domain Spesifik Language) ❖ Server / Client Mimari
  • 20. Desteklediği Platformlar RHEL CentOS Fedora Debian Ubuntu SUSE Gentoo Mandriva FreeBSD OpenBSD Mac OS X Solaris Arch HP-UX NetBSD Windows
  • 21. Yönetebildiği bazı “şeyler” Paketler Servisler Kullanıcılar Gruplar Komutlar SSH Anahtarları Cron Dosyalar Dizinler Mount ve daha fazlası...
  • 22. Çalışma Mod’ları ❖ Server / Client (Master / Agent) ❖ Standalone (Serverless)
  • 23. Client / Server Mode (1) Puppet Server (Master) ❖ Tüm config dosyaları master’da tutulur. ❖ Üzerinde bir CA vardır, SSL keyleri tutar. Bir ya da daha fazla client (Node) ❖ Node 30 dakikada bir sistem bilgilerini Master’a yollar. ❖ Master, node’a “istenilen yapılandırma durumunu” belirten bir katalog gönderir. ❖ Node kataloğu uygular, master’a raporlar.
  • 24. SSL Client / Server Mode (2) Puppet Master Node Node Node Rapor Katalog VCS
  • 25. Client / Server Mode (3)
  • 26. Puppet: Standalone Mode (1) Üzerinde Puppet Paketi Kurulu Bir Host ➢ Master / Agent modundan tek fark yapılandırma dosyalarının localde tutuluyor olmasıdır. ➢ Çok sunucudan oluşan altyapılar için ideal değildir.
  • 29. Declarative Language user { 'crom': ensure => present, uid => '512', gid => 'admin', shell => '/bin/bash', home => '/home/crom', managehome => true, } Yapılandırma deklare edilir (Desired state)
  • 30. OS Bağımsız package { 'openssh-server': ensure => present, } Sistem yöneticisi ile sistem arasındaki katmandır!
  • 31. Puppet: Resources (1) Resource’lar sistem yapılandırmasını meydana getiren her bir bileşene verilen isimdir. ❖ Bir kullanıcı ❖ Bir paket ❖ Bir dosya ❖ Bir servis ❖ ...
  • 32. Puppet: Resources (2) user { 'crom': ensure => present, uid => '512', gid => 'admin', shell => '/bin/bash', home => '/home/crom', managehome => true, } Attributes Type Title Values
  • 33. Puppet: Resource Types ❖ packages: Paket kurma kaldırma, update ❖ file: Dosya/Dizin işlemleri içerik, izinleri, sahibi ❖ service: Servis başlatma durdurma, enable/disable, ❖ exec: Komut çalıştırma işlemleri ❖ cron: Zamanlanmış görevlerin yönetilmesi, ekle/kaldır/düzelt ❖ user: Kullanıcı işlemleri ekle/kaldır ❖ group: Grup ekle/çıkar, kullanıcı ekle ❖ mount: disk bağlama işlemleri ❖ sshkeys: SSH Key'lerinin yönetimi Tam Liste: augeas computer cron exec file filebucket group host interface k5login macauthorization mailalias maillist mcx mount nagios* notify package resources router schedule scheduled_task selboolean selmodule service ssh_authorized_key sshkey stage tidy uservlan yumrepo zfs zone zpool
  • 34. Puppet: Resources (Örnek - 1) Resource Type: Service service { 'NetworkManager': ensure => 'stopped', enable => 'false', }
  • 35. Puppet: Resources (Örnek - 2) Resource Type: File file {'testfile': path=> '/tmp/testfile', ensure => present, mode=> 0640, content => "I'm a test file.", }
  • 36. Puppet: Resources (Örnek - 3) Resource Type: Cron cron { logrotate: command => "/usr/sbin/logrotate", user => root, hour => 2, minute => 0 }
  • 37. Puppet: Manifests (1) ❖ .pp uzantılı Puppet scriptleri. ❖ Yapılandırma bu dosyalar içerisinde tanımlanır. ❖ Default → /etc/puppet/manifests/site.pp ❖ Tüm tanımlamalar site.pp içinde yapılabilir, ❖ Ya da birden çok .pp dosyası içersinde tanımlanıp, site.pp içerisinden “include” edilebilir.
  • 38. Puppet: Manifests (2) # vi /etc/puppet/manifests/kullanici-sil.pp user {'crom': ensure => absent, } # puppet apply /etc/puppet/manifests/kullanici-sil.pp
  • 39. Puppet: Manifests - Ordering package { 'openssh-server': ensure => present, before => File['/etc/ssh/sshd_config'], } file { '/etc/ssh/sshd_config': ensure => file, mode => 600, source => 'puppet:///modules/sshd/sshd_config', } service { 'sshd': ensure => running, enable => true, subscribe => File['/etc/ssh/sshd_config'], } sshd_config değişikliklerini işlemeden önce ssh paketinin kurulu olduğundan emin ol. Bu dosyada değişiklik yaparsan ssh servisini restart et.
  • 40. Puppet: Variables Puppet scriptleri içerisinde değişkenler tanımlayabilir; built-in değişkenleri (facts) kullanabilirsiniz. $longthing = "BURADA-SSH-KEY-VAR" file {'authorized_keys': path => '/root/.ssh/authorized_keys', content => $longthing, }
  • 41. Puppet: Facts ● Önceden tanımlanmış built-in değişkenler: file {'motd': ensure => file, path => '/etc/motd', mode => 0644, content => "IP: ${ipaddress}, FQDN: ${fqdn} OS: ${operatingsystem} Version: ${operatingsystemrelease} Puppet Version: ${puppetversion}. ", }
  • 42. Puppet: Facter ● Fact’leri toplamak için kullanılan Puppet Tool’u # facter architecture => x86_64 bios_vendor => Phoenix Technologies LTD bios_version => 6.00 blockdevice_sda_model => VMware Virtual S blockdevice_sda_size => 5368709120 blockdevice_sda_vendor => VMware, boardmanufacturer => Intel Corporation domain => crom.lab facterversion => 1.7.5 filesystems => ext4,iso9660 fqdn => puppetmaster01.crom.lab hardwareisa => x86_64 ……...
  • 43. Puppet: Conditionals Statements IF kullanımı: if is_virtual => “true’ { --> Facter variable service {'ntpd': ensure => stopped, enable => false, } } else { service { 'ntpd': name => 'ntpd', ensure => running, enable => true, hasrestart => true, require => Package['ntp'], } }
  • 44. Puppet: Conditionals Statements Case kullanımı: case $operatingsystem { centos, redhat: { $apache = "httpd" } debian, ubuntu: { $apache = "apache2" } default: { fail("Unrecognized operating system for webserver") } } package {'apache': name => $apache, ensure => latest, }
  • 45. Puppet: Classes ❖ Puppet yapılandırmalarını parçalara bölmek için kullanılan kod blokları. ❖ Amaç tanımlamaların okunaklı ve anlaşılır olmasını sağlamaktır. ❖ Tanımlanan class’lar manifest dosyaları içerisinden isimleri ile çağırılabilirler (include).
  • 46. Puppet: Classes (2) class add_my_user { user { 'crom': ensure => present, uid => '507', gid => 'wheel', shell => '/bin/bash', home => '/home/crom', managehome => true, } } include add_my_user Define Declare # vi /etc/puppet/manifests/site.pp
  • 47. Puppet: Modules ❖ Puppet scriptlerini ve dosyalarını hiyerarşik bir düzende tutmaya yarayan “dizin”’lerdir. ❖ Örneğin SSHd ve NTP servislerini yöneten manifest’ler birbirlerinden ayrı modüller olarak tutulabilir. ❖ Default module dizini: /etc/puppet/modules/
  • 48. Puppet: Modules - Dizin Yapısı (1) Module dizinlerinde üç önemli altdizin bulunur. - /etc/puppet/modules/common/manifests Bu dizinde .pp uzantılı manifest dosyaları ve bunların include edildiği init.pp isimli ana manifest dosyası bulunur. -rw-r--r-- 1 root root 200 Mar 25 17:12 add-users.pp -rw-r--r-- 1 root root 69 Mar 25 20:25 init.pp -rw-r--r-- 1 root root 162 Mar 25 20:24 motd.pp -rw-r--r-- 1 root root 239 Mar 25 20:18 sudoers.pp
  • 49. Puppet: Modules - Dizin Yapısı (2) ❖ init.pp dosyasında modül ile aynı isimli bir class bulunur, ❖ Dizindeki diğer .pp dosyalarında tanımlı class’lar, bu default class içerisinden include edilir. # vi /etc/puppet/modules/common/manifests/init.pp . class common { include add-users include sudoers include motd }
  • 50. Puppet: Modules - Dizin Yapısı (3) - /etc/puppet/modules/common/files ❖ Bu dizinde tarif edilen yapılandırma için gerekli olan static conf dosyaları bulunur. (örn: sudoers) ❖ Master / Agent mode’da, dosyalar manifest’ler / class’lar içerisinden puppet:///modules/isim/conf_dosyasi şeklinde çağırılır: file { '/etc/sudoers': ensure => file, mode => 440, source => "puppet:///modules/common/sudoers", }
  • 51. Puppet: Modules - Dizin Yapısı (4) class ntp { case $operatingsystem { centos, redhat: { $conf_file = 'ntp.conf.el' } debian, ubuntu: { $conf_file = 'ntp.conf.debian' } } file { 'ntp.conf': path => '/etc/ntp.conf', ensure => file, require => Package['ntp'], source => "puppet:///modules/sshd/${conf_file}" } RHEL tabanlı conf Debian tabanlı conf /etc/puppet/modules/ntp/files/ntp.conf.*
  • 52. Puppet: Modules - Dizin Yapısı (5) - /etc/puppet/modules/common/templates ❖ Templates dizininde, dinamik içerikli conf dosyaları tutulur. ❖ .erb uzantılıdırlar. ❖ Çok sayıda static conf dosyası oluşmasını önlemek içindir. file { 'ntp.conf': path => '/etc/ntp.conf', ensure => file, require => Package['ntp'], content => template("ntp/ntp.erb"), } /etc/puppet/modules/ntp/templates/ntp.erb
  • 53. Puppet: Modules - “Puppet Forge” ❖ Kendi modüllerinizi yazabileceğiniz gibi, başkalarının yazdığı modülleri de kurabilirsiniz. ❖ Puppet Forge Open Source Modül Reposu’dur. http://forge.puppetlabs.com/ # puppet module install puppetlabs-mysql # puppet module list
  • 54. Puppet: Nodes (1) Hangi manifest, class ya da module’lerin hangi client’larda çalıştırılacağı “node” kod bloğu içerisinden belirtilir. # vi /etc/puppet/manifests/site.pp node 'www1.example.com' { include common include apache include squid } node 'db1.example.com' { include common include mysql }
  • 55. Puppet: Nodes (2) ❖ Birden fazla node’u aynı block içinde tanımlayabilirsiniz: node 'www1.example.com', 'www2.example.com' { include common include apache, squid } ❖ Regex kullanabilirsiniz: node /^(foo|bar).example.com$/ { include common }
  • 56. Son Olarak Otomatikleştirilebilecek hiç bir şeyi hiç bir zaman manual yapmayın….