RouterOS 平台选项

RouterOS 是 community.network 集合的一部分,只支持 CLI 连接和直接 API 访问。本页介绍了如何在 Ansible 中使用 ansible.netcommon.network_cli 在 RouterOS 上。更多信息可以在 community.routeros 集合的 SSH 指南 中找到。

有关如何使用 RouterOS API 的信息可以在 community.routeros 集合的 API 指南 中找到。

可用的连接

CLI

协议

SSH

凭证

如果存在,则使用 SSH 密钥/SSH 代理

如果使用密码,则接受 -u myuser -k

间接访问

通过堡垒机(跳转主机)

连接设置

ansible_connection: ansible.network.network_cli

启用模式
(特权升级)

RouterOS 不支持

返回的数据格式

stdout[0].

RouterOS SSH 模块不支持 ansible_connection: local。您必须使用 ansible_connection: ansible.netcommon.network_cli

RouterOS API 模块需要 ansible_connection: local。有关更多信息,请参阅 community.routeros 集合的 API 指南

在 Ansible 中使用 CLI

示例 CLI group_vars/routeros.yml

ansible_connection: ansible.netcommon.network_cli
ansible_network_os: community.network.routeros
ansible_user: myuser
ansible_password: !vault...
ansible_become: true
ansible_become_method: enable
ansible_become_password: !vault...
ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q bastion01"'
  • 如果您使用 SSH 密钥(包括 ssh 代理),则可以删除 ansible_password 配置。

  • 如果您直接访问主机(不是通过堡垒机/跳转主机),则可以删除 ansible_ssh_common_args 配置。

  • 如果您通过堡垒机/跳转主机访问主机,则不能在 ProxyCommand 指令中包含您的 SSH 密码。为了防止机密泄漏(例如在 ps 输出中),SSH 不支持通过环境变量提供密码。

  • 如果您遇到超时错误,您可能需要在用户名中添加 +cet1024w 后缀,这将禁用控制台颜色,启用“哑”模式,告诉 RouterOS 不要尝试检测终端功能并将终端宽度设置为 1024 列。有关更多信息,请参阅 MikroTik Wiki 中的文章 Console login process

  • 更多说明可以在 community.routeros 集合的 SSH 指南 中找到。

示例 CLI 任务

- name: Display resource statistics (routeros)
  community.network.routeros_command:
    commands: /system resource print
  register: routeros_resources
  when: ansible_network_os == 'community.network.routeros'

警告

切勿以明文形式存储密码。我们建议使用 SSH 密钥来验证 SSH 连接。Ansible 支持 ssh 代理来管理您的 SSH 密钥。如果您必须使用密码来验证 SSH 连接,我们建议使用 Ansible Vault 对它们进行加密。

另请参阅

设置超时选项