我使用Ansible角色vpc-nat-网关时出错了
我知道:ansible-playbook create_nat_vpc.yml
在使用这个模块时,我得到了这个错误:
错误!任务中未检测到任何操作。这通常表示拼写错误的模块名或不正确的模块路径。 该错误似乎出现在'/vagrant/roles/aws-vpc-nat-gateway/tasks/main.yml':第3行第3列中,但可能在文件的其他地方,这取决于确切的语法问题。 违规之处似乎是:在VPC中创建带有公共和专用子网的VPC,并为专用网络设置NAT网关。
create_nat_vpc.yml:
---
- 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:
# ./ansible.cfg
[defaults]
library = /usr/share/ansible:library我遗漏了什么?
aws nat-网关/任务/main.yml
---
# 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') }}"发布于 2016-12-21 01:52:43
存储库中定义的不可见角色被破坏了。
文件aws-vpc-nat-gateway/tasks/main.yml是一个包含播放列表(剧本)的YAML文件。
它保存在tasks目录中的Ansible角色的结构中,Ansible期望YAML文件只包含一个任务列表。
Ansible接受第一个元素,假设它是一个任务,但是没有找到任何操作指令,所以它会抛出一个异常。
不过,该文件本身可能是一个剧本,所以您可以通过执行ansible-playbook main.yml来尝试它(请注意,它在不同的播放中通过相对路径两次包含变量)。
https://stackoverflow.com/questions/41253832
复制相似问题