[ English | English (United Kingdom) | Indonesia | Deutsch | español | русский ]

Menjalankan ad-hoc Ansible plays

Menjadi terbiasa dengan menjalankan ad-hoc Ansible commands sangat membantu saat mengoperasikan penyebaran OpenStack-Ansible Anda. Untuk ulasan, kita dapat melihat struktur dari perintah berikut yang mungkin:

$ ansible example_group -m shell -a 'hostname'

Perintah ini memanggil Ansible untuk menjalankan example_group menggunakan modul shell `` -m`` dengan argumen `` -a`` yang merupakan perintah nama host. Anda dapat mengganti example_group dengan grup apa pun yang mungkin telah Anda tentukan. Misalnya, jika Anda memiliki `` compute_hosts`` dalam satu grup dan `` infra_hosts`` di yang lain, masukkan salah satu nama grup dan jalankan perintah. Anda juga dapat menggunakan wild card `` * `` jika Anda hanya tahu bagian pertama dari nama grup, misalnya jika Anda tahu nama grup dimulai dengan compute Anda akan menggunakan compute_h * ``. Argumen ``-m adalah untuk modul.

Modul dapat digunakan untuk mengontrol sumber daya sistem atau menangani eksekusi perintah sistem. Untuk informasi lebih lanjut tentang modul, lihat Module Index dan About Modules.

Jika Anda perlu menjalankan perintah tertentu terhadap subset grup, Anda bisa menggunakan flag batas `` -l``. Misalnya, jika grup compute_hosts berisi `` compute1``, `` compute2``, `` compute3``, dan compute4, dan Anda hanya perlu menjalankan perintah pada compute1` ` dan ` `compute4 Anda dapat membatasi perintah sebagai berikut:

$ ansible example_group -m shell -a 'hostname' -l compute1,compute4

Catatan

Setiap host dipisahkan dengan koma tanpa spasi.

Catatan

Jalankan perintah Ad-hoc Ansible dari direktori openstack-ansible/playbooks.

Untuk informasi lebih lanjut, lihat Inventory and Patterns.

Menjalankan modul shell

Dua modul yang paling umum digunakan adalah modul shell dan copy. Modul shell akan mengambil nama perintah diikuti dengan daftar space delimited argument. Ini hampir seperti modul perintah, tetapi menjalankan perintah melalui shell (/bin/sh) pada node remote.

Misalnya, Anda bisa menggunakan modul shell untuk memeriksa jumlah ruang disk pada satu set host Compute:

$ ansible compute_hosts -m shell -a 'df -h'

Untuk memeriksa status cluster Galera Anda:

$ ansible galera_container -m shell -a "mysql \
-e 'show status like \"%wsrep_cluster_%\";'"

Ketika sebuah modul digunakan sebagai perintah ad-hoc, ada beberapa parameter yang tidak diperlukan. Sebagai contoh, untuk perintah chdir, tidak perlu chdir=/home/user ls saat menjalankan Ansible dari CLI:

$ ansible compute_hosts -m shell -a 'ls -la /home/user'

Untuk informasi lebih lanjut, lihat shell - Execute commands in nodes.

Menjalankan modul copy

Modul salin menyalin file di mesin lokal ke lokasi terpencil. Untuk menyalin file dari lokasi yang jauh ke mesin lokal Anda akan menggunakan modul fetch. Jika Anda membutuhkan interpolasi variabel dalam file yang disalin, gunakan modul template. Untuk informasi lebih lanjut, lihat copy - Copies files to remote locations.

Contoh berikut menunjukkan cara memindahkan file dari host penyebaran Anda ke direktori /tmp pada satu set mesin remote:

$ ansible remote_machines -m copy -a 'src=/root/FILE '\
'dest=/tmp/FILE'

Modul fetch mengumpulkan file dari mesin jarak jauh dan menyimpan file secara lokal di file tree, yang diatur oleh nama host dari mesin jarak jauh dan menyimpannya secara lokal di file tree, yang diatur oleh nama host.

Catatan

Modul ini mentransfer file log yang mungkin tidak ada, jadi file remote yang hilang tidak akan menjadi kesalahan kecuali kalau fail_on_missing diatur ke yes.

Contoh berikut menunjukkan file nova-compute.log ditarik dari satu host Compute:

root@libertylab:/opt/rpc-openstack/openstack-ansible/playbooks# ansible compute_hosts -m fetch -a 'src=/var/log/nova/nova-compute.log dest=/tmp'
aio1 | success >> {
    "changed": true,
    "checksum": "865211db6285dca06829eb2215ee6a897416fe02",
    "dest": "/tmp/aio1/var/log/nova/nova-compute.log",
    "md5sum": "dbd52b5fd65ea23cb255d2617e36729c",
    "remote_checksum": "865211db6285dca06829eb2215ee6a897416fe02",
    "remote_md5sum": null
}

root@libertylab:/opt/rpc-openstack/openstack-ansible/playbooks# ls -la /tmp/aio1/var/log/nova/nova-compute.log
-rw-r--r-- 1 root root 2428624 Dec 15 01:23 /tmp/aio1/var/log/nova/nova-compute.log

Menggunakan tag

Tag mirip dengan flag batas untuk grup, kecuali tag digunakan untuk hanya menjalankan tugas tertentu dalam sebuah playbook. Untuk informasi lebih lanjut tentang tag, lihat Tags dan Understanding ansible tags.

Ansible forks

Pengaturan MaxSessions default untuk OpenSSH Daemon adalah 10. Setiap fork Ansible memanfaatkan sesi. Secara default, Ansible menetapkan jumlah fork menjadi 5. Namun, Anda dapat meningkatkan jumlah fork yang digunakan untuk meningkatkan kinerja penerapan di lingkungan yang besar.

Perhatikan bahwa lebih dari 10 fork akan menyebabkan masalah untuk setiap playbook yang menggunakan delegate_to atau local_action dalam tugas. Disarankan bahwa jumlah fork tidak dinaikkan saat mengeksekusi terhadap control plane, karena ini adalah tempat delegasi paling sering digunakan.

Jumlah fork yang digunakan dapat diubah secara permanen dengan memasukkan perubahan yang sesuai ke ANSIBLE_FORKS dalam file .bashrc Anda. Alternatifnya dapat diubah untuk eksekusi playbook tertentu dengan menggunakan parameter CLI --forks. Sebagai contoh, berikut ini mengeksekusi nova playbook terhadap control plane dengan 10 fork, kemudian terhadap node komputasi dengan 50 fork.

# openstack-ansible --forks 10 os-nova-install.yml --limit compute_containers
# openstack-ansible --forks 50 os-nova-install.yml --limit compute_hosts

Untuk informasi lebih lanjut tentang fork, silakan lihat referensi berikut: