Şef-müşteriyi uzaktan yönetmenin daha şık bir yolu var mı?


22

Şef Hızlı Başlangıç ​​öğreticisinde önerilen yol budur:

knife ssh name:mynode -a ipaddress  -x ubuntu -i mycredentials.pem "sudo chef-client"

Bu gerçekten sakar. Gerçekten daha iyi bir yol yok mu, yoksa gerçek bir üretim ortamında yine de otomatik olarak güncellenen düğümlere sahip olacağınız fikri mi?


1
Sizce bu nasıl "sakar"?
womble

9
Peki, bu tarafa koy. Bu sakar olmazdı: "bıçak güncelleme adı: mynode". Hem müşteriyle nasıl bağlantı kuracağımı hem de şef müşteri komutunun adını (artı sudo izinleriyle çalıştırılması gerektiği) heceleyerek açıklamak zordur. Bıçak bir sürü başka karışıklığı soyutlamakta iyidir - neden bu olmasın?
Steve Bennett,

Yanıtlar:


11

İşlerin başlamasına nasıl başlayacağınız çok güzel olurdu, ancak yalnızca bir kez yapılması gerekiyor. Chef-client'in ilk çalıştırması genellikle init.d servisi olarak chef-client daemon'u etkinleştirir ve başlatır.

Gerçekten daha zarif bir şekilde yapmak isteseydiniz, knife-ssh'ı çıkarabilir ve ssh'yi doğrudan çalıştırabilirsiniz:

ssh ubuntu@ipadddress -i mycredentials.pem sudo chef-client

knife-ssh name:dynode, IP adresini zaten biliyorsanız kesinlikle yapmanız gerekmeyen arama terimiyle eşleşen düğümleri almak için Chef sunucusuna karşı bir arama yaptığı için muhtemelen daha hızlı olacaktır .


2
Tamam, sanırım bu soruyu cevaplıyor - hayır, daha iyi bir yol yok. Yazık "bıçak önyükleme" de aslında şef-müşteri çalıştıramaz.
Steve Bennett,

Bu sorunu çözmek için genellikle önyükleme senaryomun sonunda şef-müşteri çalıştırıyorum. Ancak knife-ssh'den hoşlanmıyorsanız, muhtemelen knife-bootstrap internals'in eşit derecede ungainly olduğunu düşüneceksiniz. Bir var örnek komut dosyası üzerinde github.
Tim Potter

1
ec2 server createSadece koşular eklentisi bıçak SSH + şef-istemci tarafından takip Bootstrap. Eğer daha iyi hissetmenizi sağlarsa, Şef yazarları daha akıllıca bir şey bulamadı.
kgilpin

Eğer şef-müşteri çalıştırmak için biraz zaman alırsa, bir zaman aşımı alırsınız. :( ssh: xx.xx.xx.xx ana bilgisayarına bağlanın bağlantı noktası 22: Bağlantı zaman aşımına uğradı
gdanko

Şef-müşterinin açılıştan sonra bir cini olarak çalıştırıldığı ve aralık setine bakılmaksızın, ÇOK YARARLI OLMASI GEREKEN YOLU: ssh ubuntu @ ipadddress -i mycredentials.pem -f -n "sudo killall -USR1 şefi -istemci". Çatal ssh, bunu aynı anda bir düğüm listesine yapmak için ssh.
Andrew S

12

Chef-client'i belirli bir rol veya tarif içeren tüm kutularda çalıştırmak için knife ssh kullanabilirsiniz :

knife ssh "role:web" "sudo chef-client" -x ubuntu --sudo 

Ya da EC2’de iseniz:

knife ssh "role:web" "sudo chef-client" -x ubuntu -a ec2.public_hostname 

2

Chef-client yazılımını dağıtmak ve çalıştırmak için ansible'ı kullanabilirsiniz.

$ ansible -i hosts all -a 'chef-client'

ansible pip ile kolayca kurulur:

pip install ansible

Envanter dosyanız ("ana bilgisayar" adlı örnekte) şöyle görünebilir:

[all] host1.example.com ansible_user=root host2.example.com ansible_user=root host3.example.com ansibel_user=root

(örneğe göre "tümü" dikkat edin) örneğimiz için yapılandırma dosyasındaki gruplamanın adıdır - bu isteğe bağlıdır ve herhangi bir şey olabilir. , vb.)

Yani, yine hepsini bir araya getirmek:

> ansible -i hosts all -a 'chef-client'

ya da belki:

> ansible -i hosts all -a 'systemctl status'


1
Burada ne yaptığını görüyorum ...;)
Spechal

0

Koşuyu yönetmek için Jenkins CI kullanıyorum. Linux sunucusu bir iş istasyonu olarak kurulur ve üzerine Jenkins vardır. Böylece düğümleri değiştirilmiş run_list ile önyükleyebilirim. Önyükleme işlemi, yine de, sonunda şef-müşteri tarafından yürütülüyor.

Geçici çalıştırma için, Jenkins işi bir düğümün run_listini değiştirmek ve istenen düğümde chef-client yürütmek için SSH eklentisini kullanmak için bıçak komutlarını yürütür.


0

Şef istemciye bir komut göndermek için ssh altı çizili kullanmak zorunda olmak üzücü.

Her şef istemcisi şef sunucusu ile güvenli bir bağlantı kursa da, şef sunucusu bu güvenli bağlantı için çoklayıcı bir komut vermemiş olsa da, neden?


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.