0
단위 테스트를 작성해야하는 매우 정통 요리사 코드가 있는데 제대로 수행 할 수있는 방법을 찾을 수 없습니다.ChefSpec 및 동적 속성이있는 루프 용
불행히도 환경 파일의 구조 때문에 아래에서 볼 수있는 for for 루프가 모두 필요합니다. 그것은
에 쓰여진 요리 책 수십 코드는 기본적으로 다음과 같습니다 이미 있기 때문에 환경 파일은 해결 될 수 없습니다
# Redis Sentinel information
node['os_setup']['zones'].each do |_zone|
_zone['nodes'].each do |_node|
if _node['nodename'] =~ /mpredis/i #is it a redis node?
node['db']['redis_sentinels'] << _node['hostname']
end
end
end
# generate /etc/hosts entries for Redis Sentinels
node['db']['redis_sentinels'].each do |_hostname|
# add entry for INTERSITE network
hostsfile_entry findIPfrom_host(_hostname, 'REDIS') do
hostname "#{_hostname}.#{node['domain']}"
aliases [_hostname]
unique true
comment "appended by recipe[#{cookbook_name}::#{recipe_name}]"
action :create
end
# add entry for TRAFFIC network
hostsfile_entry findIPfrom_host(_hostname, 'TRAFFIC') do
hostname "#{_hostname}db.#{node['domain']}"
aliases ["#{_hostname}db"]
unique true
comment "appended by recipe[#{cookbook_name}::#{recipe_name}]"
action :create
end
end
findIPfrom_host()
기능이 다른 요리 책 도서관에서 발견하고,이 보인다 이렇게 :
def getIPfrom_host(hostname, interface)
ip_addr = nil
node['os_setup']['zones'].each do |_zone|
_zone['nodes'].each do |_node|
if _node['hostname'] == hostname
_node['interfaces'].each do |_nic|
if _nic['device'] == node['interface_definitions'][interface.upcase]
ip_addr = _nic['ipaddress']
end
end
end
end
end
return ip_addr
end
나는 완전히 이것에 붙어있다 인정해야한다. ChefSpec 문서 나 예제에서 찾을 수있는 것은 없습니다.
여기이 분야에 대해 더 알고있는 사람이 있습니까?
감사합니다.