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

Menjalankan ad-hoc Ansible plays

Being familiar with running ad-hoc Ansible commands is helpful when operating your OpenStack-Ansible deployment. For a review, we can look at the structure of the following Ansible command:

$ 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.

For more information, see 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 "mariadb \
-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'

For more information, see shell - Execute commands in nodes.

Menjalankan modul copy

The copy module copies a file on a local machine to remote locations. To copy files from remote locations to the local machine you would use the fetch module. If you need variable interpolation in copied files, use the template module. For more information, see 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

Tags are similar to the limit flag for groups, except tags are used to only run specific tasks within a playbook. For more information on tags, see 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: