运行简单的Ansible剧本时出错

时间:2020-06-24 23:17:28

标签: python python-3.x python-2.7 ansible ansible-2.x

我无法缝制最简单的Ansible剧本,我可以在正确的方向上轻推。

下面是我的错误,我的配置以及我到达那里所采取的步骤列表

错误

ASK [TEST FMGR CONNECTION GET SYS STATUS] *********************************************************************************************************************************************************************************************
task path: /home/fortinet/downloads/FMG-Ansible-Testing/test_fmgr.yml:8The full traceback is:Traceback (most recent call last):  File "/usr/lib/python2.7/dist-packages/ansible/executor/task_executor.py", line 146, in run    res = self._execute()  File "/usr/lib/python2.7/dist-packages/ansible/executor/task_executor.py", line 601, in _execute    self._connection = self._get_connection(variables=variables, templar=templar)  File "/usr/lib/python2.7/dist-packages/ansible/executor/task_executor.py", line 898, in _get_connection    ansible_playbook_pid=to_text(os.getppid())  File "/usr/lib/python2.7/dist-packages/ansible/plugins/loader.py", line 573, in get    obj = obj(*args, **kwargs)  File "/usr/lib/python2.7/dist-packages/ansible/plugins/connection/httpapi.py", line 202, in __init__    self.httpapi = httpapi_loader.get(self._network_os, self)  File "/usr/lib/python2.7/dist-packages/ansible/plugins/loader.py", line 552, in get    self._module_cache[path] = self._load_module_source(name, path)  File "/usr/lib/python2.7/dist-packages/ansible/plugins/loader.py", line 530, in _load_module_source    module = imp.load_source(to_native(full_name), to_native(path), module_file)  File "/usr/lib/python2.7/dist-packages/ansible/plugins/httpapi/fortimanager.py", line 41, in <module>    from ansible_collections.fortinet.fortimanager.plugins.module_utils.common import BASE_HEADERSImportError: No module named fortinet.fortimanager.plugins.module_utils.commonfatal: [192.168.0.120]: FAILED! => {    "msg": "Unexpected failure during module execution.",    "stdout": ""}

我的配置相对简单-一个剧本和一个只有一个主机的主机文件

我的配置

---
- name: FMGR CONNECTION GET SYS STATUS
  hosts: FortiManager
  connection: httpapi
  gather_facts: False

  tasks:
  - name: TEST FMGR CONNECTION GET SYS STATUS
    fmgr_query:
      adom: "root"
      object: "custom"
      custom_endpoint: "/sys/status"

[FortiManager]

192.168.0.120  ansible_host=192.168.0.120

[fmgr_api:children]
FortiManager

#[fmgr_api:vars]
[all:vars]

ansible_network_os=fortimanager
ansible_user=admin
ansible_password=password
ansible_become=no
ansible_become_method=disable
ansible_httpapi_use_ssl=true
ansible_httpapi_validate_certs=false
ansible_httpapi_timeout=300

踩踏

我下载了最新的FortiManager plugin on Ansible Galaxy,解压缩了文件,然后将插件和module_utils复制到了正确的位置:

/usr/lib/python2.7/dist-packages/ansible/plugins/httpapi/
/usr/lib/python2.7/dist-packages/ansible/module_utils/network/fortimanager/

1 个答案:

答案 0 :(得分:4)

运行此程序,然后重试。它以某种方式起作用。

ansible-galaxy collection install fortinet.fortios
ansible-galaxy collection install fortinet.fortimanager

输出

PLAY [FMGR CONNECTION GET SYS STATUS] **************************************************************************************************************************************************************************************************

TASK [TEST FMGR CONNECTION GET SYS STATUS] *********************************************************************************************************************************************************************************************
[WARNING]: Found internal 'results' key in module return, renamed to 'ansible_module_results'.
ok: [192.168.0.120]

PLAY RECAP *****************************************************************************************************************************************************************************************************************************
192.168.0.120              : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

也注释了以下几行

#ansible_become=no
#ansible_become_method=disable

Online Fortinet documentation is wrong!