Module: Enscalator::Plugins::Debian
- Defined in:
- lib/enscalator/plugins/debian.rb
Overview
Debian appliance
Constant Summary collapse
- STORAGE =
Supported storage types in AWS
[:ebs, :'instance-store']
- ARCH =
Supported Debian image architectures
[:x86_64, :i386]
- RELEASE =
Supported Debian releases
{ jessie: '8', wheezy: '7' }
Class Method Summary collapse
-
.get_mapping(release: :jessie, storage: :ebs, arch: :x86_64) ⇒ Hash
Mapping for Debian amis.
Instance Method Summary collapse
-
#debian_init(storage: :ebs, arch: :x86_64) ⇒ Object
Create new Debian instance.
Class Method Details
.get_mapping(release: :jessie, storage: :ebs, arch: :x86_64) ⇒ Hash
Returns mapping for Debian amis.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/enscalator/plugins/debian.rb', line 25 def get_mapping(release: :jessie, storage: :ebs, arch: :x86_64) fail ArgumentError, 'release can be either codename or version' unless RELEASE.to_a.flatten.include? release fail ArgumentError, "storage can only be one of #{STORAGE}" unless STORAGE.include? storage fail ArgumentError, "arch can only be one of #{ARCH}" unless ARCH.include? arch version = RELEASE.keys.include?(release) ? release : RELEASE.invert[release] url = "https://wiki.debian.org/Cloud/AmazonEC2Image/#{version.capitalize}?action=raw" body = open(url) { |f| f.read } parse_raw_entries(body.split("\r\n").select { |b| b.starts_with?('||') }) .select { |i| i.ami =~ /ami[-][a-z0-9]{8}/ } .select { |r| r.root_storage == storage.to_s && r.arch == arch.to_s } .group_by(&:region) .map { |k, v| [k, v.map { |i| [i.virtualization, i.ami] }.to_h] } .to_h .with_indifferent_access end |
Instance Method Details
#debian_init(storage: :ebs, arch: :x86_64) ⇒ Object
Create new Debian instance
66 67 68 |
# File 'lib/enscalator/plugins/debian.rb', line 66 def debian_init(storage: :ebs, arch: :x86_64) mapping 'AWSDebianAMI', Debian.get_mapping(storage: storage, arch: arch) end |