Вот короткий сценарий оболочки:
#!/bin/bash
start=10
end=13
first=$(head -n 1 file)
width=${#first}
text=$(paste -sd "" file)
mod="${text:0:start-1}$(tr N P <<<"${text:start:end-start+1}")${text:end}"
grep -Eo ".{1,$width}" <<<"$mod"
NNNNN
NNNNP
PPPNN
NNNNN
delegate_to: prod_server
в задаче synchronize:
означает, что файл нужно скопировать из prod_server
в new_server
. Из-за become: true
задача выполняется root
, и rsync пытается использовать открытый ключ -i /root/.ssh/id_rsa
, который отсутствует
Warning: Identity file /root/.ssh/id_rsa not accessible: No such file or directory.
Чтобы решить эту проблему, либо создайте ключи ssh для root
в prod_server
и убедитесь, что она может подключиться к new_server
(, если вы хотите, чтобы root скопировал файл ), либо удалите глобальный become: true
из воспроизведите и убедитесь, что sudo_user
может подключиться от prod_server
к new_server
и скопируйте файл.
При удалении глобального become: true
из игры вам придется выборочно включать его в любой задаче, когда это необходимо. В этом случае, чтобы упростить эскалацию в плейбуке, вы можете поместить синхронизацию файла в отдельный плей.