Ошибка, с которой вы столкнулись при запуске playbook Ansible, скорее всего связана с тем, что Ansible не может найти файл `template.j2` в контексте выполнения playbook. В отличие от команды, которую вы выполняете с помощью `ansible localhost -m copy`, playbook может иметь другие рабочие директории, что может влиять на доступность файлов.
Вот несколько возможных причин и способы их устранения:
1. **Путь к файлу**: Убедитесь, что файл `template.j2` находится в том же каталоге, где вы запускаете playbook, или предоставьте полный путь к файлу. Например:
```yaml
- copy:
src: /path/to/template.j2
dest: /root/mikrotik/config/newfile.rsc
```
2. **Рабочая директория**: Если вы запускаете playbook из другой директории, Ansible может не найти файл. Проверьте, в какой директории вы находитесь. Я рекомендую сначала перейти в каталог, где находится ваш playbook, и оттуда запускать playbook.
3. **Относительные и абсолютные пути**: Используйте абсолютные пути для большей предсказуемости. Например:
```yaml
- copy:
src: /absolute/path/to/template.j2
dest: /root/mikrotik/config/newfile.rsc
```
4. **Проверка прав доступа**: Убедитесь, что у Ansible есть доступ к файлу `template.j2`, и что права на файл и директорию настроены правильно.
5. **Направление файла**: Если playbook выполняется на удаленной машине или в другом контексте, убедитесь, что файл действительно размещен на той машине, к которой выполняется подключение.
6. **Использование других модулей**: Если у вас есть возможность использовать модуль `template` для копирования файла, проверьте, правильно ли вы его используете, так как это может быть более подходящим для вашего случая, особенно если `template.j2` является шаблоном:
```yaml
- name: Template file to target location
template:
src: template.j2
dest: /root/mikrotik/config/newfile.rsc
```
Попробуйте внести изменения в playbook с учетом вышеперечисленных пунктов, и это должно решить вашу проблему.