Hari yang baik Ansible disebutkan lebih dari satu kali di Habré, tetapi saya tidak menemukan artikel tentang pengujian perannya menggunakan molekul, namun saya menemukan kerangka kerja ini sangat nyaman dan ingin berbagi ini dengan audiens Habr.
Tapi pertama-tama, sedikit tentang apa yang saya gunakan sebelumnya.
Sebelumnya, untuk menguji peran yang saya buat, saya menggunakan gelandangan, mengemudi langsung:
$ vagrant init debian/jessie64 $ vagrant up
Membuat mesin virtual, setelah itu saya menulis inventaris dan buku pedoman untuk meluncurkan peran, sampai suatu hari saya mengetahui molekulnya.
Apa yang bisa ditawarkan molekul?
- Inisialisasi peran awal
- Driver / penyedia
- Tes Idempotensi
- Verifikasi
Inisialisasi peran awal
Jika peran baru ditentukan, buat struktur sampel untuk peran yang dimungkinkan
Driver / penyedia
Molekul memungkinkan kita untuk menggunakan wadah Docker atau mesin virtual sebagai kelinci percobaan menggunakan Vagrant, ini ditentukan dengan menentukan driver selama inisialisasi, atau dalam molekul.yml. Karena Jika saya harus menguji peran mendalangi wadah, maka Vagrant tetap menjadi pendorong yang disukai bagi saya. Memilih Vagrant sebagai pengemudi juga memungkinkan Anda memilih Penyedia.
Berikut ini tersedia:
- Libvirt
- Paralel
- VirtualBox (default)
- VMware Fusion
Selanjutnya, kami akan mempertimbangkan varian Vagrant dengan VirtualBox sebagai penyedia.
Tes Idempotensi
Menurut wiki:
properti dari suatu objek atau operasi ketika menerapkan operasi ke objek lagi memberikan hasil yang sama seperti ketika itu tunggal.
Sehubungan dengan peran yang dimungkinkan, ketika peran dimulai kembali, tidak ada perubahan yang harus dilakukan.
Verifikasi
Untuk memastikan bahwa perannya berfungsi dengan baik, tidak gagal dalam tugas apa pun tidak cukup. Setelah semua, Anda perlu memeriksa bahwa layanan sudah mulai, port terbuka, dll.
Kerangka kerja berikut tersedia untuk verifikasi:
- Goss
- Serverspec
- Testinfra (default)
Saya telah diuji oleh Goss dan Testinfra. Untuk saya sendiri, saya memilih Testinfra.
Contoh penggunaan:
$ molecule init --role sample-role
Setelah menjalankan perintah ini, kami mendapatkan direktori sampel-peran dengan struktur peran yang mungkin dan file yaml yang diperlukan:
defaults handlers meta molecule.yml // - molecule playbook.yml // README.md tasks tests // vars
Anda dapat memulai tanpa menentukan sakelar --role, dalam hal ini file molecule.yml dan playbook.yml akan dibuat di direktori saat ini.
Itu terjadi bahwa Anda perlu memastikan bahwa peran berfungsi pada beberapa distribusi dalam kasus ini, di molecyle.yml, Anda harus menentukan nama kotak gelandangan (dalam platform):
vagrant: platforms: - name: jessie64 box: debian/jessie64 - name: centos7 box: centos/7
Selanjutnya, tambahkan tindakan / variabel yang diperlukan, dll. ke dalam peran, setelah itu kami menguji pada semua platform spesifik:
$ molecule test --platform all
Setelah molekul ini:
- jika sudah ada mesin virtual yang dibuat, itu akan berhenti dan menghapusnya
- akan meningkatkan mesin virtual yang diperlukan
- uji peran kita dengan anonim-serat
- memenuhi peran kami dalam wadah yang baru dibuat
- akan menguji idempotensi
- jalankan tes testinfra
- akan menghapus mesin virtual yang dibuat
Anda mungkin perlu mengubah perilaku molekul saat menjalankan tes, misalnya, jangan menguji idempotensi, untuk ini, tambahkan yang berikut ke molekul.yml:
molecule: test: sequence: - destroy - syntax - create - converge - verify - destroy
Anda juga dapat memanggil setiap langkah terkait secara terpisah menggunakan perintah yang sesuai, misalnya:
$ molecule create --platform all $ molecule syntax $ molecule create $ molecule converge $ molecule verify
Sebagai satu pilihan, jangan hapus / buat mesin virtual baru sebelum setiap konvergen.
Anda dapat menentukan platform tertentu dan mengujinya secara terpisah:
$ molecule create --platform jessie64 $ molecule syntax $ molecule create $ molecule converge $ molecule verify
Terima kasih atas perhatian anda!