Python 类型错误:';非类型';对象在ansible中不可下标
这是我的剧本。yml呼叫角色 playbook.yml 我的角色aws vpc包含任务、vars目录 任务中的main.yml 变量中的main.ymlPython 类型错误:';非类型';对象在ansible中不可下标,python,amazon-web-services,ansible,Python,Amazon Web Services,Ansible,这是我的剧本。yml呼叫角色 playbook.yml 我的角色aws vpc包含任务、vars目录 任务中的main.yml 变量中的main.yml 但在执行ansible playbook playbook.yml时,会显示以下错误: TASK [aws-vpc : create public subnet2] *****************************************************************************************
但在执行ansible playbook playbook.yml时,会显示以下错误:
TASK [aws-vpc : create public subnet2] *********************************************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: 'NoneType' object is not subscriptable
fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/home/prudhvi/.ansible/tmp/ansible-tmp-1567259099.58-219222309055552/AnsiballZ_ec2_vpc_subnet.py\", line 114, in <module>\n _ansiballz_main()\n File \"/home/prudhvi/.ansible/tmp/ansible-tmp-1567259099.58-219222309055552/AnsiballZ_ec2_vpc_subnet.py\", line 106, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/home/prudhvi/.ansible/tmp/ansible-tmp-1567259099.58-219222309055552/AnsiballZ_ec2_vpc_subnet.py\", line 49, in invoke_module\n imp.load_module('__main__', mod, module, MOD_DESC)\n File \"/usr/lib/python3.6/imp.py\", line 235, in load_module\n return load_source(name, filename, file)\n File \"/usr/lib/python3.6/imp.py\", line 170, in load_source\n module = _exec(spec, sys.modules[name])\n File \"<frozen importlib._bootstrap>\", line 618, in _exec\n File \"<frozen importlib._bootstrap_external>\", line 678, in exec_module\n File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\n File \"/tmp/ansible_ec2_vpc_subnet_payload_v3vahv3o/__main__.py\", line 602, in <module>\n File \"/tmp/ansible_ec2_vpc_subnet_payload_v3vahv3o/__main__.py\", line 592, in main\n File \"/tmp/ansible_ec2_vpc_subnet_payload_v3vahv3o/__main__.py\", line 504, in ensure_subnet_present\n File \"/tmp/ansible_ec2_vpc_subnet_payload_v3vahv3o/__main__.py\", line 517, in ensure_final_subnet\nTypeError: 'NoneType' object is not subscriptable\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
PLAY RECAP *************************************************************************************************************************************************************************************************
localhost
任务[aws专有网络:创建公共子网2]*********************************************************************************************************************************************************************
任务执行期间发生异常。要查看完整的回溯,请使用-vvv。错误为:TypeError:“非类型”对象不可下标
致命:[localhost]:失败!=>{“changed”:false,“module_stderr”:“Traceback(最近一次调用):\n File\”/home/prudhvi/.ansible/tmp/ansible-tmp-1567259099.58-2192223090552/AnsiballZ_ec2_vpc_subnet.py\”,第114行,在\n_AnsiballZ_main()\n文件\“/home/prudhvi/.ansible/tmp/ansible/ansible/ansible-tmp-tmp-15672590909.58-21990552/AnsiballZ-23090552.py\“,第106行,在调用模块(Zippped_mod,temp_path,ansiballz_PARAMS)\n File\”/home/prudhvi/.ansible/tmp/ansible-tmp-15672590999.58-219222309055552/ansiballz ec2_vpc_subnet.py\”,第49行,在调用模块\n imp.load_模块中(“\uu main_uuuuuuuuuuuuuuu',mod,mod,mod,mod,mod,mod,mod)DESC\”/py\)/python3.py\”,第235行,在load\u module\n return load\u source(名称、文件名、文件)\n file\“/usr/lib/python3.6/imp.py\”,第170行,在load\u source\n module=\u exec(spec,sys.modules[name])\n file\“\”,第618行,在\u exec\n file\“\”,第678行,在exec\u模块\n file\“\”,第219行,在删除了\n文件的调用中\“tmp/tmp/ANP/ansible/ansible/ansible/CNP/ansible/ansible/CNP/ansible/ansible/CNP/ansible/ansible/ansible/ansible/CNP/ansible/ansible-ec2-vpc/vpc/vpc/vpc/CNC/vpc/vpc/vpc/vpc/vpc/vpc/vpc/vpc/vpc子网子网子网预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预预v3vahv3o/主管道\“,第517行,在确保最终子网对等错误中:'NoneType'对象不可下标\n”,“module_stdout:”,“msg:“module FAILURE\n有关确切错误,请参阅stdout/stderr”,“rc”:1}”
重演*************************************************************************************************************************************************************************************************
本地主机
为什么会发生,如何解决
这里vpc创建成功,但子网出现问题。为什么?最后,我找到了答案,希望与大家分享 任务中的main.yml
问题在于空间。因此请注意这些问题。您是否可以将
区域
参数添加到ec2\u vpc\u子网
模块中,因为默认情况下它使用us-east-1`但您的vpc位于us-west-2
---
# tasks file for aws-vpc
- name: create VPC
ec2_vpc_net:
name: "{{ vpc_name }}"
cidr_block: "{{ vpc_cidr }}"
region: "{{ region }}"
state: present
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
register: vpc
- name: print vpc details
debug:
var: vpc
- name: create public subnet2
ec2_vpc_subnet:
state: present
vpc_id: "{{ vpc.vpc.id }} "
cidr: "{{ subnet2_cidr }}"
az: "{{ az2 }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
map_public: yes
resource_tags:
Name: "{{ subnet2_name }}"
register: subnet2
- name: print subnet2 details
debug:
var: subnet2
# vars file for aws-vpc
aws_access_key: "..........."
aws_secret_key: "............"
region: "us-west-2"
# VPC
vpc_cidr: 10.10.0.0/26
vpc_name: "my vpc"
# Subnet1
subnet1_name: "td-sb1"
subnet1_cidr: 10.10.0.0/27
# Subnet2
subnet2_name: "td-sb2"
subnet2_cidr: 10.10.0.32/27
# Availability zones
az1: "us-west-2a"
az2: "us-west-2b"
az3: "us-west-2c"
az4: "us-west-2d"
TASK [aws-vpc : create public subnet2] *********************************************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: 'NoneType' object is not subscriptable
fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/home/prudhvi/.ansible/tmp/ansible-tmp-1567259099.58-219222309055552/AnsiballZ_ec2_vpc_subnet.py\", line 114, in <module>\n _ansiballz_main()\n File \"/home/prudhvi/.ansible/tmp/ansible-tmp-1567259099.58-219222309055552/AnsiballZ_ec2_vpc_subnet.py\", line 106, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/home/prudhvi/.ansible/tmp/ansible-tmp-1567259099.58-219222309055552/AnsiballZ_ec2_vpc_subnet.py\", line 49, in invoke_module\n imp.load_module('__main__', mod, module, MOD_DESC)\n File \"/usr/lib/python3.6/imp.py\", line 235, in load_module\n return load_source(name, filename, file)\n File \"/usr/lib/python3.6/imp.py\", line 170, in load_source\n module = _exec(spec, sys.modules[name])\n File \"<frozen importlib._bootstrap>\", line 618, in _exec\n File \"<frozen importlib._bootstrap_external>\", line 678, in exec_module\n File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\n File \"/tmp/ansible_ec2_vpc_subnet_payload_v3vahv3o/__main__.py\", line 602, in <module>\n File \"/tmp/ansible_ec2_vpc_subnet_payload_v3vahv3o/__main__.py\", line 592, in main\n File \"/tmp/ansible_ec2_vpc_subnet_payload_v3vahv3o/__main__.py\", line 504, in ensure_subnet_present\n File \"/tmp/ansible_ec2_vpc_subnet_payload_v3vahv3o/__main__.py\", line 517, in ensure_final_subnet\nTypeError: 'NoneType' object is not subscriptable\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
PLAY RECAP *************************************************************************************************************************************************************************************************
localhost
- name: create public subnet2
ec2_vpc_subnet:
state: present
vpc_id: "{{ vpc.vpc.id }}" # initially it was vpc_id: "{{ vpc.vpc.id }} "
cidr: "{{ subnet2_cidr }}"
az: "{{ az2 }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
map_public: yes
resource_tags:
Name: "{{ subnet2_name }}"
register: subnet2
- name: print subnet2 details
debug:
var: subnet2