Ini adalah cara yang disarankan dalam tutorial Chef Fast Start:
knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client"
Ini benar-benar canggung. Apakah benar-benar tidak ada cara yang lebih baik, atau apakah gagasan bahwa dalam lingkungan produksi nyata, Anda akan tetap memiliki pembaruan otomatis node?
Jawaban:
Itu cukup banyak bagaimana Anda memulai sesuatu, tetapi itu hanya perlu dilakukan sekali. Proses awal dari chef-client biasanya mengaktifkan dan memulai daemon chef-client sebagai layanan init.d.
Jika Anda benar-benar ingin melakukannya dengan lebih elegan, Anda bisa membuang pisau-ssh dan menjalankan ssh secara langsung:
yang mungkin akan lebih cepat, karena knife-ssh melakukan pencarian terhadap server Chef untuk mengambil node yang cocok dengan istilah pencarian (dalam hal ini
name:dynode
), yang tidak perlu Anda lakukan jika Anda sudah mengetahui alamat IP.sumber
ec2 server create
pisau Plugin hanya berjalan bootstrap diikuti oleh SSH + chef-client. Jadi jika itu membuat Anda merasa lebih baik, penulis Chef belum menemukan sesuatu yang lebih pintar.Anda bisa menggunakan pisau ssh untuk menjalankan chef-client di semua kotak yang berisi peran atau resep tertentu:
Atau jika Anda menggunakan EC2:
sumber
Anda dapat menggunakan yang dimungkinkan untuk menggunakan dan menjalankan chef-client.
$ ansible -i hosts all -a 'chef-client'
ansible mudah dipasang dengan pip:
pip install ansible
File inventaris Anda (dalam contoh, bernama "host") mungkin terlihat seperti ini:
[all] host1.example.com ansible_user=root host2.example.com ansible_user=root host3.example.com ansibel_user=root
(perhatikan "semua" adalah nama pengelompokan dalam file konfigurasi untuk contoh kita - ini arbitrer dan bisa apa saja. File inventaris Anda juga dapat menyertakan pengelompokan lain, misalnya [web_wervers], [database_servers], [chef_servers] , dll.)
Jadi, sekali lagi, kumpulkan semuanya:
> ansible -i hosts all -a 'chef-client'
atau mungkin:
> ansible -i hosts all -a 'systemctl status'
sumber
Saya menggunakan Jenkins CI untuk mengelola proses. Server Linux diatur sebagai workstation dan Jenkins telah diinstal di atasnya. Jadi saya bisa bootstrap node dengan modifikasi run_list. Proses bootstrap, bagaimanapun, menjalankan chef-client pada akhirnya.
Untuk eksekusi adhoc, pekerjaan Jenkins mengeksekusi perintah knife untuk memodifikasi run_list untuk sebuah node dan menggunakan plugin SSH untuk mengeksekusi chef-client pada node yang diinginkan.
sumber
Sangat disayangkan bahwa untuk mengirim perintah ke chef client kita harus menggunakan ssh underline.
Tampaknya meskipun setiap klien koki telah menyiapkan koneksi aman dengan server chef, tetapi server chef tidak menyediakan multiplexer perintah melalui koneksi aman itu, mengapa?
sumber
Ada perintah baru
chef-run
di Chef Workstation:Ini akan menginstal
chef-client
jika tidak ada dan menjalankan sumber daya atau buku masak yang Anda tentukan.Tutorial: https://learn.chef.io/modules/try-chef-infra#/
sumber