Openstack Networking VLAN , sadece cli !

Openstack Provider Network olarak gecen , bildigimiz vlan’in Openstack ortaminda nasil kullanildigina bakacagiz.

Bizim icin onemli olan konfigrasyon dosyalari var, bunlara bakmadan once mechanism_driver olarak veya yapimizda Open vSwitch oldugun belirtmeliyim ;

  • ml2_conf.ini
  • ML2 –> Modular Layer 2 Plugin
    • [ml2] –> Kisminda
      • type_drivers : vlan (Openstack destekleyecegi network suruculeri)
      • tenant_network_types : vlan (Organizasyonlari atanacak network tipleri bu sekilde birden fazla aralarinda virgul kullanilarak burada tanimlaniyor)
    • [ml2_type_vlan]
      • network_vlan_ranges = physnet1
        • Burada dokumantasyona baktigimizda “<physical_network>:<vlan_min>:<vlan_max> or <physical_network>” seklinde bir kullanimdan bahsediyor.
        • physnet1 bir alias , kisaca fiziksel ethernet kartini belirtiyor , birden fazla belirtilebilir.
        • istenir ise physnet1:300:1000 –> Seklinde yazilabilir yani uzerinde 300 ‘den baslayip 1000’e kadar butun vlan’lar gececek demek oluyor, birden fazla belirtilebilir.
    •  [OVS]
      • bridge_mappings = physnet1:br-bond0
        • Burada daha onceden provider networks yani vlan’larin gececegi interface olarak br-bond0 tanimlanmis bir interface veriyoruz , burada fiziksel bir interface de olabilir , eth0 gibi , bond edilmis bir interface olabilir veya OVS uzerinde yaratilmis bir bridge port olabilir keze br-bond0 bir bridge port
  • Bundan sonra yapmamiz gereken sey arka tarafin yani network switch vlan konfigrasyonlarinin , sunucu port vlan konfigrasyonlarinin dogru bir sekilde ayarli olmasi
  • Administrative role’e sahip bir kullanicinin ilgili network’u olusturup , sanal makineye atanmasi
    • Komut satirinda ilgili Openstack RC dosyasini calistirin (ilgili proje, kullanici bilgilerini environment variables olarak atanmasi)
      • Kisaca komut satirinda
        • stack@helion-cp1-c0-m1-mgmt:~$ source service.osrc
        • stack@helion-cp1-c0-m1-mgmt:~$ export OS_PROJECT_NAME=”demo” veya hangi proje ise
    • stack@helion-cp1-c0-m1-mgmt:~$ neutron net-list  –> Diyerek isinalim
    • Network tipi vlan olan bir network yaratalim
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron net-create vlan185 –provider:network_type vlan –provider:physical_network physnet1 –provider:segmentation_id 185 –router:external false
      • Burada –router:external onemli , eger true derseniz bu degere bu durumda ilgili IP blogu floating IP icin kullanilacagini , herhangi VM’e set edilemeyecegini, yeni router yaratilip bu network’e baglayabileceginizi gosteriyor
    • Subnet yaratalim, yaratirken gw adresini set edelim
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron subnet-create –name subnetvlan185 vlan185 212.58.25.160/28 –gateway 212.58.25.161
      • Subnet yarattiktan sonra DHCP aktive olacagindan siradan iki ip yani 212.58.25.162 ve 212.58.25.163 devreye girecektir.
      • Eger DHCP kullanmak istemiyorsaniz –disable-dhcp diyebilirsiniz.
    • Port yaratalim , dikkat tenant ve daha onceden yarattigim network’u kullandim
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron port-create –tenant-id 48bf85bade894282a9f8c44d7802f4e7 –name vlantestport vlan185
      • Port-ID not edin (358a66d9-258a-42db-93c3-2e978259858c)
      • Ayni zamanda port-id’nin ilk 11 hanesini (358a66d9-25)
      • Ek olarak network_id not edin (2bd6c596-df9b-4beb-abfb-69f8995104d2)
      • Birde security_groups degerini not edin (0101df20-a25d-48ae-a6f7-0a9b2149f217)
    • Instance yaratalim
      • nova boot –flavor m1.tiny –image cirros-0.3.3-x86_64 –nic port-id=358a66d9-258a-42db-93c3-2e978259858c vlantestvm
      • Yarattigimiz instance hangi host uzerinde yaratildigina bakalim
      • stack@helion-cp1-c0-m1-mgmt:~$ nova show 15114f09-030f-44f8-ae33-1543b518c613
        • OS-EXT-SRV-ATTR:hypervisor_hostname  | helion-cp1-compute0002-mgmt
        • OS-EXT-SRV-ATTR:instance_name | instance-0000003c
      • Host’a baglanip kontrol edin/dogrulayin
        • stack@helion-cp1-compute0002-mgmt:~$ sudo virsh list
        • 5     instance-0000003c              running
      • Simdi openvswitch kullandigimizi soylemistik, bakalim oradan neler olmus, ovs-vsctl komutunu calistirin instance’in acildigi host uzerinde.
        • stack@helion-cp1-compute0002-mgmt:~$ sudo ovs-vsctl show | grep 358a66d9-25
          • veya
        • stack@helion-cp1-compute0002-mgmt:~$ sudo ovs-vsctl show | sed -n “/358a66d9-25/,/358a66d9-25/p”
        • br-int altinda ilgili bilgiler goreceksiniz, burada tag 6 diyor , aslinda bizim vlan185 idi
        • Port “qvo358a66d9-25”tag: 6Interface “qvo358a66d9-25”
        • Artik hardware degil software switch kullaniyoruz ve arp / switching tablosu degil flow tablosu ile ilgileniyoruz, bunun icin br-int bridge interface’ine ait tanimlanmis flow’lari listelemeliyiz
        • ovs-ofctl dump-flow komutunu flow bilgisin almak icin kullanacagiz
        • mod_vlan_id, openvswitch’in kendi icinde kullandigi bir etiketleme , dis dunyada VLAN icinde ise farkli bir vlan kosuyor.
        • dl_vlan ise dis dunyada kullanilan vlan , yani instance disari cikmak veya disardan instance’i bulmak istenildiginde 185 vlan’ina gelen paketler 6 vlan’ina , instance’da disari biryere paket gonderilmek isteniyor ise 6 vlan’indan 185 vlan’ina iletiliyor paketler
        • stack@helion-cp1-compute0002-mgmt:~$ sudo ovs-ofctl dump-flows br-int | grep mod_vlan_vid:6
        •  cookie=0x9dfdd283abb52bc6, duration=3143.625s, table=0, n_packets=7, n_bytes=420, idle_age=1971, priority=3,in_port=1,dl_vlan=185 actions=mod_vlan_vid:6,NORMAL
      • Birde Openstack’de network sanallastirma nasil yapiliyor’a bakalim , benim kurulumumda 3 adet Network Node’u var, ben ucune birden baglandim cunku networkler bu node’lar arasinda loadbalance edildiginden hangisinde acildigini bilmiyorum (Eger subnet yaratirken bu –disable-dhcp kullandiysaniz bundan sonrasi isinize yaramayacak)
        • Burada bilmemiz gereken sey Linux ve Namespaces , network sanallastirma network namespace’den geliyor ve ip netns komutuyla gorebiliyorsunuz. Bunun disinda mount , Cgroup , User , pid gibi namespaces’lar var. Ornegin Pid Namespace , container’lari dusunun her bir container’in kendine ait calisan process’leri mevcut ve bunlar birbirinden izole.
        • Openstack ve network sanallastirma adina konusursak , her bir network icin tum TCP/IP katmaninin bir klonu aliniyor bunun icinde interface/nic ve routing table’larin oldugunu dusunun boylece istenir ise her bir network ayni IP blogu ile calisabiliyor , mesela herkesin 10.0.0.0/24 network’unu kullaniyor gibi ama birbirlerine karismiyorlar, izole sekildeler.
        • stack@helion-cp1-c1-m1-mgmt:~$ sudo ip netns | grep 2bd6c596-df9b-4beb-abfb-69f8995104d2
        • qdhcp-2bd6c596-df9b-4beb-abfb-69f8995104d2
        • qdhcp , dhcp interface’inin baglandigi sanal bir network ve bir interface iceriyor , bakalim nasil bisiy
        • stack@helion-cp1-c1-m1-mgmt:~$ sudo ip netns exec qdhcp-2bd6c596-df9b-4beb-abfb-69f8995104d2 ifconfig
          • Ciktisinda tap interface olarak gordugunuz dhcp interface’i ve ip’si
        • Ayni network nodu uzerinde tap device’in bilgisini not alarak calisan dnsmasq uygulamasini kontrol edelim
        • stack@helion-cp1-c1-m1-mgmt:~$ ps -fe | grep dnsmasq | grep tapa5d7544f-9b
        • nobody    2524     1  0 14:08 ?        00:00:00 dnsmasq –no-hosts –no-resolv –strict-order –except-interface=lo –pid-file=/var/run/neutron/dhcp/2bd6c596-df9b-4beb-abfb-69f8995104d2/pid –dhcp-hostsfile=/var/run/neutron/dhcp/2bd6c596-df9b-4beb-abfb-69f8995104d2/host –addn-hosts=/var/run/neutron/dhcp/2bd6c596-df9b-4beb-abfb-69f8995104d2/addn_hosts –dhcp-optsfile=/var/run/neutron/dhcp/2bd6c596-df9b-4beb-abfb-69f8995104d2/opts –dhcp-leasefile=/var/run/neutron/dhcp/2bd6c596-df9b-4beb-abfb-69f8995104d2/leases –dhcp-match=set:ipxe,175 –bind-interfaces –interface=tapa5d7544f-9b –dhcp-range=set:tag0,212.58.25.160,static,172800s –dhcp-lease-max=16 –conf-file=/opt/stack/service/neutron-20160722T142043Z/etc/dnsmasq/dnsmasq-neutron.conf –domain=openstacklocal
        • Simdi ovs-vsctl show ve ovs-oflow dump-flows komutlari ile sizdeki tap portunu bulmaya calisin.
    • DHCP icin atanan ip adreslerini ping’leyip test edelim
      • PING 212.58.25.162 (212.58.25.162): 56 data bytes64 bytes from 212.58.25.162: icmp_seq=0 ttl=60 time=12.641 ms
    • Instance ping’lenmeyecek , instance yarattigimizda default security-group atandi instance’a
      • default security-group disari any, iceri dogru ise hicbir erisime izin vermez
      • Iceriye dogru All ICMP izni verin ve test edin
      • 64 bytes from 212.58.25.164: icmp_seq=90 ttl=60 time=0.840 ms

 

