错误!在任务中未检测到动作.这通常表示拼写错误的模块名称或错误的模块路径



我试图创建一个具有共同角色的简单支付书。不幸的是,我被安排所困扰。我已经在互联网上查找解决方案以找到此错误。

设置:我在Ubuntu上运行Ansible 2.7.4 18.04

目录结构:

~/Ansible_Do
 playbook.yml
 inventory  (hosts file) 
    /roles
      /common 
        /defaults
            main.yml   (other variables)
        /tasks
            main.yml
            richard_e.yml
        /vars
            vars_and_stuff.yml   (vault)

我有一个简单的playbook.yml

---
# My playbook 1
- hosts: test
- name: Go to common role to run tasks.
  roles:
    - common
  tasks:
  - name: echo something
    shell: echo $(ip addr | grep inet)
...

我运行此命令以启动剧本:

~/Ansible_Do$ ansible-playbook -vv --vault-id @prompt -i ~/Ansible_Do/inventory playbook.yml

我输入继续剧本的保险库密码。

剧本开始从测试组的服务器组中提取事实。然后读取角色并起作用/角色/共同。该调用/common/tasks/main.yml文件。这是错误发生的地方。

该错误似乎已在'/home/~/ancible_do/roles/common/tasks/main.yml':第8行,第3列

# Common/tasks file
---
- name: Bring variable from vault
  include_vars:
    file: vars_and_stuff.yml
    name: My_password
- name: Super Richard   <======  Error 
  become: yes  
  vars:
    ansible_become_pass: "{{ My_password }}"
- import_tasks: ./roles/common/tasks/ricahrd_e.yml
...

./roles/common/tasks/ricahrd_e.yml是一个简单的测试任务。

---
- name: say hi
  debug:
    msg: "Active server."
...

" - 名称"上的错误。我已经在网上和Ansible文档中检查了一下,以查看是否有我缺少的钥匙。我在A/角色/任务(https://gist.github.com/halberom/ef3ea6d6764e92992923b0888740e5211)中找到了一个incepent_vars的示例,显示了适当的语法(i usement)。该代码可作为零件工作,但不在一起。

我已经达到了我能理解的。我觉得这是错误的简单,我缺少一些东西(树林的森林)。

错误完全意味着它所说的,除了"模块名称"在您的情况下没有拼写错误,但完全缺少。

这个...

- name: Super Richard   <======  Error 
  become: yes  
  vars:
    ansible_become_pass: "{{ My_password }}"

...不是有效的任务定义,它不会声明操作。
Ansible中的动作是对模块的呼吁,因此"拼写错误的模块名称"。
错误是在name之后出现的,因为这是Ansible期望要调用的"模块"的名称,例如shell在您的第一个示例中。

您可能假设become是"模块",但不是。
这是一个"剧本关键字",在这种情况下,在任务级别上应用,它的效果使您成为此任务的另一个用户。但是由于任务没有操作,您会得到此错误。

请参阅文档:
剧本关键字
了解特权升级

工作后,我得到了剧本的工作。知道"成为"不是任务是开始。我还发现了如何从保险库中拉出适当的VAR。

# My first playbook 1
- hosts: test
  become: yes
  vars_files:
  - ./roles/common/vars/vars_and_stuff.yml
  vars:
    ansible_become_pass: "{{ My_password }}"
  roles:
    - common
  tasks:
  - name: echo something
    shell: echo $(ip addr | grep inet)

vars文件访问保险库,然后 vars:拉出become使用的密码。使用become有效,我执行了common角色中的其他任务,并执行了最后一个独立任务。最后,不要尝试在剧本的最高级别上触发主机不确定的错误时 - name:

相关内容

最新更新