GNU/Linux >> Belajar Linux >  >> Ubuntu

Ansible:Periksa apakah ada File

Pendahuluan

Ansible adalah alat Infrastruktur sebagai Kode yang memungkinkan satu node kontrol memantau dan mengelola sejumlah besar host jarak jauh (server).

Ansible menggunakan buku pedoman untuk menentukan berbagai tugas yang harus dilakukan oleh host jarak jauh, termasuk memeriksa apakah ada file dan folder.

Tutorial ini membahas cara menggunakan stat modul di Ansible untuk memeriksa apakah ada file dan folder di host jarak jauh.

Prasyarat

  • Akses ke baris perintah / jendela terminal
  • Ansible diinstal dan dikonfigurasi (lihat panduan kami tentang Menginstal Ansible di Windows dan Menginstal Ansible di Ubuntu)

Memeriksa apakah File Ada di Ansible

Cara termudah untuk memeriksa apakah ada file menggunakan Ansible adalah dengan stat modul.

Tujuan dari stat modul adalah untuk mengambil fakta tentang file dan folder dan merekamnya dalam register. Modul stat menggunakan sintaks berikut:

---
- name: Playbook name
  hosts: all

  tasks:
  - name: Task name
    stat:
      path: [path to the file or directory you want to check]
    register: register_name

...

Dimana:

  • stat: Menyatakan bahwa kita menggunakan modul stat.
  • path: Mendeklarasikan jalur ke file atau folder yang ingin kita periksa.
  • register: Memberikan nama register tempat modul stat menyimpan detail file dan folder.

Salah satu nilai yang tercatat dalam register adalah exists . Menggabungkan nilai ini dengan debug modul memungkinkan Anda menampilkan pesan yang merinci apakah ada file atau folder:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists

1. Dalam contoh buku pedoman, tugas pertama (Memeriksa apakah ada file ) menggunakan stat modul untuk mengambil fakta tentang test.txt file terletak di /home/example_folder pada host jarak jauh. Ini mencatat fakta-fakta ini dalam register yang disebut file_data .

2. Tugas kedua (Laporkan jika ada file ) menggunakan debug modul untuk menampilkan pesan. Ia memeriksa file_data mendaftar dan menggunakan exists nilai sebagai syarat untuk menampilkan pesan. Jika exists nilainya benar , modul menampilkan pesan 'File atau direktori ada' .

3. Tugas ketiga (Laporkan file yang hilang ) melakukan hal yang sama, kecuali ia menampilkan pesan 'File atau direktori tidak ada' jika exists nilainya salah .

Menjalankan playbook memberikan output berikut:

Outputnya memberi tahu kita bahwa file tersebut sebenarnya tidak ada.

Jika Anda juga ingin memeriksa apakah file yang dimaksud adalah file biasa dan bukan folder, tambahkan isreg nilai ke debug kondisi modul:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists and register_name.stat.isreg

Memeriksa apakah Direktori Ada di Ansible

Menggunakan Ansible untuk memeriksa apakah ada direktori sama persis dengan memeriksa apakah ada file. Satu-satunya perbedaan adalah Anda menggunakan isdir nilai untuk mengonfirmasi jalur ke direktori yang ditentukan:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists and register_name.stat.isdir

Menjalankan Tugas yang Mungkin Bergantung pada Apakah File dan Folder Ada

Ada kalanya Anda ingin menjalankan atau melewati tugas di buku pedoman Anda tergantung pada apakah ada file atau folder tertentu.

Misalnya, jika Anda memiliki buku pedoman yang dirancang untuk membuat file di setiap host jarak jauh, Anda ingin melewati host yang filenya sudah ada untuk menghindari duplikat.

Untuk melakukannya, gunakan detail file yang diambil dengan stat modul dengan when argumen untuk membuat kondisi untuk menjalankan tugas:

---
- name: Playbook name
  hosts: all

  tasks:
  - name: Task name
    stat:
      path: [path to the file or directory you want to check]
    register: register_name

    - name: Task name 2
      file:
        path: [path to the file you want to create]
        state: touch
      when: not register_name.stat.exists

...

1. Dalam buku pedoman di atas, tugas pertama (Memeriksa apakah ada file ) menggunakan stat modul untuk mengambil detail test.txt file terletak di example_folder pada host jarak jauh.

2. Tugas kedua (Buat file jika belum ada ) dimulai dengan memeriksa exists nilai dalam register. Jika nilainya benar , tugas dilewati dan buku pedoman berakhir. Jika nilainya salah , tugas dijalankan dan membuat file baru bernama test.txt .


Ubuntu
  1. Menangani rahasia di buku pedoman Ansible Anda

  2. Baris tanda komentar yang dimungkinkan dalam file

  3. Bagaimana saya bisa menggunakan sudo untuk memeriksa apakah ada file?

  1. Bagaimana cara memeriksa sintaks sudoers

  2. Satu Liner Untuk Memeriksa Ada File?

  3. Perintah Untuk Menampilkan Pesan Sewenang-wenang Jika Ada File Tertentu?

  1. Bagaimana saya bisa memeriksa file yang ada dan menjalankan perintah jika tidak?

  2. Periksa apakah jenis/ekstensi file tertentu ada di direktori

  3. periksa apakah file ada di host jarak jauh dengan ssh