我使用Fortinet进行防火墙自动化,但出现错误“读取运行配置错误”。我已经关注了这个网站:https://github.com/ansible/ansible/issues/33392
但是找不到任何解决方案。请告诉我我在做什么错了吗?
这是我正在尝试的: FortiOS.yml剧本:
---
- name: FortiOS Firewall Settings
hosts: fortiFW
connection: local
vars_files:
- /etc/ansible/vars/FortiOS_Settings_vars.yml
tasks:
- name: Backup current config
fortios_config:
host: 192.168.1.99
username: admin
password: Password@123
backup: yes
backup_path: /etc/ansible/forti_backup
这就是我得到的错误:
确定:[192.168.1.99]元数据:运行处理程序读取vars_file '/etc/ansible/vars/FortiOS_Settings_vars.yml'
任务[备份当前配置] ****************************************************** ****************************************************** ****************************************************** ****************************************************** ********任务路径:/etc/ansible/FortiOS_Settings_test.yml:8 <192.168.1.99> 为用户建立本地连接:root <192.168.1.99> EXEC / bin / sh -c'echo〜root && sleep 0'<192.168.1.99> EXEC / bin / sh -c'(umask 77 && mkdir -p“
echo /root/.ansible/tmp/ansible-tmp-1539674386.05-16470854685226
” &&回声 ansible-tmp-1539674386.05-16470854685226 =“echo /root/.ansible/tmp/ansible-tmp-1539674386.05-16470854685226
”)&& sleep 0'使用模块文件 /usr/lib/python2.7/site-packages/ansible/modules/network/fortios/fortios_config.py <192.168.1.99>放置 /root/.ansible/tmp/ansible-local-6154Uq5Dmw/tmpt6JukB TO /root/.ansible/tmp/ansible-tmp-1539674386.05-16470854685226/AnsiballZ_fortios_config.py <192.168.1.99> EXEC / bin / sh -c'chmod u + x /root/.ansible/tmp/ansible-tmp-1539674386.05-16470854685226/ /root/.ansible/tmp/ansible-tmp-1539674386.05-16470854685226/AnsiballZ_fortios_config.py && sleep 0'<192.168.1.99> EXEC / bin / sh -c'/ usr / bin / python /root/.ansible/tmp/ansible-tmp-1539674386.05-16470854685226/AnsiballZ_fortios_config.py && sleep 0'<192.168.1.99> EXEC / bin / sh -c'rm -f -r /root/.ansible/tmp/ansible-tmp-1539674386.05-16470854685226/> / dev / null 2>&1 && sleep 0'完整回溯是:警告:以下 追溯可能不与实际失败有关。文件 “ / tmp / ansible_fortios_config_payload_b6IQmy / 主要 .py”,第132行 主要 f.load_config(path = module.params ['filter'])文件“ /usr/lib/python2.7/site-packages/pyFG/fortios.py”,第212行,在 load_config config_text = self.execute_command(command)文件“ /usr/lib/python2.7/site-packages/pyFG/fortios.py”,第154行,在 execute_command 输出=输出+ self._read_wrapper(o)文件“ /usr/lib/python2.7/site-packages/pyFG/fortios.py”,第120行,在 _read_wrapper 返回py23_compat.text_type(data)致命:[192.168.1.99]:失败! => { “已更改”:错误, “调用”:{ “ module_args”:{ “备份”:是的, “ backup_filename”:null, “ backup_path”:“ / etc / ansible / forti_backup”, “ config_file”:null, “ file_mode”:否, “ filter”:“”, “主机”:“ 192.168.1.99”, “密码”:“ VALUE_SPECIFIED_IN_NO_LOG_PARAMETER”, “ src”:null, “超时”:60, “用户名”:“管理员”, “ vdom”:null } }, “ msg”:“读取正在运行的配置时出错”}
答案 0 :(得分:1)
使用此模块时,我遇到了同样的问题。我查看了模块的源代码,发现当filter设置为“”->空字符串时,会发生此错误。将过滤器更改为“防火墙地址”之类的内容时,您可以获得有关设备的事实。但是随后,您将只能从中获得正确的选项,就像您在设备的CLI上键入“显示防火墙地址”一样。 我目前正在研究将Ansible用于FortiGate自动化的解决方案,但是效果并不理想。例如。另外,FortiGates不支持Netconf,因此您不能使用Netconf将命令发送到设备。 因此,您没有做错任何事情,但是模块没有经过优化,或者我猜测完整配置可能太大而无法被模块读取,因此您必须使用filter选项来缩小它