정책 파일을 사용하여 databag을 사용하여 환경 별 설정을 정의하는 방법을 실행하려고합니다.Databag에서 정의한 환경 속성이 정책 파일과 함께 사용되었습니다.
나는 databag에서 다음 databag 항목은 "ENV"라고했다 : 나는 내 레시피에 정의 된 다음 한
{
"id": "enviornment_local",
"filename": "environment_local.json",
"efs": {
"database_mount": "fs-c2fa7d8b"
}
}
:
속성이에 포착되지 않는
environment = data_bag_item('env', "environment_#{Chef::Config.policy_group}")
Chef::Mixin::DeepMerge.hash_only_merge!(node.role_default, environment)
efs_database_mount = node['efs']['database_mount']
여기 코드 :
az = node['ec2']['placement_availability_zone']
region = az[0..-2] # trim last char
file_system_id = efs_database_mount #'fs-c2fa7d8b'
efs_uri = "#{az}.#{file_system_id}.efs.#{region}.amazonaws.com:/"
오류 :
NoMethodError
-------------
undefined method `[]' for nil:NilClass
내가 잘못하고있는 것에 대한 아이디어가 있습니까?
efs_database_mount = 노드 [ 'EFS'] [ 'database_mount'는 상기 예외를 제기한다. 나는 당신이 내가 Chef : Mixin :: DeepMerge.hash_only_merge (node.policy_group, environment) 또는 Chef : Mixin :: DeepMerge.hash_only_merge (node.env_default, environment)를 시도해야한다고 말하고 있다고 가정하고있다. 내가 이보다 더 똑똑해 보인 것처럼 보입니다 ... 저는 http://hedge-ops.com/policyfile-attributes/을 읽었습니다. 이것은 원래 값을 얻은 곳입니다. – TyMac
정의 된 내용이 없습니다 ... [ "default", : not_present], [ "env_default", : not_present], [ "role_default", : not_present], [ "force_default" not_present] [ "정상": not_present] [ "재정": not_present] [ "role_override": not_present] [ "env_override": not_present] [ "force_override": [not_present], [ "자동", : not_present]] ... 벼락치기로 인해 유감스럽게 생각합니다 ... 어쩌면 나는 아직도이 포럼에서 회신하기로되어있는 방법을 모르겠다. lol – TyMac
댓글이 없습니다. 읽을 수 있도록 편집을 통해 질문에 출력을 추가하십시오. – coderanger