Advertisements

Openstack Security Group ve FWaaS , sadece cli !

Openstack neutron iki farkli katmanda guvenlik saglar. Ilki port bazli ki instance yaratilirken oncelike port yaratilir ve bu port’a atanan Security Group dogrultusunda VM-to-VM ayni L2 networkunde dair koruma saglayabilirsiniz. Ikincisi ise Router uzerinde, ne zamanki iki farkli network’u veya instance’lari internet’e ve/veya internet’den instance’lara dogru erisim soz konusu oldugunda Router uzerinde uygulanan firewall kurallari devreye girer. Baska bir deyisle Neutron NSX gibi kuzey-guney ve bati-dogu yollari uzerinde koruma saglar.

Security Groups

Security Group(SG), nova security group(NSG) uyumludur, ingress(giris)/egress(cikis) yonunde kural tanimlamanizi bunuda ilgili neutron portlarina uygulamaniza, gercek zamanli kural degisiklikleri uygulamaniza izin verir.

Davranis sekli giris yonunde sadece matched(uyan) aksi taktirde drop. Egress keza ayni fakat her yeni Security Group yaratildiginda disariya dogru tum trafik izinlidir.

Openstack uzerinde varsayili olarak “default security group” mevcut olup disa dogru tum trafik , security group icersinde tum trafik izinli olup disardan gelecek tum trafige karsi kapalidir.

