Выполнение playbook под конфигурацию mikrotik
Возникла следующая проблема. При воде значений которые записываются в переменные которые прописаны в playbook выдает данную ошибку не могу понять как ее устранить и что написано не так
файл hosts в котором прописано подключение
[mikrotik_ovpn_pki]
test1 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_host=11.11.11.11
файл playbook
---
- hosts: all
become: true
vars:
ssh_user: admin
vars_prompt:
- name: ssh_ip
prompt: "Введите ip устройства для доступа к нему"
private: no
- name: name
prompt: "Введите имя устройства"
private: no
- name: iplan
prompt: "Внутрений адрес устройства без последнего октета например: 666.666.6"
private: no
- name: akt
prompt: "Введите последний актет ip адреса например: 66"
private: no
- name: nic
prompt: "Введите name точки например: ap666"
private: no
tasks:
- name: "generate client script from template"
template: scr=templates/mikrotik_def_conf1.j2 dest=template_configs/mikrotik_def_conf1_{{ name }}.rsc backup=no
tags: generate
- name: "copy sert on client dev"
command: "scp -oStrictHostKeyChecking=no template_configs/mikrotik_def_confl_{{ name }}.rsc {{ ssh_user }}@{{ ssh_ip }}:"
tags: import
- name: "import script on client device"
command: ssh -oStrictHostKeyChecking=no {{ ssh_user }}@{{ ssh_ip }} "/import mikrotik_def_conf1_{{ name }}.rsc"
tags: import
Ответы (2 шт):
Таск такой должен через модуль script а не через command.
модуль command выполняет команду на целевом хосте - там стоит написать "/import mikrotik_def_conf1_{{ name }}.rsc" без ssh, потому что ансибл уже подключился, но она запускается напрямую без шела - не уверен что микротик примет её.
модуль shell может сработать там где не пойдет command
модуль script выполняет команду на хосте ансибла - тут команда пишется с ssh, scp, rsync и прочим
модуль template сам может копировать шаблон, scp наверное лишний
Во-первых, Ansible ругается, что вы используете зарезервированное имя name в качестве имени переменной.
Во-вторых, Ansible вызывает специальный модуль setup перед выполнением первой таски. Модуль setup пытается приконнектиться к mikrotik-хост чтобы собрать факты (информацию) о хосте: IP адрес, дисковое пространство, архитектура процессора и т.д. Но это заканчивается неудачей, так как необходимо наличие интерпретатора python на mikrotik-хосте, которого там нет. Аналогично ругается на команды sftp, scp.
Вам поможет вот это:
gather_facts: false
И далее использовать для загрузки файла на mikrotik :
ansible_connection: network_cli
ansible_network_os: routeros
tasks:
- name: file upload
net_put:
src: ./file_script.rsc
protocol: sftp
Версия Ansible должна быть >=2.6
