Merge branch 'feature/erenfro/kitchen' of Linux-Help/cookbook-apt-zabbix into develop
This commit is contained in:
commit
97b357c439
12 changed files with 234 additions and 14 deletions
19
.gitignore
vendored
Normal file
19
.gitignore
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.DS_Store
|
||||||
|
.vagrant
|
||||||
|
Berksfile.lock
|
||||||
|
Gemfile.lock
|
||||||
|
*~
|
||||||
|
*#
|
||||||
|
.#*
|
||||||
|
\#*#
|
||||||
|
.*.sw[a-z]
|
||||||
|
*.un~
|
||||||
|
|
||||||
|
# Bundler
|
||||||
|
bin/*
|
||||||
|
.bundle/*
|
||||||
|
|
||||||
|
# Test-Kitchen
|
||||||
|
.kitchen/
|
||||||
|
.kitchen.local.yml
|
||||||
|
|
28
.kitchen.yml
Normal file
28
.kitchen.yml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
driver:
|
||||||
|
name: vagrant
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: chef_zero
|
||||||
|
environments_path: test/environments
|
||||||
|
chef_client_path: /usr/bin/chef-client
|
||||||
|
client_rb:
|
||||||
|
environment: integration_test_env
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: deb8
|
||||||
|
driver:
|
||||||
|
box: lh-debian
|
||||||
|
box_url: http://repos.home.ld/vagrant/box/lh-debian.json
|
||||||
|
vm_hostname: integration.deb.test
|
||||||
|
vagrantfile_erb: test/Vagrantfile.erb
|
||||||
|
require_chef_omnibus: false
|
||||||
|
|
||||||
|
suites:
|
||||||
|
- name: deb8
|
||||||
|
run_list:
|
||||||
|
- recipe[apt-zabbix::default]
|
||||||
|
attributes:
|
||||||
|
includes:
|
||||||
|
- deb8
|
||||||
|
|
2
.rspec
Normal file
2
.rspec
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
--color
|
||||||
|
--require spec_helper
|
|
@ -1,14 +0,0 @@
|
||||||
DEPENDENCIES
|
|
||||||
yum (~> 3.10.0)
|
|
||||||
yum-epel (~> 0.6.6)
|
|
||||||
yum-zabbix
|
|
||||||
path: .
|
|
||||||
metadata: true
|
|
||||||
|
|
||||||
GRAPH
|
|
||||||
yum (3.10.0)
|
|
||||||
yum-epel (0.6.6)
|
|
||||||
yum (~> 3.10.0)
|
|
||||||
yum-zabbix (0.1.0)
|
|
||||||
yum (>= 3.2.0)
|
|
||||||
yum-epel (>= 0.0.0)
|
|
20
Gemfile
Normal file
20
Gemfile
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem 'berkshelf'
|
||||||
|
|
||||||
|
# Uncomment these lines if you want to live on the Edge:
|
||||||
|
#
|
||||||
|
# group :development do
|
||||||
|
# gem "berkshelf", github: "berkshelf/berkshelf"
|
||||||
|
# gem "vagrant", github: "mitchellh/vagrant", tag: "v1.6.3"
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# group :plugins do
|
||||||
|
# gem "vagrant-berkshelf", github: "berkshelf/vagrant-berkshelf"
|
||||||
|
# gem "vagrant-omnibus", github: "schisamo/vagrant-omnibus"
|
||||||
|
# end
|
||||||
|
|
||||||
|
gem "test-kitchen"
|
||||||
|
gem "kitchen-vagrant"
|
||||||
|
gem "hitimes"
|
||||||
|
gem "ffi"
|
1
chefignore
Normal file
1
chefignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.kitchen
|
10
spec/spec_helper.rb
Normal file
10
spec/spec_helper.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
require 'chefspec'
|
||||||
|
require 'chefspec/berkshelf'
|
||||||
|
|
||||||
|
RSpec.configure do |config|
|
||||||
|
config.color = true
|
||||||
|
config.log_level = :error
|
||||||
|
end
|
||||||
|
|
||||||
|
ChefSpec::Coverage.start!
|
||||||
|
|
45
spec/unit/recipes/default_spec.rb
Normal file
45
spec/unit/recipes/default_spec.rb
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apt-zabbix::default' do
|
||||||
|
#context 'Creates Zabbix APT repository' do
|
||||||
|
# let(:chef_run) do
|
||||||
|
# ChefSpec::SoloRunner.new do |node|
|
||||||
|
# # Create a new environment (you could also use a different :let block or :before block)
|
||||||
|
# env = Chef::Environment.new
|
||||||
|
# env.name 'unit_test'
|
||||||
|
#
|
||||||
|
# # Stub the node to return this environment
|
||||||
|
# allow(node).to receive(:chef_environment).and_return(env.name)
|
||||||
|
#
|
||||||
|
# # Stub any calls to Environment.load to return this environment
|
||||||
|
# allow(Chef::Environment).to receive(:load).and_return(env)
|
||||||
|
#
|
||||||
|
# # Stubbing out fqdn node attribute
|
||||||
|
# node.automatic['fqdn'] = 'unit.testing.stub'
|
||||||
|
# end.converge(described_recipe)
|
||||||
|
# end
|
||||||
|
virtual_box_version = '5.0'
|
||||||
|
|
||||||
|
let(:runner) { ChefSpec::ServerRunner.new(platform: 'debian', version: '8.6') }
|
||||||
|
let(:chef_run) { runner.converge('apt-zabbix::default') }
|
||||||
|
#let(:chef_run) do
|
||||||
|
# ChefSpec::SoloRunner.new do |node|
|
||||||
|
# node.set['virtualbox']['version'] = virtual_box_version
|
||||||
|
# end.converge(described_recipe)
|
||||||
|
#end
|
||||||
|
|
||||||
|
#before do
|
||||||
|
# allow(::File).to receive(:executable?).and_return(true)
|
||||||
|
#end
|
||||||
|
|
||||||
|
it 'installs the apt repository' do
|
||||||
|
expect(chef_run).to add_apt_repository('zabbix').with(
|
||||||
|
:uri => 'http://repo.zabbix.com/zabbix/3.0/debian',
|
||||||
|
:key => 'zabbix-official-repo.key',
|
||||||
|
:distribution => 'jessie',
|
||||||
|
:components => ['main']
|
||||||
|
)
|
||||||
|
#expect(chef_run).to render_file('/etc/apt/sources.list.d/zabbix.list').with_content('deb "http://repo.zabbix.com/zabbix/3.0/debian" jessie main')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
66
test/Vagrantfile.erb
Normal file
66
test/Vagrantfile.erb
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
Vagrant.configure("2") do |c|
|
||||||
|
c.vm.box = "<%= config[:box] %>"
|
||||||
|
c.vm.box_url = "<%= config[:box_url] %>"
|
||||||
|
|
||||||
|
if Vagrant.has_plugin?("vagrant-cachier")
|
||||||
|
c.cache.auto_detect = true
|
||||||
|
c.cache.scope = :box
|
||||||
|
end
|
||||||
|
|
||||||
|
#if Vagrant.has_plugin?("vagrant-omnibus")
|
||||||
|
# c.omnibus.cache_packages = true
|
||||||
|
# c.omnibus.chef_version = <%= config[:chef_version] %>
|
||||||
|
#end
|
||||||
|
|
||||||
|
if Vagrant.has_plugin?("vagrant-libvirt")
|
||||||
|
c.vm.provider :libvirt do |libvirt|
|
||||||
|
libvirt.storage_pool_name = "Virt-SSD"
|
||||||
|
libvirt.channel :type => 'unix', :target_name => 'org.qemu.guest_agent.0', :target_type => 'virtio'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
c.vbguest.auto_update = false
|
||||||
|
|
||||||
|
<% if config[:vm_hostname] %>
|
||||||
|
c.vm.hostname = "<%= config[:vm_hostname] %>"
|
||||||
|
<% end %>
|
||||||
|
<% if config[:guest] %>
|
||||||
|
c.vm.guest = <%= config[:guest] %>
|
||||||
|
<% end %>
|
||||||
|
<% if config[:username] %>
|
||||||
|
c.ssh.username = "<%= config[:username] %>"
|
||||||
|
<% end %>
|
||||||
|
<% if config[:ssh_key] %>
|
||||||
|
c.ssh.private_key_path = "<%= config[:ssh_key] %>"
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% Array(config[:network]).each do |opts| %>
|
||||||
|
c.vm.network(:<%= opts[0] %>, <%= opts[1..-1].join(", ") %>)
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
c.vm.synced_folder ".", "/vagrant", disabled: true
|
||||||
|
<% config[:synced_folders].each do |source, destination, options| %>
|
||||||
|
c.vm.synced_folder "<%= source %>", "<%= destination %>", <%= options %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
c.vm.provider :<%= config[:provider] %> do |p|
|
||||||
|
<% config[:customize].each do |key, value| %>
|
||||||
|
<% case config[:provider]
|
||||||
|
when "virtualbox" %>
|
||||||
|
p.customize ["modifyvm", :id, "--<%= key %>", "<%= value %>"]
|
||||||
|
<% when "rackspace", "softlayer" %>
|
||||||
|
p.<%= key %> = "<%= value%>"
|
||||||
|
<% when /^vmware_/ %>
|
||||||
|
<% if key == :memory %>
|
||||||
|
<% unless config[:customize].include?(:memsize) %>
|
||||||
|
p.vmx["memsize"] = "<%= value %>"
|
||||||
|
<% end %>
|
||||||
|
<% else %>
|
||||||
|
p.vmx["<%= key %>"] = "<%= value %>"
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
16
test/environments/integration_test_env.json
Normal file
16
test/environments/integration_test_env.json
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"name": "integration_test_env",
|
||||||
|
"description": "placeholder for integration testing",
|
||||||
|
"cookbook_versions": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"json_class": "Chef::Environment",
|
||||||
|
"chef_type": "environment",
|
||||||
|
"default_attributes": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"override_attributes": {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
23
test/integration/debian/serverspec/debian_spec.rb
Normal file
23
test/integration/debian/serverspec/debian_spec.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apt-zabbix::default' do
|
||||||
|
### REPOSITORIES
|
||||||
|
#
|
||||||
|
describe 'Repositories should be installed:' do
|
||||||
|
describe file('/etc/apt/sources.list.d') do
|
||||||
|
it { should be_directory }
|
||||||
|
it { should be_mode 755 }
|
||||||
|
it { should be_owned_by 'root' }
|
||||||
|
it { should be_grouped_into 'root' }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe file('/etc/apt/sources.list.d/zabbix.list') do
|
||||||
|
it { should exist }
|
||||||
|
it { should be_mode 644 }
|
||||||
|
it { should be_owned_by 'root' }
|
||||||
|
it { should be_grouped_into 'root' }
|
||||||
|
its(:content) { shoult match('deb ... jessie contrib non-free main') }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
4
test/integration/helpers/serverspec/spec_helper.rb
Normal file
4
test/integration/helpers/serverspec/spec_helper.rb
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
require 'serverspec'
|
||||||
|
|
||||||
|
set :backend, :exec
|
||||||
|
|
Loading…
Reference in a new issue