Security Group sonuc olarak bir iptables uyarlamasidir fakat ML2 + OVS entegrastonu biraz karisiktir ve sirf iptables uygulanabilsin diye OVS ile instance arasinda linux bridge entegre edilmistir, ornek bir cizimi asagida gorebilirsiniz.

screen-shot-2016-10-18-at-11-25-05

Read the rest of this entry

Openstack Networking Router , sadece cli !

Islemlere baslamadan once ilgili komutlari calistiracaginiz sunucuda veya client’da ilgili Openstack RC (environment variables) dosyasini ayarlayin ve calistirin. Daha fazla bilgi icin bakiniz Openstack Networking VXLAN , sadece cli!

Amacimiz elimizdeki VXLAN networklerini internete ve/veya birbirleri arasinda eristirebilmek. Openstack’de bu islem icin Network Node‘lar kullaniliyor. Network Node’lari ile Controller Node’lari ayni yerde kosabildikleri gibi birbirlerinden izole sekildede calisabilirler. DVR (Distributed Virtual Router) olmadan once tum trafigin Network Node’lar uzerinden gecmesi gerekiyor idi fakat DVR’dan sonra Computer Node’larda devreye girdi ve trafik artik dagitik bir sekilde islenmeye basladi fakat burada trafigi SNAT ve DNAT olarak ayirmakta fayda var, SNAT trafigi halen Network Node uzerinden, DNAT trafigi ise Compute Node uzerinden ilerlemekte.

