docker cok kullanilan komutlar kisa kisa – Adim 3

Evet , hizlica cok kullanilir komutlari inceleyip gecelim ….

Elimizde docker container kuracak hangi imajlar var bakalim.

vahric:~ vahricmuhtaryan$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              0f0e96f1f267        10 days ago         177.5 MB
ubuntu              latest              b72889fa879c        2 weeks ago         188 MB

Ilgili kolonlari acikalamak gerekir ise repo adi olarak redis , sanki bir klasor acilmis ve icersine latest diye bir imaj koyulmus , her bir imajin tekil bir numarasi , ne zaman yaratildigi ve kapladigi alani belirtilmis.

Ek olarak isterseniz docker images <repo_adi> seklinde veya docker images <repo_adi>:tag gibide listeleme yapabilisiniz ama aradiginiz seyin %100 uyusmasi gerekiyor repo* veya re?po gibi bir arama mekanizmasi yok !

Simdi, bir imaj indirelim, diyelim centos en son surum ki burada ek birsey belirmeye gerek yok kendisi <tag> kismina bakarsaniz latest olarak belirtmis yani en son version centos.

vahric:~ vahricmuhtaryan$ docker pull centos
Using default tag: latest

fakat diyelim siz en son surumu degilde bir onceki veya olan 6.6 surumune sahip imaji indirmek istiyorsunuz. Asagidaki komutta bir ustteki satira gore farki kullandigimiz <tag> yani centos:6.6  . Tag lar “:” den sonra belirtiliyor.

vahric:~ vahricmuhtaryan$ docker pull centos:6.6
6.6: Pulling from library/centos

Read the rest of this entry

Neymis bu Graphite … (Giris)

En son  soyleyecegimi basta soylemek gerekir ise Graphite aynen RRDtool gibi geldi , uygulamanizdan, sunucularinizdan hatta metrik toplayabileceginiz x seyden mesela networkden aldiginiz degerleri saklayip bunu icin grafikler cizebiliyor size, bu sekilde hem performans hemde durum bilgilerini toparlayip bir ekrandan veya kendinize ozel ekranlar yaratabilir ve diger ucuncu parti yazilimlarla ornegin cabot ile alarm uretebiliyorsunuz.

Benim Graphite’yi incelememdeki amac tam olarak “Tracking Dynamic Host and Application Metrics at Scale” bunla beraber sirada ilgili kitap da Docker monitor etmek icin yontemlerden biri Graphite hakkinda bilgiler veriyor.

Graphite’ye bir sekilde metrikleri yollamaniz gerekiyor, bildigim ozel bir metrik toplayicisi yok bunla ilgili bir liste var fakat ben bu makalede sadece telnet ve/veya python kullanarak nasil ve ne yaratabiliriz Graphite uzerinde onu deneyecegim.

Read the rest of this entry

VisorFSObj: 1954: Cannot create file /var/lib/vmware/hostd/journal/1462853708.8163 for process hostd-worker because the inode table of its ramdisk (root) is full.

Problem : No vMotion , No possibility to start VM

in vmware.log on ESXi host is like below

VisorFSObj: 1954: Cannot create file /var/lib/vmware/hostd/journal/1462853708.8163 for process hostd-worker because the inode table of its ramdisk (root) is full.

All articles talking about snmpd but snmpd was not working for us but inodes table is still full .

Command to see inode usage is : esxcli system visorfs ramdisk list

To Solve the problem ;

You can use any way to handle it until find out this article but better solution is try to stop unused services like if its HP you can stop some of it like ams or stop CIM services , vm or something like that to free up inodes and then try to move vms on that server to go !

I know its not good solution but this is the last thing we can do to solve the problem before find better solution😉

VM

Hatalari Yakalayalim Beyler …

Iste , hata mesajimiz bu ve ciktinin onemli yeride “ValueError“. Asagidaki cikti yas soruldugunda string girildiginde alindi.

/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/vahricmuhtaryan/PycharmProjects/fonksiyonlar1/test1.py
Yasin Kacdfdf
Traceback (most recent call last):
File “/Users/vahricmuhtaryan/PycharmProjects/fonksiyonlar1/test1.py”, line 5, in <module>
a = int(raw_input(“Yasin Kac”))
ValueError: invalid literal for int() with base 10: ‘dfdf’

