Paket ini berisi kode untuk program spesifikasi argumen ansible. Audiens utamanya adalah pemelihara modul yang tidak dapat dikeluarkan yang ingin mengurangi duplikasi dalam modul mereka dengan menghasilkan spesifikasi argumen langsung dari dokumentasi pengguna modul.
Ekstraktor dokumentasi diterbitkan di PYPI dan kami dapat menginstalnya menggunakan pip :
$ PIP menginstal ansible-argspec-gen [base] # Ini akan menginstal ansible-base
$ Pip menginstal ansible-argspec-gen [ansible] # Ini akan menginstal ansible
$ PIP menginstal ansible-argspec-gen # kita perlu menginstal ansible atau
#-basis diri kita sendiri
Jika perintah sebelumnya tidak gagal, kami siap untuk mulai memperbarui modul kami. Ketika kami menggunakan generator untuk pertama kalinya, kami perlu melakukan tiga langkah berikut:
# AUTOMATIC MODULE ARGUMENTS , tetapi ini dapat diubah dengan parameter baris perintah- --marker .Misalnya, mari kita asumsikan bahwa beberapa baris pertama dari fungsi utama modul kita terlihat seperti ini sebelum generator berjalan:
def main ():
# Argumen Modul Otomatis
# Argumen Modul Otomatis
modul = ansiblemodule (
Jika kita menjalankan generator sekarang dalam mode cek dengan perbedaan yang diaktifkan, kita akan mendapatkan kembali sesuatu seperti ini:
$ ansible-argspec-gen-diff-plugin/modul/route.py
--- ../ANSIBLE_COLLECTION/Steampunk/nginx_unit/plugins/modules/route.py.old
+++ ../ANSIBLE_COLLECTION/Steampunk/nginx_unit/plugins/modules/route.py.new
@@ -359,6 +359,52 @@
def main ():
# Argumen Modul Otomatis
+ argument_spec = {
+ "global": {"default": false, "type": "bool"},
+ "name": {"type": "str"},
+ "soket": {"type": "path"},
+ "state": {
+ "pilihan": ["sekarang", "absen"],
+ "default": "hadir",
+ "ketik": "str",
+},
+}
+ wajib_if = [("global", false, ("name",)), ("state", "present", ("step",))]]
# Argumen Modul Otomatis
modul = ansiblemodule (
Setelah kami senang dengan perubahan yang diusulkan, kami dapat menulisnya ke file:
$ ansible-argspec-gen plugin/modul/route.py
Jika kami memperbarui dokumentasi modul, kami dapat dengan mudah menjalankan kembali perintah sebelumnya dan generator akan mengambil atau memperbarui spesifikasi. Perhatikan bahwa generator akan menimpa konten di antara penanda, jadi pastikan Anda tidak memodifikasi bagian file itu secara manual atau Anda akan kehilangan perubahan pada pembaruan berikutnya.
Menghasilkan spesifikasi argumen untuk kelas AnsibleModule harus bekerja pada modul apa pun yang memiliki dokumentasi. Tetapi membuat generator menghasilkan parameter lain seperti persyaratan bersyarat membutuhkan sedikit pekerjaan.
Untuk menghasilkan spesifikasi required_if , parameter kami perlu memiliki kalimat dalam deskripsinya yang sesuai dengan templat yang diperlukan jika saya ({param_name}) adalah C ({param_value}) . Contoh selanjutnya:
Opsi:
nama:
keterangan:
- Nama sumber daya. Diperlukan jika saya (state) adalah C (sekarang).
akan menghasilkan spesifikasi berikut:
wajib_if = [("state", "present", ("name",))]]
Hal lain yang generator tahu cara menghasilkan adalah spesifikasi mutually_exclusive . Pola yang dicari generator dalam kasus ini saling eksklusif dengan i ({param1}), i ({param2}), dan i ({param3}) , di mana jumlah parameter yang dapat kami tentukan tidak terbatas. Contoh:
Opsi:
Proses:
keterangan:
- Batas proses dinamis.
- Bersama eksklusif dengan I (NO_PROCESS).
NO_PROCESS:
keterangan:
- Batas proses statis.
- Bersama eksklusif dengan i (proses).
Ini akan menghasilkan:
Mutualder_exclusive = [("NO_PROCESS", "Proses")]
Mendapatkan lingkungan pengembangan dan berjalan relatif sederhana jika kita memasang pipenv :
Pembaruan $ Pipenv
Untuk menguji ekstraktor, kita dapat menjalankan:
$ pipenv run ansible-argspec-gen