Openstack networking router konusurken ayni zamanda linux networking namespaces hakkinda bilgimiz ve ip netns cli komutlarinin kullanimi bizim icin onemli. Linux Networking Namespace bizim tcp/ip stack’inin ayni isletim sistemi uzerinde clone’lanmasi , bu clone’lari domain olarak nitelendirsek , her domain icersinde overlap networkler gibi tamamen birbirinden bagimsiz , loopback interface’ler , ethernet interface’ler , iptables tablolari ve routing tablolari icermekte , ip komutunun netns parametreside bu farkli domainlerdeki/namespace’lerdeki tcp/ip stack’ini yonetmek icin kullandigimiz cli komutu.

Router diyince artik ML2 scope’undan cikmis oluyoruz , yeni scope’umuz L3. Konfigrasyonlarimiz Neutron Server (neutron.conf) ve L3_Agent(l3_agent.ini) uzerinde olacak.

  • Oncelikle /opt/stack/service/neutron-20160722T142043Z/etc/neutron.conf bakalim
    • Dikkat edilmesi gereken konu l3_router plugin’in set edilmis olmasi
    • [DEFAULT]
      service_plugins = neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
    • Eger service_plugin tanimli degil ise Horizon GUI’de my.sa goremeyebilirsiniz
  • Bir sonraki konfigrasyon dosyasi sudo vi /opt/stack/service/neutron-20160722T142043Z/etc/l3_agent.ini
    • Burada iki onemli parametre var biri interface_driver digeri ise external_network_bridge ek olarak agent_mode‘da bizim icin onemli.
    • interface_driver kullandiginiz mechanism_driver ne ise o set edilmis olmali ornegin linux bridge veya OpenvSwitch(OVS)
    • external_network_bridge onemli cunku sisteme disariya dogru cikisin hangi interface’den yapilacagini belirtiyor
    • agent_mode ile DVR kullanip kullanmayacaginizi belirtiyor
  • Cli’da Router yaratmak icin
    • Oncelikle bir halihazirda elimizde Router var mi bakalim ?
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-list
    • Simdi yaratalim bir tane, asagidaki ornekte demo projesi icin bu islem yapilmakta
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-create Router1_demoprj –tenant-id 68ca3d8aa2294bc1bc606acbb8b9405a
    • Eger silmek isterseniz router-delete paramteresini kullanabilirsiniz.
    • Bir sonraki adima gecmeden once yarattigimiz router’in id‘sini not edelim neutron router-list komutu ile –> d4fe02b8-0cc0-4662-8573-b3b3f783baaf
  • Yukarda belirttigimiz gibi Router hem farkli network’leri birbiri ile konusturmakta hemde internet’e dogru cikislari saglamakta.
    • Once network’ler arasi konusmayi gorelim. Bir onceki Openstack Networking VXLAN , sadece cli! da sadece Demo-WebServers-Network1 (10.10.1.0/24) networku icin instance yaratmistik, bir tanede Demo-DBServers-Network1(10.10.2.0/24) icin yaratalim. Bu kez port yaratmayacagiz , instance yaratilirken otomatik olarak yaratilacak.
      • Asagidaki komutu calistirmadan once ortam degiskeni olan  OS_PROJECT_NAME ‘i guncelelyin
      • stack@helion-cp1-c0-m1-mgmt:~$ nova boot –flavor m1.tiny –image cirros-0.3.3-x86_64 DBServer1 –nic net-id=bb8dd87f-466e-4082-b69b-c6436bb12a18
      • Elimizde iki adet instance var biri WebServer1 10.10.1.6 digeri ise DBServer1 10.10.2.4
      • Ek olarak daha sonra kullanacagimiz ilgili subnet’lerin id’lerini not edelim neutron subnet-list komutu ile
        • dbsubnet –> fcf2a7da-9cda-45f9-9c9b-51750ca6d1bf
        • web-subnet –> fdb33ffc-43d5-415a-a090-fc8ccb37684d
      • Baslamadan once durumu resmeder isek, iki network var , her ikisine birer instance bagli.
        DUNYA/Internet mevcut , birde biraz once yarattigimiz router’imiz . Bir sonraki adimda router’i DB ve WEB subnet’lerine baglayacagiz
        screen-shot-2016-10-17-at-11-43-57
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-interface-add d4fe02b8-0cc0-4662-8573-b3b3f783baaf fcf2a7da-9cda-45f9-9c9b-51750ca6d1bf
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-interface-add d4fe02b8-0cc0-4662-8573-b3b3f783baaf fdb33ffc-43d5-415a-a090-fc8ccb37684d
      • Yarattiginiz interface/port’lari silmek icin herzaman router-interface-delete komutunu kullanabilirsiniz.
      • Yeni resim asagidaki gibi oldu ,eger Security Group bazinda bir sikinti yok ise DB ile Web sunuculari birbirleri ile konusabilecekler
        screen-shot-2016-10-17-at-12-01-53
      • Ayni goruntuyu cli’danda alabiliriz
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-port-list d4fe02b8-0cc0-4662-8573-b3b3f783baaf
    • Neutron Router sadece neutron networkler arasinda degil ayni zamanda instance’larin internet erisimleri icinde kullanilmakta ki buna Openstack’de external network olarak adlandiriliyor. Genelde bu network daha onceden yaratilmistir , eger hangi network’un external network oldugunu bilmiyorsaniz oncelikle neutron net-list yapip neutron net-show komutu ile router:external parametresi True olan network external network olacaktir.
    • Yukardaki eforu harcamaktansa sadece benim floating ip pool’um var mi acaba diyede bakabiliriz , buda bize ilgili external networkleri direkt verecektir.
    • stack@helion-cp1-c0-m1-mgmt:~$ nova floating-ip-pool-list
      • Simdi yukarda yaptigimiz gibi benzer bir islem yapacagiz , sadece bu kez komut biraz degisecek ama yine bizim router_id‘sine , external_network_id‘sine ihtiyac olacak . Ilgili komutu calistirdigimizda external network’den bir ip adresi alacagiz ve bu ip adresi bizim instance’larimiz icin SNAT konfigrasyonu tanimlanmis olacak fakat bunun disinda internet’den instance’larimiza dogru hicbir erisim acilmayacak
      • Router_id –> d4fe02b8-0cc0-4662-8573-b3b3f783baaf
      • External_Network_id –> efb5448d-7593-46f7-90ad-bd33206c2c7b
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-gateway-set d4fe02b8-0cc0-4662-8573-b3b3f783baaf efb5448d-7593-46f7-90ad-bd33206c2c7b
      • Yaptiginiz konfigrasyonu geri almak icin her zaman neutron router-gateway-clear parametresini kullanabilirsiniz.
      • Iste , yeni network baglanti semamiz , time to ping google.comscreen-shot-2016-10-17-at-14-47-51
    • Bu islemlerden sonra sira eger disaridan ilgili instance’a erisilmek istenir ise ne olacak konusu var. Burada floating ip denilen bir kavram isin icine giriyor.
      • Floating IP adresi direkt instance‘a atanabildigi gibi bir proje icin yaratilip instance’a atanmaya hazir halde bulundurulabilir.
      • Once sistem uzerinde halihazirda floating ip var mi bakalim
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-list
      • Bir tane yaratalim , ext-net bizim enternal network’un adi
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-create ext-net
      • Silmek icin floating ip id’sine ihtiyac var , floatingip-list diyerek elde edebilirsiniz
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-delete 89ce7905-0fb5-445c-b8b6-f8f5ff45a166
      • Bundan sonra ilgili floating ip adresini ilgili instance’a atamaya geldi sira. Bunun icin ilgili instance’in hangi port’una karsilik gelen id bilgisini kullanacagiz , diyelimki bizim web server’a floating ip atayacagiz. Ilgili sunucu ip adresi 10.10.1.6 idi, once bu ip adresinin atandigi neutron port id_sini bulalim
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron port-list | grep 10.10.1.6
        • –> 9759d23d-7863-497d-88c3-02067af12714
      • Atayacagimiz floating ip adresinin id’sini bulalim.
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-list
        • –> 54096c72-64f2-4133-984c-2061d4ba2b5a
      • Birbirlerine baglayalim
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-associate 54096c72-64f2-4133-984c-2061d4ba2b5a 9759d23d-7863-497d-88c3-02067af12714
        • Daha sonra eger security group’lardan ilgili izinler mevcut ise ilgili servis icin ilgili erisimler acilmis olacak.
      • Floating ip baglantisini kaldirmak icin neutron floatingip-disassociate

