Rumah > Artikel > Tutorial sistem > Gunakan Ansible untuk mengautomasikan penggunaan aplikasi tanpa pelayan
Pengenalan | Ansible direka untuk menjadi alat penggunaan paling mudah yang sebenarnya berfungsi. Ini bermakna ia bukan bahasa pengaturcaraan yang lengkap. Anda perlu menulis templat YAML yang mentakrifkan tugas dan menyenaraikan sebarang tugas yang perlu diautomatikkan. |
Kebanyakan orang menganggap Ansible sebagai "SSH dalam gelung untuk" yang lebih berkuasa, dan dalam kes penggunaan mudah ini adalah benar. Tetapi sebenarnya Ansible adalah tugas, bukan SSH. Dalam kebanyakan kes, kami menyambung melalui SSH, tetapi ia juga menyokong perkara seperti Pengurusan Jauh Windows (WinRM) pada mesin Windows dan API HTTPS sebagai bahasa biasa untuk perkhidmatan awan.
Dalam awan, Ansible boleh beroperasi pada dua tahap bebas: satah kawalan dan sumber contoh. Pesawat kawalan terdiri daripada semua yang tidak berjalan pada sistem pengendalian. Ini termasuk menyediakan rangkaian anda, mencipta kejadian baharu, menyediakan perkhidmatan peringkat lebih tinggi seperti Amazon S3 atau DynamoDB, dan semua yang anda perlukan untuk memastikan infrastruktur awan anda selamat dan melayani pelanggan anda.
Mengusahakan instance ialah perkara yang anda sudah tahu Ansible boleh lakukan: memulakan dan menghentikan perkhidmatan, templat fail konfigurasi, memasang pakej dan semua operasi berkaitan sistem pengendalian melalui SSH.
Sekarang, apakah yang tidak berguna? Bergantung pada orang yang anda tanya, tanpa pelayan adalah sama ada lanjutan awan awam yang tidak terhingga atau paradigma baharu sepenuhnya di mana segala-galanya adalah panggilan API dan tidak pernah dilakukan sebelum ini.
Ansible mengambil pandangan pertama. Sebelum "tanpa perkhidmatan" adalah istilah teknikal, pengguna perlu mengurus dan mengkonfigurasi kejadian EC2, rangkaian awan peribadi maya (VPC) dan segala-galanya. Serviceless ialah satu lagi langkah ke arah perkhidmatan terurus dan berfungsi dengan baik dengan seni bina tanpa ejen Ansible.
Sebelum kita memulakan contoh Lambda, mari lihat tugas susunan CloudFormation konfigurasi mudah:
- name: Build network cloudformation: stack_name: prod-vpc state: present template: base_vpc.yml
Menulis tugasan seperti ini hanya mengambil masa beberapa minit, tetapi ia merupakan langkah separa manual terakhir yang terlibat dalam membina infrastruktur - klik "Buat Tindanan" - ini meletakkan buku main bersama yang lain. Kini VPC anda hanyalah satu lagi tugas yang perlu dipanggil semasa menyediakan wilayah baharu.
Memandangkan pembekal awan ialah sumber kebenaran tentang perkara yang berlaku dalam akaun anda, Ansible mempunyai banyak cara untuk mendapatkan dan menapis serta membuat pertanyaan yang menjalankan kejadian atau rangkaian menggunakan ID, nama dan parameter lain. Mengambil modul cloudformation_facts sebagai contoh, kami boleh mendapatkan ID subnet, julat rangkaian dan data lain daripada templat yang baru kami buat.
- name: Pull all new resources back in as a variable cloudformation_facts: stack_name: prod-vpc register: network_stack
Untuk aplikasi tanpa pelayan, anda pasti memerlukan fungsi Lambda sebagai tambahan kepada jadual DynamoDB, baldi S3 dan apa-apa lagi. Nasib baik, dengan menggunakan modul lambda, fungsi Lambda boleh dibuat dengan cara yang sama seperti timbunan tugas sebelumnya:
- lambda: name: sendReportMail zip_file: "{{ deployment_package }}" runtime: python3.6 handler: report.send memory_size: 1024 role: "{{ iam_exec_role }}" register: new_function
Jika anda mempunyai alatan lain yang ingin anda gunakan untuk menghantar aplikasi tanpa pelayan, itu juga boleh dilakukan. Rangka kerja tanpa pelayan sumber terbuka mempunyai modul Ansible sendiri yang juga berfungsi:
- serverless: service_path: '{{ project_dir }}' stage: dev register: sls - name: Serverless uses CloudFormation under the hood, so you can easily pull info back into Ansible cloudformation_facts: stack_name: "{{ sls.service_name }}" register: sls_facts
Bukan ini sahaja yang anda perlukan, kerana projek tanpa pelayan juga mesti wujud dan anda akan mentakrifkan fungsi dan sumber acara anda di sana. Untuk contoh ini, kami akan membuat fungsi yang bertindak balas kepada permintaan HTTP. Rangka kerja tanpa perkhidmatan menggunakan YAML sebagai bahasa konfigurasi mereka (seperti Ansible), jadi ini sepatutnya kelihatan biasa.
# serverless.yml service: fakeservice provider: name: aws runtime: python3.6 functions: main: handler: test_function.handler events: - http: path: / method: get
Di AnsibleFest, saya akan membincangkan contoh ini dan strategi penggunaan mendalam yang lain untuk memaksimumkan penggunaan buku permainan dan infrastruktur yang telah anda miliki, serta amalan tanpa pelayan baharu. Sama ada anda boleh sampai ke sana atau tidak, saya harap contoh ini boleh membantu anda mula menggunakan Ansible, sama ada anda mempunyai sebarang perkhidmatan untuk diuruskan atau tidak.
AnsibleFest ialah persidangan sehari yang menghimpunkan ratusan pengguna Ansible, pembangun dan rakan kongsi industri. Sertai kami untuk kemas kini produk, perbualan yang memberi inspirasi, penyelaman mendalam teknikal, demo langsung dan rangkaian sepanjang hari.
Atas ialah kandungan terperinci Gunakan Ansible untuk mengautomasikan penggunaan aplikasi tanpa pelayan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!