Cara Bekerja Dengan Memasukkan Dan Mengimpor Pernyataan Dengan Contoh Yang Mungkin

1
Saat Anda membuat buku pedoman Ansible untuk proyek yang lebih besar, meletakkan semua tugas dalam satu buku pedoman akan membuat proyek menjadi rumit. Sebagai praktik terbaik, Anda harus mengelompokkan tugas ke dalam playbook terpisah. Ini akan membantu Anda memecah proyek Anda dan mencapai modularitas di Ansible. Jika memungkinkan, Anda dapat merusak playbook, dan menugaskan serta mengimpornya menggunakan arahan “import_*” dan “include_*”. Pada artikel ini, kita akan mempelajari cara bekerja dengan menyertakan dan mengimpor pernyataan di Ansible dengan contoh.

Di bagian berikut, saya akan menunjukkan cara mengimpor buku panduan, tugas, dan peran dengan contoh sederhana. Jika Anda memerlukan lab yang memungkinkan untuk berlatih, silakan lihat panduan penyiapan lab yang memungkinkan menggunakan Vagrant dan Virtualbox di tautan di bawah ini.

Pengaturan Lab yang Memungkinkan Otomatis Dengan Vagrant Dan Virtualbox Di Linux
Contents
Includes vs ImportsImporting Ansible PlaybookMenerapkan Direktif Lain dengan import_playbookMengimpor Tugas Playbook yang MungkinMengimpor Ansible Peran PlaybookKesimpulanTermasuk vs Impor

Seperti yang dinyatakan dalam dokumentasi resmi Ansible,

pernyataan penyertaan dan impor sangat mirip, namun mesin pelaksana Ansible memperlakukannya dengan sangat berbeda.
Semua pernyataan impor* diproses sebelumnya pada saat buku pedoman diuraikan. Semua pernyataan penyertaan* adalah diproses seperti yang ditemui selama eksekusi playbook.
Direktif “import_playbook” diperkenalkan dalam versi 2.4 yang memungkinkan dan sebelumnya hanya include_playbook yang tersedia. Posting versi 2.4 hanya direktif import_playbook yang tersedia dan Jika Anda mencoba menggunakan direktif include_playbook di versi yang lebih lama, Anda akan mendapatkan error.

ERROR berikut! 'include_playbook' bukan atribut yang valid untuk Play

Importing Ansible Playbook

Anda dapat membuat beberapa playbook sesuai dengan sifat permainan dan terakhir mengimpornya di bawah satu file YAML dan menjalankan playbook.

Saya membuat tiga playbooks.
Playbook pertama – playbook1.ymlSecond playbook – playbook2.ymlMain playbook – main.yml
Playbook pertama dan kedua berisi definisi permainan berikut.

# playbook1.yml
- nama: impor Playbook
  host: localhost
  koneksi: lokal
  collect_facts: Salah

  tugas:
    - nama: Impor Tugas
      memungkinkan.builtin.debug:
        msg: "Mengimpor playbook1.yml"

# playbook2.yml
- nama: impor Playbook
  host: localhost
  koneksi: lokal
  collect_facts: Salah

  tugas:
    - nama: Impor Tugas 2
      memungkinkan.builtin.debug:
        msg: "Mengimpor playbook2.yml"

Playbook utama digunakan untuk mengimpor playbook1.yml dan playbook2.yml.

- import_playbook: playbook1.yml
- import_playbook: playbook2.yml

Menjalankan perintah ansible-playbook terhadap main.yml akan mengimpor playbook1.yml dan playbook2.yml playbook ke dalam namespace saat ini dan menjalankan Tasks.

$ ansible-playbook main.yml

MAINKAN [Playbook impor] ********************************************* *************************************

TUGAS [Impor Tugas] ********************************************* *******************************************
oke: [localhost] => {
    "msg": "Mengimpor playbook1.yml"
}

MAINKAN [Playbook impor] ********************************************* *************************************

TUGAS [Task Impor 2] ******************************************* *******************************************
oke: [localhost] => {
    "msg": "Mengimpor playbook2.yml"
}

Menerapkan Direktif Lain dengan import_playbook

Anda dapat menerapkan direktif lain seperti tag, pernyataan bersyarat, dll., dengan direktif import_playbook. Direktif pada tingkat impor akan diwarisi oleh semua tugas playbook.

Untuk lebih memahaminya, perhatikan contoh di bawah ini. Yang saya lakukan hanyalah menambahkan pernyataan bersyarat ke main.yml file.

- import_playbook: playbook1.yml
  ketika: run didefinisikan
- import_playbook: playbook2.yml
  kapan: jalankan didefinisikan