Kolay gelsin

VM

Openstack Networking VXLAN , sadece cli !

Islemlere baslamadan once ilgili komutlari calistiracaginiz sunucuda veya client’da ilgili Openstack RC (environment variables) dosyasini ayarlayin ve calistirin. Asagida bir ornek mevcut , bunun disinda Horizon’a ilgili kimlik bilgileri ile login olup Project –> Compute –> Access & Security tab’indan indirebilirsiniz.

Cli uzerinden islem yapmak icin Openstack-client kurulu olmali , eger kurulu degil ise kullandiginiz ilgili link’den gerekli paketleri kurabilirsiniz.

Ek olarak asagida calistiracaginiz tum komutlarin parametre bilgilerini vermeden once –debug yazarak calistirdiginizda (ornegin nova –debug list , openstack –debug project list) Openstack REST API‘de kesfetmeniz mumkun.

VXLAN icin on bilgiye ihtiyaciniz var ise bu makaleyi inceleyebilirsiniz , VMware/NSX olmus , OpenvSwitch (OVS), Hyper-V/NVGRE olmus cok onemli degil, prensipte birbirlerine yakin calisiyorlar.

Benim icin ;  Read the rest of this entry

Openstack Domain,Project,UserGroup,User,Role,Token,Quota

Openstack Identity API (Keystone) degistikce yeni kavramlar ortaya cikiyor , en son version 3 ile beraber (v2 artik kullanilmasi onerilmiyor) Multi-Domain kavrami ortaya cikti. Daha once Openstack projelere yuklenen tenant yani organizasyon olabilme yetisi yerini Workspace , Departman , Alt-Departman gibi soylemlere birakiyor.

