1

我正在尝试运行 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 }}

这是瞻博网络页面:http: //junos-ansible-modules.readthedocs.io/en/1.3.1/junos_rollback.html

他们的例子的语法有点奇怪。主机使用冒号,其余使用 = 符号。我试过混合两者,并且只使用其中一种。我不断收到错误。

我还确认我的 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

谢谢,

4

2 回答 2

1

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}}
        ----
        ----

```

于 2017-04-05T06:31:32.643 回答
0

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

我有一个类似的问题,Ansible 没有找到我的模块,我所做的是将juniper.junos文件夹复制到我的角色文件夹,然后在其中添加一个任务文件夹以从那里执行 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

于 2017-11-01T17:21:35.627 回答