Process finished with exit code 1

Baska bir ornek , buradada onemli olan “urllib3.exceptions.MaxRetryError” . Aciklamasi normal boye bir site yok baglanilacak.

/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/vahricmuhtaryan/PycharmProjects/fonksiyonlar1/test1.py
Traceback (most recent call last):
File “/Users/vahricmuhtaryan/PycharmProjects/fonksiyonlar1/test1.py”, line 14, in <module>
istek = http_w_pool.request(‘get’,’http://www.yupyu42342342p.com&#8217;)
File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/urllib3/request.py”, line 69, in request
**urlopen_kw)
File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/urllib3/request.py”, line 90, in request_encode_url
return self.urlopen(method, url, **extra_kw)
File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/urllib3/poolmanager.py”, line 165, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/urllib3/connectionpool.py”, line 628, in urlopen
release_conn=release_conn, **response_kw)
File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/urllib3/connectionpool.py”, line 628, in urlopen
release_conn=release_conn, **response_kw)
File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/urllib3/connectionpool.py”, line 628, in urlopen
release_conn=release_conn, **response_kw)
File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/urllib3/connectionpool.py”, line 608, in urlopen
_stacktrace=sys.exc_info()[2])
File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/urllib3/util/retry.py”, line 273, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host=’www.yupyu42342342p.com’, port=80): Max retries exceeded with url: / (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x101def590>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known’,))

Process finished with exit code 1

Burada program hataya dusmeden bir uyari yaratmamiz gerekiyor , aslinda try icin gerekli kismi yaptik ve ValueError/urllib3.exceptions.MaxRetryError denen hatalari yakaladik onun icin kodu soyle duzenleyip bir sonraki adima gecebiliriz.
Read the rest of this entry

docker-machine – Adim 2

docker-machine windows ve Mac OSX gibi isletim sistemleri uzerinden birden fazla Docker Host’u manage etmek icin kullanilan bir binary .

Ben Mac OSX kullanicisiyim ve makinemde Docker Toolbox kurulu ki icersinde  docker-machine iceriyor , yok ise edinin kendisi ek olarak Linux ve Windows icinde mevcut.

docker-machine tek bir noktadan networkunuzdeki docker host’lari yonetebildigi gibi Digital Ocean , Openstack ve diger cloud provider’lardaki kaynak havuzunuzda docker host’lar hazirlayabilir ve yonetebilirsiniz.

Bu makalede generic driver kullanarak hali hazirda uzerinde ubuntu kurulu bir VM i sisteme tanitacagim (hatta oncesinde uzerinde Docker da kurulmus yani existing docker host’u ekliyoruz)

Simdi asil amacim docker-machine ile docker host’lari yonetmekten cok karsilastigim hatalar ve cozumleri belirtmek.

Herkes yaratarak baslar , biz silerek baslayalim ama oncesinde bir listeleyelim ne var diye ….

vahric:.ssh vahricmuhtaryan$ docker-machine ls

NAME       ACTIVE   DRIVER    STATE     URL                        SWARM   DOCKER    ERRORS

docker01   –        generic   Running   tcp://10.111.21.210:2376           Unknown   Unable to query docker version: Unable to read TLS config: open /Users/vahricmuhtaryan/.docker/machine/machines/docker01/server.pem: no such file or directory

docker02   –        generic   Running   tcp://10.111.21.210:2376           Unknown   Unable to query docker version: Unable to read TLS config: open /Users/vahricmuhtaryan/.docker/machine/machines/docker02/server.pem: no such file or directory

Sonra silelim Read the rest of this entry

Biri debug mi dedi :) yok yok ben print kullaniyorum

:) Evet zaten birsey yazabildigimiz yok birde yalandan debug edecegiz diye dosyayi acip oraya print yok bu fonksiyonu cagirmis obur dosyaya print, cok cilgin oluyor : )

