Neįmanoma: kaip pašalinti failus ir aplankus kataloge?

Toliau pateiktame kode ištrinamas tik pirmasis failas, kurį jis patenka į žiniatinklio katalogą. Noriu ištrinti visus failus ir aplankus, esančius žiniatinklio kataloge, ir išsaugoti žiniatinklio katalogą. Kaip tai padaryti?

  - name: remove web dir contents file: path='/home/mydata/web/{{ item }}' state=absent with_fileglob: - /home/mydata/web/* 

Pastaba Bandžiau rm -rf naudoti komandą ir apvalkalą, tačiau jie neveikia. Galbūt aš juos neteisingai naudoju.

Bet kokia pagalba teisinga kryptimi būtų vertinama.

Aš naudoju 2.1.0.0

56
05 июля '16 в 13:12 2016-07-05 13:12 „Abbas“ yra liepos 5 d. 16 d., 13:12 2016-07-05 13:12
@ 9 atsakymai

Žemiau nurodytas kodas pašalins visą artifact_path turinį.

 - name: Clean artifact path file: state: absent path: "{{ artifact_path }}/" 

Pastaba: taip pat bus ištrintas katalogas.

52
05 июля '16 в 13:49 2016-07-05 13:49 atsakymas duotas Mohan Kumar P liepos 5 d. 16 d. 13:49 2016-07-05 13:49

Korpuso modulio naudojimas:

 - shell: /bin/rm -rf /home/mydata/web/* 
border=0

Švariausias sprendimas, jei jums nereikia kūrimo datos:

 - file: path=/home/mydata/web state=absent - file: path=/home/mydata/web state=directory 
35
05 июля '16 в 13:54 2016-07-05 13:54 atsakymą pateikė helloV liepos 05 '16, 13:54 2016-07-05 13:54

Ištrinkite katalogą (daugiausia ngn-wiki.ru.site/questions/97985 / ... kopija), „Ansible“ atlieka šią operaciją su rmtree po gaubtu.

 - name: remove files and directories file: state: "{{ item }}" path: "/srv/deleteme/" owner: 1000 # set your owner, group, and mode accordingly group: 1000 mode: '0777' with_items: - absent - directory 

Jei trūksta prabangos ištrinti visą katalogą ir jį atkurti, galite nuskaityti jį failams (ir katalogams) ir ištrinti juos po vieną. Tai užtruks šiek tiek laiko. Jūs tikriausiai norėsite įsitikinti, kad turite [ssh_connection]\npipelining = True jūsų ansible.cfg.

 - block: - name: 'collect files' find: paths: "/srv/deleteme/" hidden: True recurse: True # file_type: any # Added in ansible 2.3 register: collected_files - name: 'collect directories' find: paths: "/srv/deleteme/" hidden: True recurse: True file_type: directory register: collected_directories - name: remove collected files and directories file: path: "{{ item.path }}" state: absent with_items: > {{ collected_files.files + collected_directories.files }} 
14
24 янв. atsakymą pateikė ThorSummoner Jan 24 2017-01-24 22:20 '17, 10:20 pm 2017-01-24 22:20

pabandykite vykdyti toliau nurodytą komandą, ji turėtų veikti

 - shell: ls -1 /some/dir register: contents - file: path=/some/dir/{{ item }} state=absent with_items: {{ contents.stdout_lines }} 
12
05 июля '16 в 15:04 2016-07-05 15:04 atsakymą pateikė Ganesan Srinivasan, liepos 5 d. 16 d. 15:04 2016-07-05 15:04

„Glob“ failo naudojimas taip pat veiks. Pateiktame kode yra sintaksės klaida. Aš jį modifikavau ir išbandžiau.

 - name: remove web dir contents file: path: "{{ item }}" state: absent with_fileglob: - "/home/mydata/web/*" 
3
06 июля '16 в 12:14 2016-07-06 12:14 atsakymas duotas Deepali Mittal liepos 16 d. 16 val. 12:14 2016-07-06 12:14

„Ansible“ vis dar diskutuoja apie state = empty įgyvendinimą state = empty https://github.com/ansible/ansible-modules-core/issues/902

 my_folder: "/home/mydata/web/" empty_path: "/tmp/empty" - name: "Create empty folder for wiping." file: path: "{{ empty_path }}" state: directory - name: "Wipe clean {{ my_folder }} with empty folder hack." synchronize: mode: push #note the backslash here src: "{{ empty_path }}/" dest: "{{ nl_code_path }}" recursive: yes delete: yes delegate_to: "{{ inventory_hostname }}" 

Atkreipkite dėmesį, kad sinchronizavimo metu bet kokiu atveju turėtumėte turėti galimybę sinchronizuoti failus (su ištrynimu).

1
10 окт. Atsakymas pateikiamas Marcin 10 spalis. 2017-10-10 14:47 '17 at 2:47 2017-10-10 14:47

tuščių aplankų problema čia https://github.com/ansible/ansible/issues/18910

ir šiuo metu šis sprendimas veikia man.

sukurti tuščią aplanką

 makedir /tmp/empry 

tada pridėkite šias eilutes į nepanaudotą knygą.

 - name: Empty remote directory synchronize: src: /tmp/empry/ dest: /home/mydata/web/ delete: yes recursive: yes 
1
14 нояб. atsakymas pateikiamas w1100n 14 nov. 2017-11-14 08:33 '17 at 8:33 2017-11-14 08:33

Darant prielaidą, kad jūs visada esate „Linux“, pabandykite find cmd.

 - name: Clean everything inside {{ item }} shell: test -d {{ item }}  find {{ item }} -path '{{ item }}/*' -prune -exec rm -rf {} \; with_items: [/home/mydata/web] 

Tai turėtų sunaikinti failus / aplankus / paslėptus po /home/mydata/web

0
25 янв. atsakymą Sherzod Odinaev pateikė sausio 25 d. 2017-01-25 05:12 '17 at 5:12 2017-01-25 05:12

Žemiau dirbo man

 - name: Ansible delete html directory file: path: /var/www/html state: directory 
-2
25 сент. Sakharam Thorat atsakymas rugsėjo 25 d 2017-09-25 15:33 '17, 15:33 pm 2017-09-25 15:33