Kami telah meluncurkan penyedia Terraform resmi untuk bekerja dengan Selectel. Produk ini memungkinkan pengguna untuk sepenuhnya menerapkan manajemen sumber daya melalui metodologi Infrastruktur sebagai kode.
Penyedia saat ini mendukung manajemen sumber daya layanan "Awan pribadi virtual" (selanjutnya disebut sebagai VPC). Kedepannya, kami berencana menambahkan pengelolaan sumber daya untuk layanan lain yang disediakan oleh Selectel.
Seperti yang sudah Anda ketahui, layanan VPC dibangun di OpenStack. Namun, karena OpenStack tidak menyediakan alat asli untuk melayani cloud publik, kami mengimplementasikan fungsionalitas yang hilang dalam serangkaian API tambahan yang menyederhanakan pengelolaan objek komposit kompleks dan membuat pekerjaan lebih nyaman. Beberapa fungsi yang tersedia di OpenStack ditutup dari penggunaan langsung, namun tersedia melalui API kami.
Penyedia Selectel Terraform kini menyertakan kemampuan untuk mengelola sumber daya VPC berikut:
proyek dan kuotanya;
pengguna, peran dan token mereka;
subnet publik, termasuk lintas regional dan VRRP;
lisensi perangkat lunak.
Penyedia menggunakan perpustakaan Go publik kami untuk bekerja dengan VPC API. Baik perpustakaan maupun penyedianya sendiri adalah sumber terbuka, pengembangannya dilakukan di Github:
Untuk mengelola sumber daya cloud lainnya, seperti mesin virtual, disk, cluster Kubernetes, Anda dapat menggunakan penyedia OpenStack Terraform. Dokumentasi resmi untuk kedua penyedia tersedia di tautan berikut:
Untuk memulai, Anda perlu menginstal Terraform (instruksi dan tautan ke paket instalasi dapat ditemukan di situs resmi).
Untuk beroperasi, penyedia memerlukan kunci API Selectel, yang dibuat di panel kontrol akun.
Manifes untuk bekerja dengan Selectel dibuat menggunakan Terraform atau menggunakan serangkaian contoh siap pakai yang tersedia di repositori Github kami: contoh terraform.
Repositori dengan contoh dibagi menjadi dua direktori:
modul, berisi modul kecil yang dapat digunakan kembali yang mengambil sekumpulan parameter sebagai masukan dan mengelola sejumlah kecil sumber daya;
contoh, berisi contoh satu set lengkap modul yang saling berhubungan.
Setelah menginstal Terraform, membuat kunci API Selectel, dan memahami contoh-contohnya, mari beralih ke contoh praktis.
Dalam file vars.tf semua parameter yang akan digunakan saat memanggil modul dijelaskan. Beberapa di antaranya memiliki nilai default, misalnya server akan dibuat di zona tersebut ru-3a dengan konfigurasi berikut:
Jika perlu, Anda dapat menentukan kunci publik lain. Kuncinya tidak harus ditentukan sebagai jalur file; Anda juga dapat menambahkan nilai sebagai string.
Selanjutnya dalam file ini modul diluncurkan proyek_dengan_pengguna и server_local_root_disk, yang mengelola sumber daya yang diperlukan.
Argumen abaikan_perubahan memungkinkan Anda mengabaikan perubahan atribut id untuk gambar yang digunakan untuk membuat mesin virtual. Di layanan VPC, sebagian besar gambar publik diperbarui secara otomatis seminggu sekali dan pada saat yang sama id juga berubah. Hal ini disebabkan oleh kekhasan komponen OpenStack - Glance, di mana gambar dianggap sebagai entitas yang tidak dapat diubah.
Jika Anda membuat atau memodifikasi server atau disk yang ada sebagai argumen gambar_id bekas id gambar publik, kemudian setelah gambar tersebut diperbarui, menjalankan manifes Terraform lagi akan membuat ulang server atau disk. Menggunakan argumen abaikan_perubahan memungkinkan Anda menghindari situasi seperti itu.
Catatan: argumen abaikan_perubahan muncul di Terraform beberapa waktu yang lalu: tarik#2525.
Argumen abaikan_resize_confirmation diperlukan agar berhasil mengubah ukuran disk lokal, inti, atau memori server. Perubahan tersebut dilakukan melalui komponen OpenStack Nova menggunakan permintaan mengubah ukuran. Default Nova setelah permintaan mengubah ukuran menempatkan server ke status verifikasi_resize dan menunggu konfirmasi tambahan dari pengguna. Namun perilaku tersebut dapat diubah agar Nova tidak menunggu tindakan tambahan dari pengguna.
Argumen yang ditentukan memungkinkan Terraform untuk tidak menunggu status verifikasi_resize untuk server dan bersiaplah untuk server dalam status aktif setelah mengubah parameternya. Argumennya tersedia dari penyedia OpenStack Terraform versi 1.10.0: tarik#422.
Menciptakan Sumber Daya
Sebelum menjalankan manifes, harap dicatat bahwa dalam contoh kami, dua penyedia berbeda diluncurkan, dan penyedia OpenStack bergantung pada sumber daya penyedia Selectel, karena tanpa membuat pengguna dalam proyek, tidak mungkin untuk mengelola objek miliknya. . Sayangnya, untuk alasan yang sama kita tidak bisa menjalankan perintah begitu saja terraform berlaku di dalam contoh kita. Pertama-tama kita perlu melakukannya menerapkan untuk modul proyek_dengan_pengguna dan setelah itu untuk yang lainnya.
Catatan: Masalah ini belum terselesaikan di Terraform, Anda dapat mengikuti diskusi di Github di edisi#2430 и edisi#4149.
Setelah menjalankan perintah, Terraform akan menampilkan sumber daya apa yang ingin dibuat dan meminta konfirmasi:
Plan: 3 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Setelah proyek, pengguna, dan peran dibuat, Anda dapat mulai membuat sumber daya yang tersisa:
Anda dapat bekerja dengan mesin virtual yang dibuat melalui SSH menggunakan IP yang ditentukan.
Mengedit Sumber Daya
Selain membuat sumber daya melalui Terraform, sumber daya juga dapat dimodifikasi.
Misalnya, mari tingkatkan jumlah inti dan memori untuk server kita dengan mengubah nilai parameternya server_vcpus и server_ram_mb dalam file contoh/vpc/server_local_root_disk/main.tf:
Di kami contoh repositori Anda juga dapat melihat manifes untuk membuat mesin virtual dengan drive jaringan.
Contoh pembuatan cluster Kubernetes
Sebelum kita melanjutkan ke contoh berikutnya, kita akan membersihkan sumber daya yang kita buat sebelumnya. Untuk melakukan hal ini di akar proyek terraform-examples/examples/vpc/server_local_root_disk Mari jalankan perintah untuk menghapus objek OpenStack:
Dalam kedua kasus tersebut, Anda perlu mengonfirmasi penghapusan semua objek:
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
Contoh ini membuat sebuah proyek, pengguna dengan peran dalam proyek tersebut, dan memunculkan satu cluster Kubernetes. Dalam berkas vars.tf Anda dapat melihat nilai default, seperti jumlah node, karakteristiknya, versi Kubernetes, dll.
Untuk membuat sumber daya yang mirip dengan contoh pertama, pertama-tama kita akan mulai menginisialisasi modul dan membuat sumber daya modul proyek_dengan_penggunadan kemudian membuat yang lainnya:
Kami akan mentransfer pembuatan dan pengelolaan cluster Kubernetes melalui komponen OpenStack Magnum. Anda dapat mengetahui lebih lanjut tentang cara bekerja dengan cluster di salah satu cluster kami artikel sebelumnya, begitu juga di dasar pengetahuan.
Saat menyiapkan cluster, disk dan mesin virtual akan dibuat dan semua komponen yang diperlukan akan diinstal. Persiapan memakan waktu sekitar 4 menit, selama itu Terraform akan menampilkan pesan seperti:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Setelah instalasi selesai, Terraform akan menunjukkan bahwa cluster sudah siap dan menampilkan ID-nya:
Untuk mengelola cluster Kubernetes yang dibuat melalui utilitas kubectl Anda perlu mendapatkan file akses cluster. Untuk melakukannya, buka proyek yang dibuat melalui Terraform di daftar proyek di akun Anda:
Selanjutnya, ikuti tautan seperti xxxxxx.selvpc.ruyang muncul di bawah nama proyek:
Untuk informasi login gunakan username dan password yang Anda buat melalui Terraform. Jika Anda belum curang vars.tf или utama.tf untuk contoh kita, pengguna akan memiliki nama tf_user. Anda harus menggunakan nilai variabel sebagai kata sandi TF_VAR_kata sandi_pengguna, yang ditentukan saat startup terraform berlaku sebelumnya.
Di dalam proyek Anda perlu membuka tab Kubernetes:
Di sinilah letak cluster yang dibuat melalui Terraform. Unduh file untuk kubectl Anda dapat melakukannya di tab "Akses":
Petunjuk instalasi ada di tab yang sama. kubectl dan penggunaan unduhan config.yaml.
Setelah peluncuran kubectl dan mengatur variabel lingkungan KUBECONFIG Anda dapat menggunakan Kubernet:
Ketika jumlah node berubah, cluster akan tetap tersedia. Setelah menambahkan node melalui Terraform, Anda dapat menggunakannya tanpa konfigurasi tambahan:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
tf-cluster-rz6nggvs4va7-master-0 Ready,SchedulingDisabled master 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-0 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-1 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-2 Ready <none> 3m v1.12.4
Kesimpulan
Pada artikel ini kita berkenalan dengan cara-cara utama untuk bekerja "Awan pribadi virtual" melalui Terraform. Kami akan senang jika Anda menggunakan penyedia resmi Terraform Selectel dan memberikan masukan.
Setiap bug yang ditemukan di penyedia Selectel Terraform dapat dilaporkan melalui Masalah Github.