Keystone, sistemciler icin bir active directory olarak calisir, token yaratir , token dogrular , catalog bilgisi , policy servis bilgilerini saglar.

Domain : En buyuk izolasyon kavrami oluyor. Yazilimcilar icin bir namespace veya servis, saglayicilar icin Firma/Sirket tadinda, kullanici , kullanici guruplari ve projeleri barindirmaya basliyor. Genel Openstack kurulumlarinda ortamda henuz baska domain yaratilmadan once “Default” adinda bir domain yaratiliyor.

Domain kavrami olmadan once bir proje icin atanan admin rolundeki kullanici tum openstack namespace’inde admin oluyordu.

Default Domain yaratildiginda ilgili openstack servislerine ait hesaplarda bu domain icersinde yaratilir, ornegin neutron , glance , heat , cinder gibi …

Read the rest of this entry

Openstack REST API Kolayca Ogrenme

Tek yapmaniz gereken once cli’daki komutlari ogrenmek sonra basina –debug parametresini koymak

 

Ornek : aa1 adindan bir Domain yaratiyoruz …

stack@helion-cp1-c1-m1-mgmt:~$ openstack –debug domain create aa1

Istek ve cevap hersey asagidaki gibi , bunu gibi ornekleri cogaltip REST API gereksinimlerini ve kullanmini kolayca anlayip uygulayabilirsiniz.

REQ: curl -g -i –cacert “/etc/ssl/certs/ca-certificates.crt” -X POST https://10.111.45.3:5000/v3/domains -H “User-Agent: openstack” -H “Content-Type: application/json” -H “Accept: application/json” -H “X-Auth-Token: {SHA1}aa0e9ca9215d6fa8cd7f9f814d5e637e06e95655” -d ‘{“domain”: {“enabled”: true, “name”: “aa1”}}’

