Как я могу распечатать список файлов на удаленном сервере с помощью доступного [дубликата]

Типы сборки отладки и выпуска вашего приложения подписаны двумя разными ключами.

Вам необходимо зарегистрировать оба ключа в Картах Google и Facebook для доступа к их услугам

13
задан sorin 5 November 2015 в 12:36
поделиться

3 ответа

Все механизмы цикла with_* являются локальными поисками, к сожалению, поэтому в Ansible нет действительно чистого способа сделать это. Удаленные операции по дизайну должны быть заключены в задачи, так как это должно было бы иметь дело с соединениями и инвентарем и т. Д.

. Что вы можете сделать, это сгенерировать свой файловый глобус, выгрузив его на хост, а затем зарегистрировать вывод и зацикливать stdout_lines на выходе.

Таким образом, тривиальный пример может быть примерно таким:

- name    : get files in /path/
  shell   : ls /path/*
  register: path_files

- name: fetch these back to the local Ansible host for backup purposes
  fetch:
    src : /path/"{{item}}"
    dest: /path/to/backups/
  with_items: "{{ path_files.stdout_lines }}"

Это будет подключаться к удаленному хосту (например, host.example.com) , получите все имена файлов под /path/, а затем скопируйте их обратно на хост Ansible по пути: /path/host.example.com/.

15
ответ дан Everett Toews 20 August 2018 в 23:44
поделиться
  • 1
    По вашему опыту, есть ли проблемы с окончанием строк между Windows и Linux, когда вы это делаете? Например. будет ли with_items пустым копирование stdout обратно из dir /b? – Nick 13 September 2017 в 00:55

Использование ls /path/* не сработало для меня, вот пример, который использует find и некоторое простое регулярное выражение для удаления всех управляемых виртуальных хостов nginx:

- name: get all managed vhosts
  shell: find /etc/nginx/sites-enabled/ -type f -name \*-managed.conf
  register: nginx_managed_virtual_hosts

- name: delete all managed nginx virtual hosts
  file:
    path: "{{ item }}"
    state: absent
  with_items: "{{ nginx_managed_virtual_hosts.stdout_lines }}"

Вы можете использовать его для найти все файлы с определенным расширением или любым другим микс. Например, чтобы просто получить все файлы в каталоге: find /etc/nginx/sites-enabled/ -type f.

2
ответ дан Sebastiaan Luca 20 August 2018 в 23:44
поделиться

Используйте фильтр find , чтобы отфильтровать файлы, а затем обработать результирующий список:

- name: Get files on remote machine
  find:
    paths: /path/on/remote
  register: my_find

- debug:
    var: item.path
  with_items: "{{ my_find.files }}"
2
ответ дан techraf 20 August 2018 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: