31 Temmuz 2017 Pazartesi

Ceph & Openshift Dynamic Provisioning

Ceph & Openshift Dynamic Provisioning

Dynamic provisioning için ceph tarafında admin key'e ihtiyac vardır. (pool içerisinde image oluşturabilecek yetkinlikteki kullanıcı)

cephmon01
ceph auth get-key client.admin | base64
QVFDK1I1yyyyyyyyyyyyGdElUcFJwZWRHdFNxxxxxxxPQ==

aldığımız base64 ile encode edilen keyi openshift tarafında kube-system namespace'inde create ediyoruz. (secret oluşturma)

openshiftmaster01
cat secret.admin.yml
apiVersion: v1
kind: Secret
metadata:
  name: ceph-secret-admin
type: "kubernetes.io/rbd"
data:
key: QVFDK1I1yyyyyyyyyyyyGdElUcFJwZWRHdFNxxxxxxxPQ==

oc create -f secret.admin.yml -n kube-system


Aşağıdaki komut ile dogruluyoruz.
oc get secret -n kube-system

Artık storageclass tanımı yapabiliriz.

cat create-storage-class.yaml

apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
  name: fast (1)
provisioner: kubernetes.io/rbd
parameters:
  monitors: ip.add.re.ss:6789,ip.add.re.ss:6789,ip.add.re.ss:6789 (2)
  adminId: admin (3)
  adminSecretName: ceph-secret-admin (4)
  adminSecretNamespace: kube-system (5)
  pool: test (6)
  userId: test (7)
  userSecretName: test-ceph-secret (8)

1 : storageclass adı
2 : ceph monların ip ve portları (Ornekte 3 adet mon var)
3 : ceph içerisindeki admin rolundeki kullanıcının adı
4 : ceph içerisindeki admin rolundeki kullanıcının secret keyi
5: secret keyin bulunduğu namespace (kube-system içerisinde oluşturmuştuk)
6: ceph’ten rbd allocate edilecek pool’un adı.

7. ve 8. adımlar için admin kullanıcı adı ve secret key kullanılabilir fakat daha dogrusu , sadece istenilen (örnekte test) pool üzerinde (caps: [osd] allow rwx pool=test) izni olan bir yetki tanımlayıp bunu dynamic provisioning için kullanabilecek namespace'lerde teker teker oluşturmak olucaktır.

Orneğin

cephmon01

ceph auth get-or-create client.test mon 'allow r' osd 'allow rw pool=test'

ceph auth get-key client.test | base64

Encoded elde edilen secret keyi openshift'te ilgili namespacelerde oluşturabiliriz.

Storageclass oluşturuldıktan sonra ilgili project'nin storage sekmesindeki listede fast  i görebilirsiniz.
Buradan  istenilen niteliklerde disk alabilirsiniz. Ayrıca sildiğimiz claimler otomatik olarak ceph üzerinden de silinecektir.


18 Mayıs 2017 Perşembe

Bash script parameters

#!/bin/bash

# Note :

# "$*" All the positional parameters (as a single word) *
# "$@" All the positional parameters (as separate strings)

# Print out all the parameters
echo "Parameters -> $@";

# Print out number of parameters
echo "Number of parameters: $#";

# Print out all the parameters as a single word (include separete)
echo "Number of parameters: $*";

