Molekul - Menguji Peran yang Mungkin

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?


  1. Inisialisasi peran awal
  2. Driver / penyedia
  3. Tes Idempotensi
  4. 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!

Source: https://habr.com/ru/post/id437216/


All Articles