首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误角色:错误!任务中未检测到任何操作

错误角色:错误!任务中未检测到任何操作
EN

Stack Overflow用户
提问于 2016-12-21 01:35:00
回答 1查看 3.1K关注 0票数 0

我使用Ansible角色vpc-nat-网关时出错了

我知道:ansible-playbook create_nat_vpc.yml

在使用这个模块时,我得到了这个错误:

错误!任务中未检测到任何操作。这通常表示拼写错误的模块名或不正确的模块路径。 该错误似乎出现在'/vagrant/roles/aws-vpc-nat-gateway/tasks/main.yml':第3行第3列中,但可能在文件的其他地方,这取决于确切的语法问题。 违规之处似乎是:在VPC中创建带有公共和专用子网的VPC,并为专用网络设置NAT网关。

  • 名称:安装vpc ^这里 该错误似乎出现在'/vagrant/roles/aws-vpc-nat-gateway/tasks/main.yml':第3行第3列中,但可能在文件的其他地方,这取决于确切的语法问题。 违规之处似乎是:在VPC中创建带有公共和私有子网的VPC,并为专用网络设置NAT网关。
  • 名称:安装vpc ^这里

create_nat_vpc.yml:

代码语言:javascript
复制
---
- hosts: local
  connection: local
  sudo: no
  gather_facts: yes

  vars:
    region: ap-southeast-2
    cidr: 172.23.0.0/16
    public_subnet: 172.23.0.0/24
    private_subnet: 172.23.1.0/24
    public_subnet_az: ap-southeast-2a
    private_subnet_az: ap-southeast-2a


  roles:
  - aws-vpc-nat-gateway

使用aws config存储AWS密钥和密钥

ansible.cfg:

代码语言:javascript
复制
# ./ansible.cfg
[defaults]
library = /usr/share/ansible:library

我遗漏了什么?

aws nat-网关/任务/main.yml

代码语言:javascript
复制
---
# Creating a VPC with Public and Private subnet in a VPC and setup NAT gateway for the private network. 
- name: setup vpc
  hosts: localhost
  gather_facts: true
  sudo_user: false
  pre_tasks:
    - include_vars: ../vars/main.yml
  tasks:
    - name: create VPC with public and private subnet
      ec2_vpc:
        state: present
        cidr_block: '{{ cidr }}'
        subnets:
          - cidr: '{{ public_subnet }}'
            az: '{{ public_subnet_az }}'
            resource_tags: { "Subnet":"Public" }
          - cidr: '{{ private_subnet }}'
            az: '{{ private_subnet_az }}'
            resource_tags: { "Subnet":"Private" }
        internet_gateway: True
        route_tables:
          - subnets:
              - '{{ public_subnet }}'
            routes:
              - dest: 0.0.0.0/0
                gw: igw
        region: '{{ region }}'
      register: vpc


- name: Copy the file to /tmp
  template: src=create-nat-gw.sh dest=/tmp/create-nat-gw.sh mode=0755

- name: Create NAT gateway by executing the script
  shell: sh /tmp/create-nat-gw.sh

- name: Change the route for VPC Private Subnet
  hosts: localhost
  gather_facts: true
  sudo_user: false
  pre_tasks:
    - include_vars: ../vars/main.yml

  tasks:
    - name: Modify private subnet
      ec2_vpc_route_table:
        vpc_id: '{{ vpc.vpc_id }}'
        region: '{{ region }}'
        subnets:
          - "{{ lookup('file', '/tmp/private-subnet') }}"
        routes:
          - dest: 0.0.0.0/0
            gateway_id: "{{ lookup('file', '/tmp/nat-gateway') }}"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-21 01:52:43

存储库中定义的不可见角色被破坏了。

文件aws-vpc-nat-gateway/tasks/main.yml是一个包含播放列表(剧本)的YAML文件。

它保存在tasks目录中的Ansible角色的结构中,Ansible期望YAML文件只包含一个任务列表。

Ansible接受第一个元素,假设它是一个任务,但是没有找到任何操作指令,所以它会抛出一个异常。

不过,该文件本身可能是一个剧本,所以您可以通过执行ansible-playbook main.yml来尝试它(请注意,它在不同的播放中通过相对路径两次包含变量)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41253832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档