Diyeceksiniz ki IDE lerde zaten var bu is , yukaridan debug dugmesine tikliyorsunuz , sonra sol a iki top koyuyorsunuz , alta bir console geliyor muthis ama sunucu tarafinda birde sizin olmayan kodu , script’leri debug etmek istiyorsaniz Python Debugger -pdb- cok guzel …

Su anda en favori komutum su ; -m parametresi ile pdb modulunu yukluyoruz ve birinci satirdan itibaren adim adim ilermeye baslayabiliriz.


vahric:self_class vahricmuhtaryan$ python -m pdb file1.py 
> /Users/vahricmuhtaryan/PycharmProjects/self_class/file1.py(7)<module>()
-> class Eskiversionclass:
(Pdb) 

Read the rest of this entry

Python six module 1.5.2 cause project creation Openstack with Ansible

Issue is : Getting an error when try to create project with ansible in Openstack

Error is :  fatal: [localhost]: FAILED! => {“changed”: false, “failed”: true, “invocation”: {“module_name”: “os_project”}, “parsed”: false}

This is what version Ubuntu i have 

noroot@acc:~/ansible$ lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 14.04.3 LTS

Release: 14.04

Codename: trusty

Solution is : remove six.py from /usr/lib/python2.7/dist-packages/ , download 1.10.0 from pypi and put the six.py

VM

Class Kemige Dayaninca :)

Uzun zamandir su OOP dir class dir , self dir , __init__ dir , constructer , inheritance , instance  derken bir turlu ilgilenememistim , simdi bir kod incelemesi sirasinda ihtiyac oldu , iyikide olmus, bir yerden baslamak gerekiyordu.

Burada class nedir, oop nedirden bahsetmeyecegim , sanki eristigimiz bir foknsiyon gibi class a erismek , self kullanimi ve constructer ornegi olacak.

Oncelikle dokumanlari okurken belki yanlis bir baslangic olabilir ama python da eski ve yeni version class tanimlamasi gibi birsey var. Yeni version dedigimiz class i yaratmak icin artik varsayili olarak inheritance yapmak gerekiyor.

Inheritance aslinda Windows kullanicilarininda bildigi gibi ustten ilgili dosya haklarini almanin class uyarlamasi gibi birsey, burada haklari almiyorsunuzda degerleri veya attribute leri aliyorsunuz , bir nevi klonlama , kopyalamada diyebiliriz.

En basitinden class ornegi ;

class Eskiversionclass:
    # pass burada ne yazicagimizi bilmedigimizden kod hata vermesin diye
    # kullanilan placeholder
    pass

class Yeniversion(object):
    pass

Simdir burada once __init__ e bir goz atalim , aslinda __init__ bir constructer veya constructer method’u degil , yani diyemeyiz ki __init__ == constructer .

Read the rest of this entry

Love to set keepalive option with my MacBook Pro for SSHing …

vahric:~ vahricmuhtaryan$ ssh -o “ServerAliveInterval 10” yupyop@8.8.8.8

Hehehehe , funny , sorry its a joke , no any idea about username of google dns server nor password ..

OpenLDAP Hakkinda Bilinmesi Gerekenler

Sadece OpenLDAP kurulumunda bir sikinti yok , rpm veya apt ile ilgili openldap , openldap-servers ve openldap-clients paketlerini kullandiniz linux dagitimina gore kurmaniz yeterli ama benim konum bu degil …

