Есть ли у вас требование использовать find
? Для подобных вещей я считаю циклы более подходящими:
$ cd /home/user/Pictures/Vacation/Italy
$ for directory in *; do \
cd "$directory" && \
for file in *front*; do \
cp --force "$file" fanart.jpg; \
done; \
cd /home/user/Pictures/Vacation/Italy; \
done
По сути, это просто проходит через подкаталоги «Италия» и для каждого из них копирует файлы с «Front» в их имени в файл с именем «fanart.jpg» "(перезапись, потому что имя файла назначения является постоянным.)
вы должны настроить admin
как remote_user
, а не стать_user
. Параметр стать_пользователем
устанавливает, для какого пользователя вы должны su
выполнять определенную задачу. Другими словами, ваш playbook должен выглядеть так:
---
- hosts: somehosts
remote_user: admin
roles:
....
#tasks file
---
# tasks file for test
- name: Change dns
become: yes
replace:
dest: /etc/resolv.conf
regexp: '192.168.1.24'
replace: '8.8.8.8'
Таким образом, пользователь admin будет использоваться для установления сеанса ssh, но для задачи Change dns
будет использоваться sudo
.
Кроме того, если admin
требует пароль для sudo, вам нужно будет запустить свой playbook следующим образом:
ansible-playbook -i mn test.yml -K
Переключатель -K
запросит пароль sudo для admin
.
Если у вас есть доступ sudo для изменения каталога назначения, вы можете использовать ниже var
доступный _пользователь :имя пользователя
доступный _ssh _пароль :пароль
стать :да
стать _методом :sudo
доступный _становится _пароль :пароль sudo