Ansible - 无法运行某些JUNOS模块

时间:2017-04-04 19:27:08

标签: ansible junos-automation

我试图运行Ansible模块junos_cli和junos_rollback,我收到以下错误:

ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.

The error appears to have been in '/home/quake/network-ansible/roles/junos-rollback/tasks/main.yml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
- name: I've made a huge mistake
  ^ here

这是有问题的角色:

---
- name: I've made a huge mistake
  junos_rollback:
    host={{ inventory_hostname }}
    user=ansible
    comment={{ comment }}
    confirm={{ confirm }}
    rollback={{ rollback }}
    logfile={{ playbook_dir }}/library/logs/rollback.log
    diffs_file={{ playbook_dir }}/configs/{{ inventory_hostname }}

以下是Juniper页面: http://junos-ansible-modules.readthedocs.io/en/1.3.1/junos_rollback.html

他们的示例语法有点奇怪。 host使用冒号,其余使用=符号。我试过混合两种,只使用一种或另一种。我一直都有错误。

我也确认我的junos-eznc版本高于1.2.2(我有2.0.1)

之前我已经能够使用junos_cli了,我不知道是否发生了版本不匹配。在Ansible官方文档中,没有提到junos_cli或junos_rollback。也许他们不再受支持了?

http://docs.ansible.com/ansible/list_of_network_modules.html#junos

谢谢,

2 个答案:

答案 0 :(得分:0)

junos_cli& junos_rollback是Galaxy的一部分,而不是核心模块。你可以找到它们 https://galaxy.ansible.com/Juniper/junos/

此处发布的内容是否包含您的剧本的全部内容?如果是,您还需要在您的剧本中定义其他项目,例如角色,连接,本地。例如

参考https://github.com/Juniper/ansible-junos-stdlib#example-playbook

```

---
- name: rollback example
  hosts: all
  roles:
    - Juniper.junos
  connection: local
  gather_facts: no

  tasks:
    - name: I've made a huge mistake
      junos_rollback:
        host = {{inventory_hostname}}
        ----
        ----

```

答案 1 :(得分:0)

你在哪里保存了juniper.junos模块的内容?你可以发布你的剧本的内容和tree命令的输出来查看你的文件结构吗?这可能有所帮助。

我有一个类似的问题,Ansible没有找到我的模块,我做的是将juniper.junos文件夹复制到我的角色文件夹,然后在其中添加了一个tasks文件夹,从那里执行main.yaml。

这样的事情: 的 /Users/macuared/Ansible_projects/roles/Juniper.junos/tasks

---
- name: "TEST 1 - Gather Facts"
  junos_get_facts:
    host: "{{ inventory_hostname}}"
    user: "uuuuu"
    passwd: "yyyyyy"
    savedir: "/Users/macuared/Ansible_projects/Ouput/Facts"
  ignore_errors: True
  register: junos

- name: Checking Device Version
  debug: msg="{{ junos.facts.serialnumber }}"

另外,我会在你的YAML中添加“”字符串值。像这样:

---
- name: I've made a huge mistake
  junos_rollback:
    host="{{ inventory_hostname }}"
    user=ansible
    comment="{{ comment }}"
    confirm={{ confirm }}
    rollback={{ rollback }}
    logfile="{{ playbook_dir }}/library/logs/rollback.log"
    diffs_file="{{ playbook_dir }}/configs/{{ inventory_hostname }}"

对于这个“我试过混合两种,只使用其中一种。我一直在收到错误。”

我只使用了冒号而且我的工作正常,即使在文档建议=标志。见junos_get_facts