total=$(echo $#)

a=0

# Print all the parameters in loop
for i in $(seq 1 $total);do
        echo "$a . parametre ${@:$i:1}"
        a=$(($a+1))

done

8 Mayıs 2016 Pazar

Django Admin Actions ile Eposta Gönderimi

:~$ cat admin.py
 
# -*- encoding: utf-8 -*-
from django.contrib import admin

# Sadece mesaj icin
from django.contrib import messages

# Eposta gonderimi icin
from django.core.mail import EmailMessage

# Epostanin sablonu icin
from django.template.loader import get_template

def email_gonder(modeladmin, request, queryset):
    # Secili olan elemani almak icin
    selected      = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
    # birden fazla eleman secili ise donguye sokmak icin
    for uye in selected :
        uye_    = userStat.objects.get(id=uye)
        variableX = XXXX.objects.get(bla bla bla)
        . . . . .
        htmly     = get_template('mail.html')
        d     = Context({ 'uye': uye_, 'variable in template': variableX, })
        subject, from_email, to = "Email Subject", "Name <do-not-reply@xxxxxxxx.com>", [uye_.email]
        html_content                 = htmly.render(d)
        msg             = EmailMessage(subject, html_content, from_email, to)
        msg.content_subtype = 'html'
        msg.send()
        # Admin panelde karsimiza uyari gelmesi icin. Burada msg.send() fonksiyonu istege gore koşula tabi tutulur.
        messages.info(request, "%s mail adresine mail basariyla gonderildi..." % uye_.email)




# Admin panelde eylemler/actions bolumunde bu sekilde belirir.
email_gonder.short_description = "Secili uyelere mail gonder"

class UserStatAdmin(admin.ModelAdmin):
    list_display = ['username', 'email']
    # Modelde varolan sinifin yapisina gore siralama degistirilebilir
    ordering = ['username']
    # Harici admin eylemleri burada belirtilir (bknz : fonksiyon adı)
    actions = [email_gonder]




Böylece admin panelde userStats bölümünde Eylemlerde "Secili uyelere mail gonder" seklinde belirir.

2 Mart 2016 Çarşamba

EMC Networker Management Console parola resetleme

EMC Networker Management Console uygulaması için varsayılan "administrator" kullanıcısının parolası unutulduysa aşağıdaki adımları yaparak parola varsayılan değerine döndürülebilir.

gst servisinin kurulu olduğu sunucuya giriş yapılarak;

# export GST_RESET_PWD=1
# /etc/init.d/gst stop
Stopping GST: ..
done.
# /etc/init.d/gst start
Starting GST:
GST Services, Version x.y.z.Build.a
done.

Servisi yeniden başlattıktan sonra, NMC 'e varsayılan kullanıcı adı ve parola ile giriş yapabiliriz.

kullanıcı adı : administrator
parola : administrator

Girişten sonra sizden yeni parolayı atamanızı isteyecektir. Yeni parolayı atadıktan sonra tekrar GST_RESET_PWD değişkenine "null" değerini atayabilirsiniz.

# export GST_RESET_PWD=
# /etc/init.d/gst stop
Stopping GST: ..
done.
# /etc/init.d/gst start
Starting GST:
GST Services, Version x.y.z.Build.a
done.
  

26 Eylül 2012 Çarşamba

pfSense - Rules


Güvenlik Duvarı - Kural Yazımı


Güvenlik duvarı kurallar kısmını bildiğim kadarıyla pfSense üzerinden anlatmaya çalışmak istedim. pfSense'de kuralların yazılacabileceği menüye ulaşmak için Firewall > Rules bağlantısına tıklamamız gerekir.

 
Bu menüde karşımıza üç sekme gelir. (LAN ve WAN olduğu varsayılırsa)

 
WAN (Wide Area Network)  için yazılan kurallar, WAN arayüzünden - belirli ip yada ip bloklarından ve belirli port yada port aralığından - gelen paketleri engellemek veya izin vermek için kullanılır. 

LAN (Local Area Network)  için yazılan kurallar, LAN arayüzünden - belirli ip yada ip blocklarından ve belirli port yada port aralığından - giden paketleri engellemek veya izin vermek için kullanılır.

FLOATING  sekmesine yazılan kurallar birden fazla arayüz üzerine hem gelen  hem giden yönde uygulanabilir. Floating kurallar LAN ve WAN sekmesine yazılan kurallardan daha öncelikli işlenir.

Kuralların işleyişi

     Kurallar yukarıdan aşağıya sıra düzensel olarak ele alınıp işlenir. Bundan dolayı kuralların sırası çok önemlidir. Örneğin yukarıya yazılan herhangi bir pass kuralı aşağıda blocklanmaya çalışılsa da herhangi bir etkisi olmayacaktır.
 

     Yukarıda yazılan kurallar dizininde alttaki engelleme kuralının herhangi bir etkisi olmayacaktır. 
 
    Kural yazılırken Pass ve Block seçeneklerinin yanısıra Reject seçeneği bulunur. Block seçildiğinde gelen paket güvenlik duvarı kuralına takılır ve izin verilmez. Paket direkt kesilir. Reject seçildiğinde ise paket gönderene geri gönderilir.


Alias

    "Alias"  ;  ip, host, yada port numaralarını gruplanabilmesini ve artık tek bir isimle çağrılabilmesini sağlar. 
    İzin verilmesi yada engellenmesi gereken ip, host yada port numaraları için ayrı ayrı kural yazmak yerine bunları ortak bir çatıda toplayıp kural yazarken bunu kullanmak karmaşılığı giderir,  okunabilirliği ve kontrolü artırır.

 
 
Alias tanımlandıktan sonra kuralda kullanılabilir.
 
   

     Daha sonra izinli_portlar isimli alias'a başka bir port numarasını eklediğimizde/çıkardığımızda  kurallara otomatik olarak eklenicektir/çıkarılacaktır.

    Yazdığınız kuralların belirli zaman aralıklarında devreye girmesini istiyorsanız Firewall - Schedules bölümünde bir schedule yaratıp kuralda kullanabilirsiniz.
     
    Kurallar kısmında göze çarpan bir diğer önemli seçenek de Layer7 seçeneğidir. Uygulama katmanında bir blocklama yapmak istiyorsanız Firewall > Traffic Shapper > Layer7 bölümüne girip bir tane oluşturmanız gerekir. Oluştururken etkinleştirmeyi unutmayınız. Etkinleştirilmemiş layer7 kalıbı listede gözükmeyecektir. Ayrıca layer7 uygulayabilmeniz için kural tipi "pass" kuralı (zaten layer7 bloklamaya yaradığı için ) ve protokol TCP, UDP veya TCP/UDP seçilmelidir.