Ansible fortios_config备份不起作用

时间:2018-10-16 07:26:22

标签: ansible firewall

我使用Fortinet进行防火墙自动化,但出现错误“读取运行配置错误”。我已经关注了这个网站:https://github.com/ansible/ansible/issues/33392

但是找不到任何解决方案。请告诉我我在做什么错了吗?

  • 可用版本:2.7.0
  • Python版本:2.7.5
  • Fortinet:60E
  • FortiOS版本:6.0.2

这是我正在尝试的:  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”:“读取正在运行的配置时出错”}

1 个答案:

答案 0 :(得分:1)

使用此模块时,我遇到了同样的问题。我查看了模块的源代码,发现当filter设置为“”->空字符串时,会发生此错误。将过滤器更改为“防火墙地址”之类的内容时,您可以获得有关设备的事实。但是随后,您将只能从中获得正确的选项,就像您在设备的CLI上键入“显示防火墙地址”一样。 我目前正在研究将Ansible用于FortiGate自动化的解决方案,但是效果并不理想。例如。另外,FortiGates不支持Netconf,因此您不能使用Netconf将命令发送到设备。 因此,您没有做错任何事情,但是模块没有经过优化,或者我猜测完整配置可能太大而无法被模块读取,因此您必须使用filter选项来缩小它