我使用Ansible角色aws-vpc-nat-gateway
收到错误我这样做:ansible-playbook create_nat_vpc.yml
使用此模块时出现此错误:
ERROR!任务中未检测到任何操作。这通常表示拼写错误 模块名称或模块路径不正确。
错误似乎已经存在 ' /vagrant/roles/aws-vpc-nat-gateway/tasks/main.yml' ;:第3行第3列, 但可能在文件的其他位置,具体取决于确切的语法 问题
违规行似乎是:
#在VPC中创建具有公共和私有子网的VPC,并为专用网络设置NAT网关。
- name:setup vpc
^这里
错误似乎已经存在 ' /vagrant/roles/aws-vpc-nat-gateway/tasks/main.yml' ;:第3行第3列, 但可能在文件的其他位置,具体取决于确切的语法 问题
违规行似乎是:
#在VPC中创建具有公共和私有子网的VPC,并为专用网络设置NAT网关。
- name:setup vpc
^这里
---
- 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
# ./ansible.cfg
[defaults]
library = /usr/share/ansible:library
我错过了什么?
---
# 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') }}"
答案 0 :(得分:1)
repository中定义的Ansible角色已损坏。
文件aws-vpc-nat-gateway/tasks/main.yml
是一个包含播放列表(a playbook)的YAML文件。
它保存在Ansible角色的结构中,位于tasks
目录中,其中Ansible期望YAML文件仅包含任务列表。
Ansible接受第一个元素,假设它是一个任务,但是没有找到任何action指令,所以它抛出异常。
文件本身可以作为一本剧本使用,所以你可以通过执行ansible-playbook main.yml
来试一试(注意它在不同的剧本中通过两次相对路径包含变量)。