Melihat mencoba membangun ketahanan ke dalam pengaturan Ansible kami yang berkaitan dengan penyediaan dan konfigurasi.
Saya memahami beberapa metode pengujian pada sisi konfigurasi hal-hal tapi saya bertanya-tanya bagaimana cara terbaik untuk mengimplementasikan pengujian pada sisi penyediaan hal-hal, dan jika ada alat yang dapat membantu dengan jenis implementasi ini.
Saat ini banyak pengujian kami dilakukan secara seri selama buku pedoman yang masuk akal untuk hal-hal seperti "memiliki layanan muncul; apakah vip tersedia; apakah tugas async ini selesai" tetapi yang benar-benar mengkhawatirkan saya adalah kemampuan kami untuk mengelola penyimpangan konfigurasi pada lapisan aplikasi dan penyediaan (seperti konfigurasi VM). Saya sadar Ansible bukan alat terbaik untuk bekerja dengan konfigurasi drift, tetapi saya ingin tahu pendapat Anda sendiri.
Jika Anda memiliki sesuatu untuk sepenuhnya mengotomatiskan proses, bahkan lebih baik. (kami memiliki beberapa skrip jelek yang dilaporkan kembali menjadi kendur setiap hari).
Catatan : Saat ini kami memiliki beberapa kondisi di mana reprovision mungkin terjadi (mis. Membangun kembali dari cadangan, masalah sistem kritis) tetapi biasanya ia hanya mengulangi beberapa tugas konfigurasi yang dimungkinkan dan tidak memikirkannya lagi.
I'm aware Ansible isn't the best tool for working with configuration drift
Tolong jelaskan.Jawaban:
Beberapa opsi di luar sana ..
Alat uji: Diurutkan berdasarkan bintang github
Perbedaan utama di antara mereka:
Pada akhirnya, saya akan menyarankan menghabiskan satu hari bereksperimen dengan mereka semua untuk merasakan mereka sebelum memutuskan untuk diri sendiri.
Pengujian kontinu / divergensi:
Menguji memanfaatkan untuk pengembangan:
Pengungkapan Lengkap: Saya adalah pengarang goss
PEMBARUAN: InSpec 4.x atau lebih tinggi menggunakan lisensi komersial / open source campuran - lihat komentar.
sumber
Dua alat saya lihat bagi ini INSPEC dan ServerSpec . Serverspec adalah alat berbasis Ruby yang dibuat di atas RSpec . InSpec terinspirasi oleh RSpec dan ServerSpec.
Saya telah menggunakan ServerSpec. Itu keren, tapi mungkin tidak 100% stabil. Saya mempunyai masalah dengan pengujian untuk versi perangkat lunak tertentu di Ubuntu.
Saya sudah membaca dokumen InSpec tetapi belum menggali lebih dalam. Ini pada dasarnya melakukan hal yang sama dengan Serverspec.
Dilihat oleh Github melakukan, sepertinya bekerja pada ServerSpec telah agak berkurang, sedangkan InSpec baru saja menggenjot produksinya.
PEMBARUAN: InSpec 4.x atau lebih tinggi menggunakan lisensi komersial / open source campuran - lihat komentar.
sumber
Saat menggunakan alat manajemen konfigurasi, seperti Ansible, alat itu sendiri akan bertanggung jawab mencegah penyimpangan konfigurasi. Setelah Anda menggunakan Ansible untuk mengatur konfigurasi tertentu, eksekusi Ansible yang berulang akan memastikan konfigurasi Anda sesuai dengan definisi yang Anda tentukan. Ini juga mengharuskan kode Ansible Anda ditulis dengan cara yang idempoten.
Dengan adanya hal di atas, penyediaan ketentuan dapat dicapai dengan menjalankan buku pedoman yang dimungkinkan dalam satu lingkaran dari beberapa server. Misalnya, pekerjaan cron, atau Jenkins, dapat menjalankan buku pedoman setiap 30 menit dan melaporkan kembali segala kegagalan. Tidak memiliki kegagalan berarti bahwa konfigurasi Anda dalam pemeriksaan, mengalami kegagalan berarti bahwa ada masalah dalam memasukkan server ke kondisi yang Anda inginkan .
Dalam kasus di mana Anda tidak dapat mempercayai kode Anda untuk ditulis sebagai idempoten, dan dengan demikian Anda tidak dapat benar-benar menjalankan Ansible berulang-ulang dalam satu loop dari server otomatis yang ada solusinya. Anda dapat melakukan hal yang sama seperti di atas (jalankan Ansible in a loop) tetapi gunakan mode dry run-nya . Setiap kali laporan yang memungkinkan bahwa perubahan diperlukan, pekerjaan Jenkins (atau pekerjaan cron) dapat memberi tahu Anda bahwa konfigurasi yang Anda setujui telah diubah dan server tidak dalam keadaan yang diinginkan .
Untuk memastikan bahwa kode Ansible Anda benar-benar melakukan apa yang menurut Anda seharusnya dilakukan, solusi yang disebutkan oleh Dave Swersky berlaku. Kedua INSPEC dan Serverspec adalah alat yang memverifikasi dalam berbagai cara yang playbooks Anda benar-benar tidak apa yang Anda maksud. Cara terbaik untuk mengeksekusi alat-alat semacam ini di lingkungan uji (bahkan wadah buruh pelabuhan) adalah dengan menggunakan kitchen.ci yang menangani semua perekat antara berbagai alat pengujian unit infra, dan pelaksanaan buku pedoman / modul / buku masak Anda.
Kitchen.ci pada awalnya digunakan untuk menguji buku masak Chef, tetapi plugin ada untuk alat Ansible dan CM lainnya juga.
sumber
Test Kitchen memiliki plugin penyedia dapur yang memungkinkan untuk menguji kode yang mungkin. Ini tidak sedalam integrasi Chef tetapi mendapatkan pekerjaan untuk sebagian besar kasus. Ada juga proyek Molekul yang lebih baru yang merupakan sistem pengujian Ansible khusus.
sumber
Anda dapat melacak perbedaan konfigurasi / infrastruktur / drift menggunakan Outthentic , mudah untuk membuat suite uji untuk "memperbaiki" keadaan yang diinginkan dan menjalankannya kembali setiap kali Anda perlu melacak perubahan yang tidak diinginkan.
sumber