sub checkIPformat {
my ($ip) = @_;
my $ipformat = 0;
if($ip=~ m/^(\d\d?\d?)\.(\d\d?\d?)\.(\d\d?\d?)\.(\d\d?\d?)/ && ( $1 <= 255 && $2 <= 255 && $3 <= 255 && $4 <= 255 )) {
$ipformat=1; #1 is ok
}
return $ipformat;
}
Yazılım Geliştirme. Otomasyon. Web & Mobil Yazılım Geliştirme. WebServis & RestApi Uygulamaları. Sunucu ve Network Otomasyon Yazılımları.
script etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
script etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
5 Haziran 2017 Pazartesi
Perl ile bir IP adresinin IPV4 uyumluluğunun kontrolü
Perl ile yazdığınız script içinde alttaki basit SUB ile bu kontrolü yapmanız mümkün.
Etiketler:
ip kontrol,
ipv4 kontrol,
perl,
script,
yazilimp
28 Eylül 2016 Çarşamba
Nokia (Alcatel-Lucent) 7750 SR cihazına SSH ile bağlanıp komut gönderen perl scripti
Merhaba,
Nokia 7750 Service Router (SR) cihazına bağnarak komut gönderen bir script paylaşmak istiyorum.
Cisco cihazlardan biraz farklı olarak direkt kanal üzerinden komut göndermek yerine kanal üzerinden bir terminal edinilerek shell üzerinden yazmak sureti ile komutumuzu gönderiyor ve çıktısını alıyoruz.
Teşekkürler,
Cem Selmanoğulları
Nokia 7750 Service Router (SR) cihazına bağnarak komut gönderen bir script paylaşmak istiyorum.
Cisco cihazlardan biraz farklı olarak direkt kanal üzerinden komut göndermek yerine kanal üzerinden bir terminal edinilerek shell üzerinden yazmak sureti ile komutumuzu gönderiyor ve çıktısını alıyoruz.
#!/usr/bin/perluse Net::SSH2;use warnings;use strict;no warnings 'uninitialized';my $host = "A.B.C.D";my $user = "ssh-username";my $password = "password";my $komut = "show router interface\r";#SSH baglantisi saglanirmy $ssh = Net::SSH2->new();if(!$ssh->connect($host)){print("SSH Baglantisinda Problem - $@ \n");exit(1);} else {print("\nSSH Baglantisi Yapiliyor...\n");}sleep(1);if(!$ssh->auth_password($user,$password)){print("Kullanici-Sifre Problemi - $@");exit(1);} else {print("\nBaglandi...\n\n");}sleep(1);print("Gonderilen Komut : ".$komut."\n\n");#Kanal acilarak komut gonderilirmy $channel = $ssh->channel();$channel->blocking(0);$channel->pty(1); #set tty$channel->shell();sleep (1);$channel->write("environment no more\r".$komut);sleep (1);my $output;$channel->read($output,99999999);print "Komut Ciktisi :\n $output\n";
Teşekkürler,
Cem Selmanoğulları
Etiketler:
7750 configuration,
7750 konfigurasyon,
7750 remote connect,
7750 script,
7750 service router,
7750 service router script,
7750 uzak bağlantı,
alcatel 7750,
nokia 7750,
perl script,
script,
service router,
sr
27 Temmuz 2016 Çarşamba
Bir IP adresinin verilen Subnet içinde olup olmadığını Perl script yazarak anlamak.
Merhaba,
Verilen bir ip adresinin verilen bir subnet içinde olup olmadığını anlamak için basit bir perl scripti.
$ip = 192.168.10.11
$subnet = 192.168.10.0/24
sub checkip {
my ($ip, $subnet) = @_;
my $result = 0;
my @iparr = split(/\./, $ip);
my $ipval = $iparr[0] * 2**24 + $iparr[1] * 2**16 + $iparr[2] * 2**8 + $iparr[3];
my @temparr = split(/\//, $subnet);
my $ipsub = $temparr[0];
my $netmask = $temparr[1];
my @ipsubarr = split(/\./, $ipsub);
$ip2val = $ipsubarr[0] * 2**24 + $ipsubarr[1] * 2**16 + $ipsubarr[2] * 2**8 + $ipsubarr[3];
if( $ipval >> (32-$netmask) == $ip2val >> (32-$netmask) ) {
$result = 1;
}
return $result;
}
Sonuç değeri olarak $result=1 geldiğinde ip adresinin ilgili subnete ait olduğunu anlamış oluruz.
Verilen bir ip adresinin verilen bir subnet içinde olup olmadığını anlamak için basit bir perl scripti.
$ip = 192.168.10.11
$subnet = 192.168.10.0/24
sub checkip {
my ($ip, $subnet) = @_;
my $result = 0;
my @iparr = split(/\./, $ip);
my $ipval = $iparr[0] * 2**24 + $iparr[1] * 2**16 + $iparr[2] * 2**8 + $iparr[3];
my @temparr = split(/\//, $subnet);
my $ipsub = $temparr[0];
my $netmask = $temparr[1];
my @ipsubarr = split(/\./, $ipsub);
$ip2val = $ipsubarr[0] * 2**24 + $ipsubarr[1] * 2**16 + $ipsubarr[2] * 2**8 + $ipsubarr[3];
if( $ipval >> (32-$netmask) == $ip2val >> (32-$netmask) ) {
$result = 1;
}
return $result;
}
Sonuç değeri olarak $result=1 geldiğinde ip adresinin ilgili subnete ait olduğunu anlamış oluruz.
2 Ocak 2015 Cuma
Web sayfası yüklenme performansını izleyen bir script (Perl)
Merhaba,
Perl ile web sayafalarının performansını izlemek için bir scripti paylaşmak istiyorum.
Web üzerinde bulduğum bir scripti değiştirip düzenleyerek alttaki hale getirdim.
Scriptimiz web sayfasını http protokolü ile ham kod halinde bilgisayarımıza indirecek ve işlemin başlaması ile bitişi arasındaki süreyi tutarak sayfanın nekadar sürede açıldığını (indirildiğini) bulacak.
Sayfanın indirilebilip indirilemediğine bakacak. İndirilebiliyor ise ham kodu ekrana basacak.
İndirme işlemi belirledigimiz sureden uzun sürüyor ise alarm oluşturacak.
Perl ile web sayafalarının performansını izlemek için bir scripti paylaşmak istiyorum.
Web üzerinde bulduğum bir scripti değiştirip düzenleyerek alttaki hale getirdim.
Scriptimiz web sayfasını http protokolü ile ham kod halinde bilgisayarımıza indirecek ve işlemin başlaması ile bitişi arasındaki süreyi tutarak sayfanın nekadar sürede açıldığını (indirildiğini) bulacak.
Sayfanın indirilebilip indirilemediğine bakacak. İndirilebiliyor ise ham kodu ekrana basacak.
İndirme işlemi belirledigimiz sureden uzun sürüyor ise alarm oluşturacak.
#!/usr/local/bin/perl -wuse LWP::UserAgent;use Crypt::SSLeay;use HTTP::Cookies;use HTTP::Headers;use HTTP::Request;use HTTP::Response;use Time::HiRes 'time','sleep';$browser = 'Mozilla/4.04 [en]';$rooturl = 'http://www.myperltestportal.com/';$cookie_jar = HTTP::Cookies->new;$ua = LWP::UserAgent->new;MAIN: {$ua->agent($browser);$latency = &get("index.php");if($response->content =~ m/404 Not Found/) {last;} else {if($latency > 0.5) {print "\n\nGECIKME VAR\n\n";last;} else {print "\n\nGECIKME YOK\n\n";last;}}sleep 5;}sub get {local ($path) = @_;$request = new HTTP::Request('GET', "$rooturl$path");if ($response) {$cookie_jar->extract_cookies($response);$cookie_jar->add_cookie_header($request);}$start = time( );$response = $ua->request($request);$end = time( );$latency = $end - $start;if (!$response->is_success) {print $request->as_string( ), " Basarisiz: ", $response->error_as_HTML;}$GOSTER=OK;if($response->content =~ m/404 Not Found/) {print "\n\n*****\n\n404 ERROR\n\n*****\n\n";} else {if ($GOSTER eq "OK") {print "\n\nWEB SAYFASI DOSYA ICERIGI\n";print $response->content;print "\n###\n".$path." Dosyasi Kaynaktan Basari Ile Alindi \n\n###\n";print "\n".$path." Dosyasinin Yuklenmesi ".$latency."Surmustur.\n";}}$latency;}
23 Aralık 2014 Salı
Bir hata durumunda Alarm üreten, email atan script - (Alarm Clear özelliği ile birlikte)
Merhaba,
PERL ile basit bir monitoring uygulaması yazalım.
Bu uygulama linux makineye ssh ile bağlansın. Bir script çalıştırarak bu scriptin çıktısında içinde Alarm geçen satırlar olması durumunda email atsın. Çıktıdaki Alarm kelimeleri yok olduğunda ise hata düzeldi şeklinde email atsın.
Bunun için Perl ün Net::SSH2 kütüphanesini kullanıyoruz.
Linux makineye ssh ile bağlandıktan sonra ilgili scripti çalıştırıp çıktıyı alıyor ve işlemlerimize alttaki scriptteki açıklamalar ile devam ediyoruz.
Burda script kendi makinenizde çalışmakta ve uzaktaki makineye ssh ile bağlanmakta ve komut gönderip çıktısını alıp yine kendi makinenizde çıktıyı işlemektedir.
PERL ile basit bir monitoring uygulaması yazalım.
Bu uygulama linux makineye ssh ile bağlansın. Bir script çalıştırarak bu scriptin çıktısında içinde Alarm geçen satırlar olması durumunda email atsın. Çıktıdaki Alarm kelimeleri yok olduğunda ise hata düzeldi şeklinde email atsın.
Bunun için Perl ün Net::SSH2 kütüphanesini kullanıyoruz.
Linux makineye ssh ile bağlandıktan sonra ilgili scripti çalıştırıp çıktıyı alıyor ve işlemlerimize alttaki scriptteki açıklamalar ile devam ediyoruz.
Burda script kendi makinenizde çalışmakta ve uzaktaki makineye ssh ile bağlanmakta ve komut gönderip çıktısını alıp yine kendi makinenizde çıktıyı işlemektedir.
#!/usr/bin/perl -w
use Net::SSH2;
use warnings;
use strict;
no warnings 'uninitialized';
my $host = "192.168.10.1";
my $user = "myuser";
my $password = "mypassword";
my $ssh = Net::SSH2->new();
### SSH ile yukarıdaki ip adresine bağlanılır
if(!$ssh->connect($host)){
print("SSH Baglantisi Saglanamadi - $@ \n");
exit(1);
}
if(!$ssh->auth_password($user,$password)){
print("Kullanici Otantikasyon Sorunu - $@");
exit(1);
}
### Script çıktısı ve alarmları yazmak için Alarms.txt ve output.txt dosyaları oluşturulur.
my $myfilepath = "C:\\Otomasyon\\Alarms.txt";
unlink $myfilepath;
$myfilepath = "C:\\Otomasyon\\output.txt";
unlink $myfilepath;
my $output;
### showlines.pl scripti ssh bağlantısı üzerinden çalıştırılır ve çıktısı output a alınır.
my $channel = $ssh->channel();
$channel->shell();
my @output;
my $r=0;
print $channel ("showlines.pl\n");
@output=$channel->READLINE();
print @output;
$channel->close;
$ssh->disconnect;
print scalar @output;
for($r=0; $r < (scalar @output);$r++){
print $output[$r]."\n";
}
### Alınan çıktı output.txt dosyasına yazılır
open (MYFILE, '>> C:\Otomasyon\output.txt');
for($r=0; $r < (scalar @output);$r++){
print MYFILE $output[$r]."\n";
}
close (MYFILE);
my $old_alarm_state = 0;
my $line="";
### Her kontrolde bir önceki kontrolde alınan alarmların sayıları ToplamAlarmSayisi.txt dosyasında tutulur
### Burada bir önceki kontrolde kaç alarm olduğu çekilir
open (MYFILE, 'C:\Otomasyon\ToplamAlarmSayisi.txt');
while (<MYFILE>) {
chomp;
$line = $_;
$old_alarm_state = $line;
}
my $alarm_state = 0;
my $alarms="";
### Yeni kontrolde kaç alarm olduğu ve hangi satırlarda alarm olduğu çekilir
open (MYFILE, 'C:\Otomasyon\output.txt');
while (<MYFILE>) {
chomp;
$line = $_;
if($line=~ m/Alarm/ || $line=~ m/alarm/ || $line=~ m/ALARM/){
$alarm_state++;
$alarms = $alarms.$line."\n";
} else { }
}
### Yeni alarm sayısı ToplamAlarmSayisi.txt dosyasına yazılır. Böylece bir sonraki kontrolde kullanılacak.
open (MYFILE, '> C:\Otomasyon\ToplamAlarmSayisi.txt');
print MYFILE $alarm_state;
close (MYFILE);
### Eğer en az 1 alarm alındı ise Alarms.txt dosyasına alarm olan satırlar eklenir.
if($alarm_state!=0) {
open (MYFILE, '>> C:\Otomasyon\Alarms.txt');
print MYFILE $alarms;
close (MYFILE);
open (MYFILE, '> C:\Otomasyon\ToplamAlarmSayisi.txt');
print MYFILE $alarm_state;
close (MYFILE);
}
### Eski alarm sayısı sıfırdan büyük (yani eskiden alarm vardı). Yeni alarm sayısı sıfır ise alarm temizlendi demektir. Mailler temizlendi şeklinde Clear mesajı atılır.
if($old_alarm_state!=0 && $alarm_state==0) {
print "\n\nAlarm Temizlendi - Mail Gonderildi \n\n";
system("wscript C:\\Otomasyon\\alarmtemizlendi.pl "."\"".$alarms."\"");
}
### Eski alarm sayısı ve yeni alarm sayısı sıfır ise Alarm yok demektir ve mail atılmaz
### Eski alarm sayısı ve yeni alarm sayısı eşit ise bir değişiklik yok demektir email atılmaz
### Eski alarm sayısı sıfır ve yeni alarm sayısı en az 1 ise yeni alarm geldi demektir mail atılır.
### Eski alarm sayısı sıfırdan fazla ise ve yeni alarm sayısı eski alarmsayısından en az 1 fazla ise yeni bir ### alarm geldi demektir. Mail atılır.
if($old_alarm_state==0 && $alarm_state==0) {
print "\n\nAlarm YOK >>>> Mail Gonderilmedi \n\n";
} elsif($old_alarm_state==$alarm_state) {
print "\n\nDurum Degisikligi Yok >>>> Mail Gonderilmedi \n\n";
} elsif($old_alarm_state==0 && $alarm_state!=0) {
print "\n\nYeni Alarm Olustu >>>> Hic Alarm Yoktu - Yeni Alarm Geldi";
system("wscript C:\\Otomasyon\\alarmmailigonder.pl "."\"".$alarms."\"");
} elsif($old_alarm_state!=0 && $alarm_state>$old_alarm_state) {
print "Daha Once Alarm Vardi >>>> Ek Alarm Satiri Geldi";
system("wscript C:\\Otomasyon\\alarmmailigonder.pl "."\"".$alarms."\"");
}
Teşkkürler,
Cem Selmanoğulları
22 Aralık 2014 Pazartesi
Altyapı Otomasyon Araçları - Puppet & Chef
Merhaba,
Bugün son zamanların popüler altyapı otomasyon araçlarından bahsetmek istiyorum. CFEngine, Bcfg2, Puppet ve Chef gibi ürünler bulut, sanal ve fiziksel ortamların otomasyonunda sıkça kullanılmaktadır

Altyapı yönetimi yapan ekiplerin işlerini rahatlatan bu ürünler son zamanlarda yazılımcıların da dikkatini çekmeye başladı. Ürünlerin yazılım projelerine de dahil edildiğini görmek mümkün. Özellikle yazılımcılar ile alt yapı yönetimi yapan uzmanlar arasında kalan bölgede bu araçların güzel işler yaptığını görüyoruz.
Bu ürünlerden benim ilgimi en çok çeken Puppet ve Chef e kısa bir bakış atmak istiyorum.
CHEF :
2009 yılından bu yana kullanılmakta olan Chef in Puppet tan etkilendiğini söylemek mümkün. Ubuntu, Debian, Rhel, Centos, Fedora, MAC OS, Windows, MS Windows Server gibi geniş bir yelpazede ürünü destekliyor. Temelde geliştirme Ruby scripting dili domaininde yapılmakta, buda Ruby bilen kişilerin Chef i kullanmasını kolaylaştırıyor.
Birbiri ile iletişim halinde 3 modül içermektedir. Chef sunucusu, node lar ve Chef Workstation. Chef sunucusu çoklu node ortamlarını yönetebilecek konfigurasyon datası içerir.Bu konfigurasyonlar ve kaynaklar gerektiğinde node lar tarafından istenir. Chef otomasyon adımlarını içeren reçeteleri üzerinde tutar. Birden fazla reçete (Recipe) ve şablon (Template) CookBook ları oluşturur. Kullanıcılar "Knife" ismi verilen bir CLI aracılığı ile Chef ile etkileşime geçerler.Belirlenen bir otomasyon reçetesinin bir yada çoklu node ortamına uygulanması mümkündür. Bir otomasyon reçetesi uygulanırken diğer reçeteleri de çağırarak uygulamaya koyabilir.
Alttaki çizimden anlaşılacağı üzere CookBook ları workstationda düzenleyip Knife ile Chef sunucusuna göndeririz. Chef istemcisi belli periyodlarda yapılandırma bilgilerini sunucudan alarak node lar üzerinde uyguluyor.
Chef komponentlerini detaylı listeleyecek olursak;
[Tablo http://www.ibm.com/ sitesinden alınmıştır.]
Bugün son zamanların popüler altyapı otomasyon araçlarından bahsetmek istiyorum. CFEngine, Bcfg2, Puppet ve Chef gibi ürünler bulut, sanal ve fiziksel ortamların otomasyonunda sıkça kullanılmaktadır

Altyapı yönetimi yapan ekiplerin işlerini rahatlatan bu ürünler son zamanlarda yazılımcıların da dikkatini çekmeye başladı. Ürünlerin yazılım projelerine de dahil edildiğini görmek mümkün. Özellikle yazılımcılar ile alt yapı yönetimi yapan uzmanlar arasında kalan bölgede bu araçların güzel işler yaptığını görüyoruz.
Bu ürünlerden benim ilgimi en çok çeken Puppet ve Chef e kısa bir bakış atmak istiyorum.
CHEF :
2009 yılından bu yana kullanılmakta olan Chef in Puppet tan etkilendiğini söylemek mümkün. Ubuntu, Debian, Rhel, Centos, Fedora, MAC OS, Windows, MS Windows Server gibi geniş bir yelpazede ürünü destekliyor. Temelde geliştirme Ruby scripting dili domaininde yapılmakta, buda Ruby bilen kişilerin Chef i kullanmasını kolaylaştırıyor.
Birbiri ile iletişim halinde 3 modül içermektedir. Chef sunucusu, node lar ve Chef Workstation. Chef sunucusu çoklu node ortamlarını yönetebilecek konfigurasyon datası içerir.Bu konfigurasyonlar ve kaynaklar gerektiğinde node lar tarafından istenir. Chef otomasyon adımlarını içeren reçeteleri üzerinde tutar. Birden fazla reçete (Recipe) ve şablon (Template) CookBook ları oluşturur. Kullanıcılar "Knife" ismi verilen bir CLI aracılığı ile Chef ile etkileşime geçerler.Belirlenen bir otomasyon reçetesinin bir yada çoklu node ortamına uygulanması mümkündür. Bir otomasyon reçetesi uygulanırken diğer reçeteleri de çağırarak uygulamaya koyabilir.
Alttaki çizimden anlaşılacağı üzere CookBook ları workstationda düzenleyip Knife ile Chef sunucusuna göndeririz. Chef istemcisi belli periyodlarda yapılandırma bilgilerini sunucudan alarak node lar üzerinde uyguluyor.
Chef komponentlerini detaylı listeleyecek olursak;
| Component | Description |
|---|---|
| Attributes | Describe node data, such as the IP address and hostname. |
| Chef client | Does work on behalf of a node. A single Chef client can run recipes for multiple nodes. |
| Chef Solo | Allows you to run Chef cookbooks in the absence of a Chef server. |
| Cookbooks | Contain all the resources you need to automate your infrastructure and can be shared with other Chef users. Cookbooks typically consist of multiple recipes. |
| Data bags | Contain globally available data used by nodes and roles. |
| Knife | Used by system administrators to upload configuration changes to the Chef Server. Knife is used for communication between nodes via SSH. |
| Management console | Chef server's web interface for managing nodes, roles, cookbooks, data bags, and API clients. |
| Node | Hosts that run the Chef client. The primary features of a node, from Chef's point of view, are its attributes and its run list. Nodes are the component to which recipes and roles are applied. |
| Ohai | Detects data about your operating system. It can be used stand-alone, but its primary purpose is to provide node data to Chef. |
| Recipe | The fundamental configuration in Chef. Recipes encapsulate collections of resources that are executed in the order defined to configure the nodes. |
| Repository (Chef repository) | The place where cookbooks, roles, configuration files, and other artifacts for managing systems with Chef are hosted. |
| Resource | A cross-platform abstraction of something you're configuring on a node. For example, users and packages can be configured differently on different OS platforms; Chef abstracts the complexity in doing this away fro m the user. |
| Role | A mechanism for grouping similar features of similar nodes. |
| Server (Chef server) | Centralized repository of your server's configuration. |
Chef ile yapılabilecek basit bir örneği ele alacak olursak;
Networkünüzdeki tüm windows, linux, unix sunucularınız ile router ve güvenlik cihazlarınızda NTP konfiurasyonu yapmak istiyorsunuz. NTP konfigurasyonu olmayanlara eklenecek, var olanlarsa ise bu konfigurasyon yenilenecek. Bu işi Chef ile hazırlayacağınız otomasyon reçeteleri ile hızlıca halletmeniz mümkün olacaktır. Onlarca cihazdan binlerce cihaza konfiurasyon yapmak için aynı reçeteleri kullanarak hem zamandan kazanacak hem de insan kaynaklı dikkatsizlikler ile oluşabilecek hataların önüne geçeceksiniz.
Chef ile neler yapabiliriz;
Hayallerinizle sınırlı olmakla birlikte altta birkaç başlık sayabiliriz.
- Sunucu başlatma/kapatma
- Sunucu üzerine uygulama kurma
- Sunucu üzerinde uygulama yönetimi
- Sunucu üzerinde konfigurasyon yönetimi
- Sunucu envanter yönetimi
- Sunucu üzerinde şirket politikalarına uyumluluk kontrolleri
- Kurulacak uygulama öncesi ortam isterlerinin hazırlanması
- Yeni sunuculara işletim sistemi kurulumu...
Chef ile neler yapabiliriz;
Hayallerinizle sınırlı olmakla birlikte altta birkaç başlık sayabiliriz.
- Sunucu başlatma/kapatma
- Sunucu üzerine uygulama kurma
- Sunucu üzerinde uygulama yönetimi
- Sunucu üzerinde konfigurasyon yönetimi
- Sunucu envanter yönetimi
- Sunucu üzerinde şirket politikalarına uyumluluk kontrolleri
- Kurulacak uygulama öncesi ortam isterlerinin hazırlanması
- Yeni sunuculara işletim sistemi kurulumu...
PUPPET :
Puppet ın 2005 yılı civarından buyana kullanıldığını görüyoruz. Google, Oracle gibi firmalar altyapı yönetiminde bu aracı kullanmaktadır. Chef e göre daha zor bir öğrenme süreci olan Puppet çok geniş bir yelpazede işletim sistemini desteklemektedir. Kullanıcı topluluklarının Chef e göre çok daha geniş ve aktif olduğunu söylemek mümkün.
Puppet "Puppet Master" isimli bir ana sunucuyu kullanır. Bu sunucu node lar ve gruplar arasında konfigurasyonları merkezileştirir. Örnek vermek gerekirse üzerinde Apache çalışan linux makinelerinizi Puppet Master üzerinde gruplayabilirsiniz. Puppet Agent yönetilen sistemler üzerinde çalışır. Böylece herhangi bir otomasyon işini yada konfigurasyon değişikliğini bir yada birden fazla grup içinde makinelere aynı anda uygulama şansına sahip olursunuz.
Puppet "Facter" ismi verilen bir araca sahiptir. Facter sistem metadatasını tutar ve sunucular arasında filtrelemeye izin verir. Sunucu isimleri, işletim sistem versiyonları, modelleri, ip leri gibi...
Puppet komponentlerine göz atalım.
| Component | Description |
|---|---|
| Agent | A daemon process running on a node that collects information about the node and sends it to the Puppet master. |
| Catalog | Compilation of facts that specifies how to configure the node. |
| Facts | Data about a node, sent by the node to the Puppet master. |
| Manifest | Describes resources and the dependencies among them. |
| Module | Groups related manifests (in a directory). For example, a module might define how a database like MySQL gets installed, configured, and run. |
| Node | A host that is managed by the Puppet master. Nodes are defined like classes but contain the host name or fully qualified domain name. |
| Puppet master | The server that manages all the Puppet nodes. |
| Resource | For example, a package, file, or service. |
[Tablo http://www.ibm.com/ sitesinden alınmıştır.]
Puppet "Dependency Management" özelliğini diğer otomasyon ürünlerine göre çok daha fazla geliştirmiş ve ön plana çıkarmış bir üründür. Buda özellikle kompleks ve geniş IT altyapısı olan firmalarda özellikle altyapı yönetimi yapan ve script kullanmayı tercih mühendislerin gözünde ürünü vazgeçilmez hale getirmektedir.
Puppet ile network otomasyon işleri de yapmak mümkündür. Network ve güvenlik uzmanları çoğunlukla işlerini rahatlatmak amacı ile scripting kullanmakta fakat yaptıkları bu işleri daha organize ve tekrar kullanılabilir hale getirememektedirler. Puppet bu konuda da geniş networklerin yönetiminde uzmanlara zaman kazandırmakta ve mühendisleri yaptıkları işlerde insan hatasından uzak tutmaktadır.
Puppet ile yapılabileceklere bir örnek vermek gerekirse;
Bir bankaya ait 250 şube yönlendiricilerinde onlarca satırlık ACL düzenlemesi yapmak, yeni satır eklemek, silmek, var olan ACL satırlarında değişiklik yapmak ve bu işlemleri hatasız gerekleştirmek çok uzun bir sürece yayılacak bir projedir. Puppet ile bunu çok kısa sürede yapmanız mümkündür. Bunu yaparken yapılan konfigurasyonların test edilmesi, rollback mekanizmasının oluşturulması gibi konular da Puppet ın yetenekleri arasında olacaktır.
Puppet ile yapılabilecekleri genelleyecek olursak;
- Sunucu başlatma/kapatma
- Sunucu üzerine uygulama kurma
- Sunucu üzerinde uygulama yönetimi
- Sunucu üzerinde konfigurasyon yönetimi
- Sunucu envanter yönetimi
- Sunucu üzerinde şirket politikalarına uyumluluk kontrolleri
- Kurulacak uygulama öncesi ortam isterlerinin hazırlanması
- Yeni sunuculara işletim sistemi kurulumu
- Disk/Storage/Dosya Sistemi yönetimi
- Kullanıcı/Grup yönetimi
- Yedekleme işlemleri
- Güvenlik yönetimi
Ve daha önce de belirttiğimiz gibi hayallerinizle sınırlı pek çok otomasyon işi.
Puppet ile network otomasyon işleri de yapmak mümkündür. Network ve güvenlik uzmanları çoğunlukla işlerini rahatlatmak amacı ile scripting kullanmakta fakat yaptıkları bu işleri daha organize ve tekrar kullanılabilir hale getirememektedirler. Puppet bu konuda da geniş networklerin yönetiminde uzmanlara zaman kazandırmakta ve mühendisleri yaptıkları işlerde insan hatasından uzak tutmaktadır.
Puppet ile yapılabileceklere bir örnek vermek gerekirse;
Bir bankaya ait 250 şube yönlendiricilerinde onlarca satırlık ACL düzenlemesi yapmak, yeni satır eklemek, silmek, var olan ACL satırlarında değişiklik yapmak ve bu işlemleri hatasız gerekleştirmek çok uzun bir sürece yayılacak bir projedir. Puppet ile bunu çok kısa sürede yapmanız mümkündür. Bunu yaparken yapılan konfigurasyonların test edilmesi, rollback mekanizmasının oluşturulması gibi konular da Puppet ın yetenekleri arasında olacaktır.
Puppet ile yapılabilecekleri genelleyecek olursak;
- Sunucu başlatma/kapatma
- Sunucu üzerine uygulama kurma
- Sunucu üzerinde uygulama yönetimi
- Sunucu üzerinde konfigurasyon yönetimi
- Sunucu envanter yönetimi
- Sunucu üzerinde şirket politikalarına uyumluluk kontrolleri
- Kurulacak uygulama öncesi ortam isterlerinin hazırlanması
- Yeni sunuculara işletim sistemi kurulumu
- Disk/Storage/Dosya Sistemi yönetimi
- Kullanıcı/Grup yönetimi
- Yedekleme işlemleri
- Güvenlik yönetimi
Ve daha önce de belirttiğimiz gibi hayallerinizle sınırlı pek çok otomasyon işi.
Teşekkürler,
Cem Selmanoğulları
Etiketler:
chef,
chef ile otomasyon,
chef repository,
chef workstation,
knife,
otomasyonp,
puppet,
puppet master,
ruby,
ruby dsl,
script
19 Aralık 2014 Cuma
HP Network Automation Ürününü Tanıyalım
Merhaba,
Uzunca süre üzerinde çalıştığım ve çeşitli projeler yaptığım HP Network Automation ürününden bahsetmek isterim. Birçoğunuz HP NA olarak da tanıyorsunuz bu ürünü. HP nin Network Management ürün ailesine ait bir ürün olan HP NA oldukça sağlam ve oturmuş bir ürün.
Birçok kişinin paralel çalışarak günler içinde yapabileceği çalışmaları saatler ve hatta dakikalar içinde yapabiliyor. 500 tane router a 1 saat içinde değişik konfigurasyonlar yapabildiğinizi hayal edin ?
Ürünün yeteneklerine göz atalım;
Konfigurasyon Değişikliği Yönetimi :
Konfigurasyonlardaki değişiklikler kaydedilir. Buna snapshot diyoruz Geriye dönük eski konfigurasyonlara erişimi sağlar. İhtiyaç anında hızlı bir şekilde eski konfigurasyona dönülür. Yeni ve eski konfigurasyonlardaki değişiklikler satır satır karşılaştırılarak gösterilir. Böylece eski konfigurasyonda nelerin değiştitildiği, silindiği, eklendiği ve bunların kimler tarafından nezaman yaptığı bilgisi tutulur.
Uyumluluk kuralları (Complience Check) :
Tüm network cihazları bu kurallara göre taranır. Uyumsuzluk durumunda alarm üretilir yada uyumsuzluğu giderecek bir aksiyon oluşturulur (Remedation Script). Örnek vermek gerekirse networkünüzde cihazlarınız üzerinde telnet ayarı kalmadığından ve sadece ssh ayarlandığından nasıl emin olabilirsiniz ? NA tüm cihazlara belli periyodlarda bağlanıp kontrol eder. Unutulan bir telnet konfigurasyonu olması durumunda uyarı verir ve konfigurasyonu düzeltir. Anlayacağınız herhangi bir cihazda telnet konfigurasyonu unutuldu ise NA bunu silecek yerine SSH konfigurasyonu yazacaktır.
Araştırmalara göre network adminleri zamanlarının %45 ine kadarını manuel operasyonlarda harcamaktadırlar.
Networkte Manuel Hatalar :
Network çalışanlarının pekçok zaman start-up konfigurasyon ve running konfigurasyonu kaydetmeyi unuttukları gözlenmektedir. Akabinde olabilecek herhangi bir kesinti yada sistem restartında yeni konfigurasyon kaybedilecektir. Bunun önüne geçmek için bu konfigurasyonların eşit olup olmadığı hergün NA tarafından kontrol edilir. Gerekirse eşit olmayanlar eşitlenir.
> HP NNM (Network Node Manager) ile entegre edilebilir. Envanterler NNM üzerinden güncellenebilir. Ayrıca NA kendisi de Network cihazlarını keşfedebilir. Network haritalandırması yapabilir.
> ITIL, COSO, SOX, PCI,CoBIT standartlarına uyunluğu araştırıp raporlar. Uyumsuzlukları force etme imkanı sağlar.
> NA güçlü bir ACL otomasyonu sağlar. Hazır templateler yada yeni oluşturulabilecek otomasyon scriptleri ile detaylı bir ACL otomasyonu sunar.
> Cihazların IOSların saklar. Gerekli durumlarda yeni IOS yüklenmesi ve güncellenmesine olanak sağlar.
IOS versiyonları envanterini tutar ve güncelliği kontrol eder. Güncel olmayanlar durumunda raporlama yapar.
> İş akışı onay mekanizması çalıştırabilirsiniz.
> HP Server Automation ile NA entegre çalışabilir ve Serverların hangi network cihazlarındaki hangi değişikliklerden etkilendiği gibi bilgilerin üretilmesi sağlanabilir.
> Patchlerin topluca cihazlara geçilmesine olanak sağlar.
> Güçlü bir envanter takibi ve raporlaması sunar.
> Schedule joblar yada job grupları çalıştırılabilir.
> Gelişmiş command scriptleri hazırlanıp cihazlara grup bazlı basılmasına izin verir.
> CLI komutlarınız izlenerek yaptığınız işlerin bir script halinde kaydına izin verilir. Böylece bir cihazda yaptığınız değişiklikleri başka cihazlara script olarak topluca basabilirsiniz.
> Cihazlara bağlantılar sınırlandırılabilir. Sadece SSH yada SSH-2 kullanılabilecek şekilde force edilebilir.
> Cihaz konfigurasyonları NA arayüzünden değiştirilebilir, inline commentler eklenebilir ve deploy edilebilir.
Düşünün...
Onlarca satırlık ACL tanımlamanız olan 300 ün üzerinde cihazınız var. Bu ACL lerden 23 tanesi belli kriterlere göre silinecek, 12 tanesi değiştirilecek, 6 tane yeni eklenecek. Bu düzenlemeyi elle yapmak her cihaza bağlanarak nekadar zamanınızı alır ? Network Automation ile birkaç saat içinde bu işin bittiğini düşünün. Hem de manuel yaparken oluşabilecek hatalardan uzak bir şekilde.
Bir güvenlik açığı olduğunu ve bir gecede 1500 cihaza patch geçmeniz yada konfigurasyon değişikliği yapmanız gerektiğini düşünün. Paralel çalışarak kaç kişi kaç günde halledebilir bu işi.
Ya Otomasyonla kaç saate biter bu iş ?
Teşekkürler,
Cem Selmanoğulları
Uzunca süre üzerinde çalıştığım ve çeşitli projeler yaptığım HP Network Automation ürününden bahsetmek isterim. Birçoğunuz HP NA olarak da tanıyorsunuz bu ürünü. HP nin Network Management ürün ailesine ait bir ürün olan HP NA oldukça sağlam ve oturmuş bir ürün.
Birçok kişinin paralel çalışarak günler içinde yapabileceği çalışmaları saatler ve hatta dakikalar içinde yapabiliyor. 500 tane router a 1 saat içinde değişik konfigurasyonlar yapabildiğinizi hayal edin ?
Ürünün yeteneklerine göz atalım;
Konfigurasyon Değişikliği Yönetimi :
Konfigurasyonlardaki değişiklikler kaydedilir. Buna snapshot diyoruz Geriye dönük eski konfigurasyonlara erişimi sağlar. İhtiyaç anında hızlı bir şekilde eski konfigurasyona dönülür. Yeni ve eski konfigurasyonlardaki değişiklikler satır satır karşılaştırılarak gösterilir. Böylece eski konfigurasyonda nelerin değiştitildiği, silindiği, eklendiği ve bunların kimler tarafından nezaman yaptığı bilgisi tutulur.
Uyumluluk kuralları (Complience Check) :
Tüm network cihazları bu kurallara göre taranır. Uyumsuzluk durumunda alarm üretilir yada uyumsuzluğu giderecek bir aksiyon oluşturulur (Remedation Script). Örnek vermek gerekirse networkünüzde cihazlarınız üzerinde telnet ayarı kalmadığından ve sadece ssh ayarlandığından nasıl emin olabilirsiniz ? NA tüm cihazlara belli periyodlarda bağlanıp kontrol eder. Unutulan bir telnet konfigurasyonu olması durumunda uyarı verir ve konfigurasyonu düzeltir. Anlayacağınız herhangi bir cihazda telnet konfigurasyonu unutuldu ise NA bunu silecek yerine SSH konfigurasyonu yazacaktır.
Araştırmalara göre network adminleri zamanlarının %45 ine kadarını manuel operasyonlarda harcamaktadırlar.
Networkte Manuel Hatalar :
Network çalışanlarının pekçok zaman start-up konfigurasyon ve running konfigurasyonu kaydetmeyi unuttukları gözlenmektedir. Akabinde olabilecek herhangi bir kesinti yada sistem restartında yeni konfigurasyon kaybedilecektir. Bunun önüne geçmek için bu konfigurasyonların eşit olup olmadığı hergün NA tarafından kontrol edilir. Gerekirse eşit olmayanlar eşitlenir.
> HP NNM (Network Node Manager) ile entegre edilebilir. Envanterler NNM üzerinden güncellenebilir. Ayrıca NA kendisi de Network cihazlarını keşfedebilir. Network haritalandırması yapabilir.
> ITIL, COSO, SOX, PCI,CoBIT standartlarına uyunluğu araştırıp raporlar. Uyumsuzlukları force etme imkanı sağlar.
> NA güçlü bir ACL otomasyonu sağlar. Hazır templateler yada yeni oluşturulabilecek otomasyon scriptleri ile detaylı bir ACL otomasyonu sunar.
> Cihazların IOSların saklar. Gerekli durumlarda yeni IOS yüklenmesi ve güncellenmesine olanak sağlar.
IOS versiyonları envanterini tutar ve güncelliği kontrol eder. Güncel olmayanlar durumunda raporlama yapar.
> İş akışı onay mekanizması çalıştırabilirsiniz.
> HP Server Automation ile NA entegre çalışabilir ve Serverların hangi network cihazlarındaki hangi değişikliklerden etkilendiği gibi bilgilerin üretilmesi sağlanabilir.
> Patchlerin topluca cihazlara geçilmesine olanak sağlar.
> Güçlü bir envanter takibi ve raporlaması sunar.
> Schedule joblar yada job grupları çalıştırılabilir.
> Gelişmiş command scriptleri hazırlanıp cihazlara grup bazlı basılmasına izin verir.
> CLI komutlarınız izlenerek yaptığınız işlerin bir script halinde kaydına izin verilir. Böylece bir cihazda yaptığınız değişiklikleri başka cihazlara script olarak topluca basabilirsiniz.
> Cihazlara bağlantılar sınırlandırılabilir. Sadece SSH yada SSH-2 kullanılabilecek şekilde force edilebilir.
> Cihaz konfigurasyonları NA arayüzünden değiştirilebilir, inline commentler eklenebilir ve deploy edilebilir.
Düşünün...
Onlarca satırlık ACL tanımlamanız olan 300 ün üzerinde cihazınız var. Bu ACL lerden 23 tanesi belli kriterlere göre silinecek, 12 tanesi değiştirilecek, 6 tane yeni eklenecek. Bu düzenlemeyi elle yapmak her cihaza bağlanarak nekadar zamanınızı alır ? Network Automation ile birkaç saat içinde bu işin bittiğini düşünün. Hem de manuel yaparken oluşabilecek hatalardan uzak bir şekilde.
Bir güvenlik açığı olduğunu ve bir gecede 1500 cihaza patch geçmeniz yada konfigurasyon değişikliği yapmanız gerektiğini düşünün. Paralel çalışarak kaç kişi kaç günde halledebilir bu işi.
Ya Otomasyonla kaç saate biter bu iş ?
Teşekkürler,
Cem Selmanoğulları
Etiketler:
anm,
automated network management,
automation script,
expect,
hp bto,
hp na,
hp network automation,
hp om,
hp omi,
hp ovo,
network automation,
nnm,
nnmi,
otomasyonp,
perl,
script
Kaydol:
Kayıtlar (Atom)