“POST /v3/domains HTTP/1.1” 201 177

RESP: [201] Content-Length: 177 Vary: X-Auth-Token Server: Apache/2.4.10 (Debian) Date: Tue, 06 Sep 2016 08:26:58 GMT Content-Type: application/json x-openstack-request-id: req-2627ac03-1ea2-477c-8297-84ccbd32112d

RESP BODY: {“domain”: {“enabled”: true, “id”: “7bdc8676ca4b4c1491dc7668cf6fa7cb”, “links”: {“self”: “https://10.111.45.3:5000/v3/domains/7bdc8676ca4b4c1491dc7668cf6fa7cb&#8221;}, “name”: “aa1”}}

 

about time , ssl and other things …

To see the certification information from linux cli (k is optional for without verification)

curl –vvIk https://<FQDN>or<IP&gt;

To read the certificate file human readable (you can use -inform parameter to change the output format)

openssl x509 -in <your_certificate_file_name_maybe_txt_pem_whatever>

Sometimes you can have broken/corrupted pem or certificate files could be ! maybe wrong copy past , windows to linux copy , ftp copy issues that time using “curl” for only debug could not help pls try more tool to double check for example “wget”

I faced Socket error: [X509] PEM lib (_ssl.c:2751) and couldn’t find any solution and wget helped me, wget show us some of certifications files are not readable.

Another option is using openssl with s_client parameter

openssl s_client -host FQDN -port 443 -quiet

tzdata = time zone database

Sometime people are mixing UTC and GMT , GMT is time zone and UTC is time standard but both of them share same current time practice. No any country or territory use UTC as a local time.

Debian change time zone 

dpkg-reconfigure tzdata

or

sudo cp /usr/share/zoneinfo/xxx/xxx /etc/localtime

About how ntp work , what is stratum, what is reference clock pls check the links below. Generally reference clock is stratum-0 and its atomic time(cesium clock) some more levels there startum-1 , 2 up to 16 and looks like we are querying time from mostly  startum-2 servers.

https://ntpserver.wordpress.com/2008/09/10/ntp-server-stratum-levels-explained/

http://www.ntp.org/ntpfaq/NTP-s-algo.htm

To update time with date command perfect article from nixCraft http://www.cyberciti.biz/faq/howto-set-date-time-from-linux-command-prompt/

I mostly needed this one

date +%T -s “10:13:13”

To password less sudo privileges  

sudo su

echo “noroot ALL=(ALL) NOPASSWD: ALL” >> /etc/sudoers

sslvpnd can cause ha sync /Webinterface unresponsive issue? -another Fortinet story-

Today we faced Fortinet web interface become unresponsive,  we find out some articles and expect that killing/restarting httpd will be enough but we faced policy load issues for example try to list rules but we have empty response and after some time its gone and need to restart httpd to access webui again.

Then after some investigation we saw that cluster checksum is not consistent (command:diagnose sys ha cluster-csum)

Tried to sync ha config but not succeed (command:exec ha synchronize start) (for more pls check)

Then somehow we maybe did not prioritise  but cluster member which web interface is working but first snmp service stop response and then sslvpn connections are start to not work ! in this time what i remember we changed the password of sslvpn user but i don’t think that this help us but when we kill the sslvpnd magically non-responsive fortinet box become to run , after all checked ha csum its worked and snmp also start to work !

Actually if we did not try this (also vendor said that related firmware have a bug) we have to restart nodes and this will cause some downtime  . Version is 5.2.6

Some good link for debugging ha http://kb.fortinet.com/kb/documentLink.do?externalID=FD36494

diag  debug enable
diagnose  debug  console  timestamp enable
diag debug application hasync -1
diag debug application hatalk -1
execute ha synchronize start

When you can not kill process gently -another Fortinet story-

I expect that you know the pid but if its not you have two ways

Option 1

Walter (global) # diag test app snmpd 1

snmpd pid = 161

Option 2 (somehow related commands are not return some processes pids, then start to use fnsysctl )

List pid files then get pid id from related file

Walter (global) # fnsysctl ls /var/run/

Walter (global) # fnsysctl cat /var/run/snmpd.pid

161

Then execute (somehow diag sys kill 11 <pid_id> do not kill related pid)

Walter (global) # fnsysctl kill -9 161

thats it !