Menggunakan kemungkinan pada baris perintah untuk menjalankan perintah ad hoc, wildcard sangat berguna, mis. untuk melihat apakah file ada di semua sistem.
Saya juga kesulitan melakukan:$ ansible production -a "ls /mypath/*xxx*"
Tapi membungkusnya dengan bash -c '...' berfungsi:$ ansible production -a "bash -c 'ls /mypath/*xxx*'"
Tugas yang ditentukan seperti ini akan membantu:
- name: Move internal directories and files
command: bash -c 'mv /tmp/parent-dir/* /opt/destination/'
Seperti yang ditulis Larsks, kuncinya adalah menggunakan register
, tetapi kode tersebut tidak berfungsi pada versi saya yang memungkinkan saat ini. Jadi ini yang dikoreksi:
- shell: ls -d solr*
register: dir_name
- command: chdir={{ item }} some_command
with_items: dir_name.stdout_lines
Tidak. chdir=
ke, misalnya, command
modul tidak mendukung karakter pengganti.
Anda dapat mencapai apa yang Anda inginkan dengan menggunakan variabel register untuk menyimpan keluaran dari ls
perintah:
- shell: ls -d solr*
register: dir_name
- command: some_command
args:
chdir: "{{ dir_name.stdout }}"
Tapi ini, sejujurnya, solusi yang buruk. Anda lebih baik menggunakan nama direktori yang sebenarnya. Jika berbeda pada host yang berbeda, Anda dapat menggunakan variabel host untuk menyetelnya dengan tepat.