Ketika saya menjalankan buku pedoman ini, drama, dan tugas diimpor ke namespace dan diperiksa apakah variabel “jalankan” ditentukan terhadap semua tugas. Karena variabel tidak ditentukan, tugas akan dilewati.

PLAY [Impor Playbook] ********************************** *************************************************

TUGAS [Impor Tugas] ********************************************* *******************************************
melewatkan: [localhost]

MAINKAN [Playbook impor] ********************************************* *************************************

TUGAS [Task Impor 2] ******************************************* *******************************************
melewatkan: [localhost]

Saya menjalankan playbook lagi dengan menyetel var=1 di playbook2 saja. Kali ini tugas di bawah playbook2 berjalan dengan baik dan tugas playbook1 dilewati.

PLAY [Impor Playbook] ******************************* **************************************************** **********************

TUGAS [Impor Tugas] ********************************************* **************************************************** **************
melewatkan: [localhost]

MAINKAN [Playbook impor] ********************************************* **************************************************** *********

TUGAS [Task Impor 2] ******************************************* **************************************************** *************
oke: [localhost] => {
    "msg": "Mengimpor playbook2.yml"
}

MAINKAN REKAP ************************************************ **************************************************** *******************
localhost : ok=1 berubah=0 tidak dapat dijangkau=0 gagal=0 dilewati=1 diselamatkan=0 diabaikan=0 

Mengimpor Tugas Playbook yang Memungkinkan

Mirip dengan mengimpor playbook, Anda dapat membuat file tugas terpisah dan mengimpornya ke dalam satu file. Meskipun playbook hanya dapat menggunakan direktif impor, tugas dapat menggunakan direktif import dan include.

Pertama, mari kita lihat direktif import_task yang mirip dengan direktif import_playbook. Direktif akan mem-parsing tugas saat playbook diurai.

Saya telah membuat dua file bernama task1.yml dan main.yml. Ini berisi definisi permainan dan tugas berikut.

# task1.yml
- nama: importing_tasks
  memungkinkan.builtin.debug:
    msg: "Mengimpor tugas dari task1.yml"

# main.yml
---
- host: localhost
  koneksi: lokal
  collect_facts: salah

 tugas:
   - import_tasks: task1.yml

Jika Anda melihat output di atas, tugas akan diimpor ke main.yml namespace dan run.

Direktif include_tasks akan diuraikan hanya pada saat eksekusi playbook. Saya menggunakan playbook main.yml dan task1.yml yang sama tetapi dengan sedikit modifikasi.

# main.yml
---
- host: localhost
  koneksi: lokal
  collect_facts: salah

  tugas:
    - sertakan_tugas: tugas1.yml


# tugas1.yml
- nama: mengimpor tugas menggunakan direktif include
  memungkinkan.builtin.debug:
    msg: "Mengimpor tugas dari task1.yml menggunakan direktif sertakan" 

Ketika buku pedoman dikirimkan, dua tugas dijalankan, meskipun kami hanya memiliki satu tugas yang ditentukan dalam buku pedoman. Tugas pertama adalah untuk mem-parsing tugas dari task1.yml dan menyertakannya untuk dieksekusi. Tugas kedua menjalankan task.

yang disertakan Mirip dengan directive import_playbook, Anda dapat menerapkan directive lain yang memungkinkan ke import_tasks atau include_tasks directive.

Saya telah membuat file task2.yml dan menggunakan direktif blok untuk mengimpor dan menyertakan task1.yml dan task2. yml.

# task2.yml
- nama: mengimpor tugas menggunakan direktif include
  memungkinkan.builtin.debug:
    msg: "Mengimpor tugas dari task2.yml menggunakan import directive"


# main.yml
---
- host: localhost
  koneksi: lokal
  collect_facts: salah

  tugas:
    - nama: Impor dan sertakan dengan arahan blok
      memblokir:
        - sertakan_tugas: tugas1.yml
        - import_tasks: task2.yml

Importing Ansible Playbook Roles

Roles adalah cara yang bagus untuk mengatur proyek Anda. Kami memiliki artikel mendetail tentang peran yang memungkinkan dan bagaimana arahan impor dan sertakan digunakan sebagai alternatif dari arahan peran. Saya sarankan Anda melihatnya di tautan di bawah ini.

Tutorial Peran yang Memungkinkan Untuk Pemulas
Kesimpulan

Dalam artikel ini kita telah melihat apa itu direktif import_* dan include_* dan bagaimana menggunakannya untuk membagi proyek Anda yang memungkinkan untuk mencapai modularitas.

Scroll to Top