Yapılandırma Yönetimi, DevOps yaşam döngüsünde çok önemli bir aşamadır. BT altyapısının otomasyonuna ve düzenlenmesine yardımcı olur.
Konfigürasyon yönetimi için Puppet, Ansible, Chef ve SaltStack gibi çeşitli araçlar vardır. Ve elbette Ansible, DevOps’taki en popüler araçlardan biridir. Binlerce sunucuyu ve eksiksiz BT altyapınızı kolaylıkla yönetebilir.
Bu yazıda aşağıdakileri ele alacağız..
- Ansible kurulumu
- SSH key exchange
- Ansible istemci kurulumu
- Ansible testi
Ansible Kurulumu
Basit tutmak için Ansible’ı iki sunucuda kullanmayı deneyelim. Aşağıdaki IP’ye sahip biri ansible-sunucu, diğeri ise ansible-client olacaktır.
- ansible-server – 10.0.0.1
- ansible-client – 10.0.0.25
Kurulum basittir… Ansible’ı kullanmak istediğiniz tüm sunucularda aşağıdakilerin yapılması gerekir. Bu durumda, her iki sunucunun üzerinde.
- Ansible kurulumu için gerekli olan yazılımı kurmak için aşağıdaki komutu çalıştırın.
root@ansible-server:~# apt install software-properties-common
- Depoyu ansible paketi ile kurun.
root@ansible-server:~# apt-add-repository --yes --update ppa:ansible/ansible
- Gelişmiş paketleme aracını güncelleyin (apt)
root@ansible-server:~# apt update
- Ve son olarak – yüklemek için aşağıdaki komutu çalıştırın
root@ansible-server:~# apt install ansible
Gerekli paketin yüklenmesi birkaç saniye sürecektir.
Kurulduğundan ve sürümünden nasıl emin oluyorsunuz?
Kolay. Kurulu olan ansible versiyonunu öğrenmek için –version sözdizimini ile kullanabilirsiniz.
root@ansible-server:~# ansible --version
ansible 2.8.1
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0]
root@ansible-server:~#
Gördüğünüz gibi Ansible 2.8.1 kurulu ve konfigürasyon dosyası konumu, python modülü gibi gerekli bilgileri sağlıyor.
Ardından, hizmet vermek ve bir müşterinin birbiriyle konuşabilmesi için SSH anahtar değişimi yapmamız gerekiyor.
SSH Key Exchange
Ansible, istemcisine SSH (Güvenli kabuk) aracılığıyla bağlanır.
Önce ansible-sunucuda, ansible-client’a kopyalanması gereken bir ortak anahtar üreteceğiz.
Kök kullanıcı olarak oturum açtığınızdan emin olun.
- Aşağıda gösterildiği gibi ssh-keygen komutunu kullanarak anahtarı oluşturun
root@ansible-server:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A root@ansible-server
The key's randomart image is:
+---[RSA 2048]----+
| =.+oo . |
| . B.B.= . |
| . o @oE + |
| . *oO * . |
| o++.S + . |
| .o +o . + |
| .o..o + |
| ..o o . |
| .o o. |
+----[SHA256]-----+
root@ansible-server:~#
Fark edeceğiniz gibi, .ssh klasöründe bir ortak anahtar oluşturdu. Tam yol /root/.ssh/id_rsa.pub şeklindedir.
Not: özel ve genel anahtar dosyalarının dünya çapında okunabilir olmadığından emin olun. Dosyaları doğrulamak için listeleyebilirsiniz.
- .ssh klasörüne gidin
cd /root/.ssh
- Dosyaları listeleyin
root@ubuntu:~# ls -l
-rw------- 1 root root 1679 Jun 19 00:37 id_rsa
-rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub
İznin yanlış olduğunu fark ederseniz, chmod komutunu kullanarak değiştirebilirsiniz.
Örn.
chmod 400 id_rsa
chmod 400 id_rsa.pub
Açık anahtarı, IP adresi 192.168.56.101 olan Ansible ana bilgisayarına kopyalayalım.
root@ansible-server:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established.
ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
root@ansible-server:~/.ssh#
Yukarıdaki çıktıda görebilirsiniz, 1 anahtar başarıyla eklendi. Bu, SSH anahtarının değiştirildiğini gösterir.
Ardından, bir Ansible istemcisi kuracağız.
Ansible İstemci Kurulumu
Önceki adımlarda açıklandığı gibi, istemci sunucusunda Ansible kurulum adımlarını zaten uyguladığınızı varsayıyorum.
İstemci veya Ana Bilgisayar kurulumu, Ansible sunucusunu istemcilerden haberdar etmekten başka bir şey değildir. Ve bunu yapmak için:
- Ansible sunucusuna giriş yapın
- /etc/ansible dizinine gidin
- Favori düzenleyicinizi kullanarak aşağıdakileri hosts dosyasına ekleyin
[Client]
node1 ansible_ssh_host=10.0.0.25
- hosts dosyasını kaydedin
Ansible Test
Tüm adımları doğru yaptıysanız, ansible-server üzerinde aşağıdaki komutu çalıştırdığınızda SUCCESS mesajı alacaksınız.
root@ansible-server:~/.ssh# ansible -m ping Client
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
root@ansible-server:~/.ssh#
Yukarıdakiler, bağlantıyı test etmek ve iyi olup olmadığını onaylamak için istemciye ping atar.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.