Konfig Dosyalari :

  •  /etc/sysconfig/ldap –> Kendisi openldap client konfigrasyon dosyasi , bu dosya uzerindeki tum degisiklikler aninda devreye girer herhangi restart edilecek veya acip kapatilacak bir deamon yok
  • /etc/openldap/slapd.conf –> Kendisi openldap server konfigrasyon dosyasi , restart gereksinimi duyariz bu dosya uzerindeki degisikliklerde
  • Eger slapd konfigrasyon dosyasini kontrol etmek istiyorsaniz “slaptest -u” komutunu cli> da calistirmaniz yeterli
  • OpenLDAP 2.4 ile beraber slapd servisini resetlemeden konfigrayonda degisiklik yapmak icin “cn=config” adinda bir format var ki kendisini /etc/openldap/slapd.d altinda bulabilirsiniz
  • Mesela /etc/openldap/slapd.d/cn=config/ alintda DB veya monitoring’i editleyin …
  • Elimizdeki slapd.conf’dan “cn=config” olusturmak icin “slaptest -f /yol/su/slapd.conf -F /etc/openldap/slapd.d”  komutunu cli> da calistirmaniz yeterli (Unutmayin eger slapd.conf’u degistirdiyseniz ilgili /etc/openldap/slapd.d altindaki tum dosyalari silmelisiniz)
  • Komuta dokersek ;
    • rm -f /var/lib/ldap/*
      rm -rf /etc/openldap/slapd.d/*
      cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  • chown -R ldap:ldap( /etc/openldap/slapd.d ve /var/lib/ldap) veya chown -Rf root:ldap (sertifika) mutlaka obur turlu ya openldap servisi calismaz veya sertifikayi okuyamaz

Eger TLS/SSL ile secure LDAP baglantisi yapmak iletisimi sifreli yapmak istiyorsaniz sertifika (self ve orjinal) ve bir iki konfigrasyona ihtiyac var.

Self-Signed Sertifikalar Icin ; 

  • Mutlaka ama mutlaka sunucu hostname ile yarattiginiz sertifikadaki hostname lere dikkat edin , en onemli konu. Eger hostname “ldap” ise sertifika yaratirken  “ldap” eger hostname “ldap.bilmemne.com” ise yine certifika yaratilirken “ldap.bilmemne.com” kullanmalisiniz.
  • SLAPD_LDAPS=yes
  • Sertifika yaratmak icin
    • openssl req -new -x509 -nodes -out /etc/pki/tls/certs/oveyabu.pem -keyout /etc/pki/tls/certs/oveyabu.pem -days 365 (Dikkat key de ayni dosyada)
  • Ilgili dizini her zaman kontrol edin /etc/pki/tls/certs/:) Guzel seyler bulabilirsiniz mesela “ca-bundle.crt”
  • Sertifikayi slapd.conf da tanitmak icin
    • TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
      TLSCertificateFile /etc/pki/tls/certs/oveyabu.pem
      TLSCertificateKeyFile /etc/pki/tls/certs/oveyabu.pem

LDAP CLI ile Kayit Girmek veya Yapiyi Olusturmak icin 

ldapadd -x -D “cn=admin,dc=bilmemne,dc=com” -W -f orjbase.ldif

Tahmin edebileceginiz gibi yaraticaginiz OU , Group , User artik ne ise bunlari bir ldif dosyasina gommeniz yeterli.

Yukardaki ornek daha yeni kurulmus bir ldap server ve basedn icin ayarlamalar yapilmis durumda dosya icersine

LDAP GUI ile Yonetmek icin

Eger centos kullaniyorsaniz once repo’yu genisletin (http://fedoraproject.org/wiki/EPEL) (lutfen dikkat ilgili linux versionuna ait rpm dosyasini indirin) ve phpldapadmin’i kurun

Test Yapmak / Debug Icin Gerekli Komutlar 

  • openssl s_client -connect localhost:636 -showcerts –> Eger hem secure baglantiyi hemde sertifikayi gormek istiyorsaniz
    • 636 varsayili ldap TLS/SSL portu
  • d1 veya d2 veya d3 bu parametreyi ldapsearch veya ldapadd ile calistirdiginizda debug amacli kullanabilirsiniz
  • ldapadd
  • ldapsearch
    • Meseka ldapsearch ile TLS / SSL baslatilabilir
      -Z Specifies that SSL is to be used for the search request.
      -ZZ Specifies the Start TLS request. Use this option to make a cleartext connection into a secure one. If the server does not support Start TLS, the command does not have to be aborted; it will continue in cleartext.
      -ZZZ Enforces the Start TLS request. The server must respond that the request was successful. If the server does not support Start TLS, such as Start TLS is not enabled or the certificate information is incorrect, the command is aborted immediately.

Hepsi bu … Kolay Gelsin …

Follow

Get every new post delivered to your Inbox.

Join 128 other followers