[cookbooks] Some improvements in cobbler, nailgun cookbooks

This commit is contained in:
Vladimir Kozhukalov 2012-07-11 17:19:56 +04:00
parent f68a00bfa9
commit adde9df99b
11 changed files with 65 additions and 39 deletions

View File

@ -7,14 +7,13 @@ default["cobbler"]["gateway"] = default_conf[:gateway]
default["cobbler"]["pxetimeout"] = "20" #10=1sec
default["cobbler"]["repoaddr"] = default_conf[:server]
default["cobbler"]["user"] = "cobbler"
default["cobbler"]["password"] = "cobbler"
default["cobbler"]["ks_mirror_dir"] = "/var/www/cobbler/ks_mirror"
default["cobbler"]["preseed_dir"] = "/var/lib/cobbler/kickstarts"
default["cobbler"]["bootstrap_mnt"] = "/var/lib/mirror/bootstrap"
# default["cobbler"]["bootstrap_kernel"] = "/var/lib/mirror/bootstrap/linux"
# default["cobbler"]["bootstrap_initrd"] = "/var/lib/mirror/bootstrap/initrd.gz"
default["cobbler"]["precise-x86_64_iso"] = "/var/lib/mirror/netinst/precise-x86_64.iso"
default["cobbler"]["precise-x86_64_mnt"] = "/var/lib/mirror/netinst/precise-x86_64"

View File

@ -5,8 +5,13 @@ version "0.0.1"
recipe "cobbler::default", "Installs cobbler, dnsmasq, tftp-hpa and configures cobbler"
recipe "cobbler::bootstrap", "Installs bootstrap distro, profile and system"
recipe "cobbler::precise-x86_64", "Installs precise-x86_64 distro and profile"
recipe "cobbler::centos-6.2-x86_64", "Installs centos-6.2-x86_64 distro and profile"
%w{ ubuntu }.each do |os|
supports os
end
%w{ nailgun }.each do |cookbook|
depends cookbook
end

View File

@ -9,7 +9,7 @@ template "#{node.cobbler.preseed_dir}/centos-6.2-x86_64.ks" do
group "root"
mode "0644"
variables(
:late_authorized_keys => LateFile.new("/root/.ssh/id_rsa.pub"),
:late_authorized_keys => LateFile.new("#{node.nailgun.root}/.ssh/id_rsa.pub"),
:late_deploy => LateFile.new("/opt/nailgun/bin/deploy")
)
end

View File

@ -1,3 +1,5 @@
include_recipe "nailgun::server"
# Here are packages cobbler needs to have to work correctly
package "cobbler" do
@ -43,6 +45,17 @@ template "/etc/cobbler/settings" do
notifies :restart, "service[cobbler]"
end
script "/etc/cobbler/users.digest" do
interpreter "bash"
user "root"
code <<-EOH
htpasswd -D /etc/cobbler/users.digest #{node.cobbler.user} || true
printf "#{node.cobbler.user}:Cobbler:#{node.cobbler.password}" | md5sum | awk '{print $1}' >> /etc/cobbler/users.digest
EOH
not_if "grep -q \"^#{node.cobbler.user}:\" /etc/cobbler/users.digest"
notifies :restart, "service[cobbler]"
end
execute "cobbler_sync" do
command "cobbler sync"
returns [0,155]
@ -56,6 +69,7 @@ template "/etc/cobbler/dnsmasq.template" do
:dhcp_range => node["cobbler"]["dhcp_range"],
:gateway => node["cobbler"]["gateway"]
)
notifies :restart, "service[cobbler]"
notifies :run, "execute[cobbler_sync]"
end
@ -65,6 +79,7 @@ template "/etc/cobbler/pxe/pxedefault.template" do
variables(
:pxetimeout => node["cobbler"]["pxetimeout"]
)
notifies :restart, "service[cobbler]"
notifies :run, "execute[cobbler_sync]"
end
@ -92,10 +107,3 @@ include_recipe "cobbler::bootstrap"
include_recipe "cobbler::precise-x86_64"
include_recipe "cobbler::centos-6.2-x86_64"
# FIXME
# TO WORK CORRECTLY COBBLER NEEDED TO BE RESTRTED AND RESYNCED
# ruby_block "notify cobbler sync" do
# block {}
# notifies :run, "execute[cobbler_sync]"
# end

View File

@ -9,7 +9,7 @@ template "#{node.cobbler.preseed_dir}/precise-x86_64.seed" do
group "root"
mode "0644"
variables(
:late_authorized_keys => LateFile.new("/root/.ssh/id_rsa.pub"),
:late_authorized_keys => LateFile.new("#{node.nailgun.root}/.ssh/id_rsa.pub"),
:late_deploy => LateFile.new("/opt/nailgun/bin/deploy")
)
end

View File

@ -1,7 +1,5 @@
install
url --url http://<%= node.cobbler.repoaddr %>/centos/6.2
#url --url http://<%= node.cobbler.repoaddr %>/cblr/ks_mirror/centos-6.2-x86_64
#repo --name=base --baseurl=http://<%= node.cobbler.repoaddr %>/centos/6.2
lang en_US.UTF-8
keyboard us
reboot
@ -54,18 +52,21 @@ enabled=1
gpgcheck=0
EOF
# configure ssh key
mkdir -p /root/.ssh
chown -R root:root /root/.ssh
chmod 700 /root/.ssh
<%= @late_authorized_keys.init.cobbler_late_file("/opt/nailgun/.ssh/authorized_keys", "644") %>
<%= @late_authorized_keys.init.cobbler_late_file("/root/.ssh/authorized_keys", "644") %>
# deploy script
mkdir -p /opt/nailgun/bin
<%= @late_deploy.init.cobbler_late_file("/opt/nailgun/bin/deploy", "755") %>
# install chef
gem sources -a http://<%= node.cobbler.repoaddr %>/gems/gems
gem install chef -r --no-ri --no-rdoc
# nopxe
$SNIPPET('disable_pxe')

View File

@ -15,6 +15,12 @@ define :ssh_keygen, :length => 2048 do
mode '755'
recursive true
end
directory "#{homedir}/.ssh" do
owner username
group groupname
mode '700'
end
execute "Generate ssh key for #{username}" do
command "ssh-keygen -t #{keytype} -b #{params[:length]} -N '' -f #{homedir}/.ssh/id_#{keytype}"
@ -23,4 +29,20 @@ define :ssh_keygen, :length => 2048 do
group groupname
end
file "#{homedir}/.ssh/id_#{keytype}" do
owner username
group groupname
mode '600'
end
execute "Public ssh key for #{username}" do
command "ssh-keygen -y -f #{homedir}/.ssh/id_#{keytype} > #{homedir}/.ssh/id_#{keytype}.pub"
creates File.join(homedir, ".ssh", "id_#{keytype}.pub")
end
file "#{homedir}/.ssh/id_#{keytype}.pub" do
owner username
group groupname
mode '644'
end
end

View File

@ -10,7 +10,7 @@ recipe "deps", "Installs nailgun deps"
supports "ubuntu" # It should work on debian too, but not tested yet
%w{celery redis2 django python}.each do |cookbook|
%w{celery redis2 django python cobbler}.each do |cookbook|
depends cookbook
end

View File

@ -53,22 +53,14 @@ template "#{node.nailgun.root}/nailgun/extrasettings.py" do
:level => "DEBUG",
:filename => "/var/log/nailgun/nailgun.log",
:sshkey => "#{node.nailgun.root}/.ssh/id_rsa",
:bootstrap_sshkey => "#{node.nailgun.root}/.ssh/bootstrap.rsa",
:bootstrap_sshkey => "/root/bootstrap.rsa",
:cobbler_address => "localhost",
:cobbler_user => "cobbler",
:cobbler_password => "cobbler",
:cobbler_user => node.cobbler.user,
:cobbler_password => node.cobbler.password,
:cobbler_profile => "centos-6.2-x86_64"
)
end
# FIXME
# IT NEEDED TO BE CREATED DURING ssh-keygen
directory "#{node.nailgun.root}/.ssh" do
owner node.nailgun.user
group node.nailgun.group
mode "700"
end
ssh_keygen "Nailgun ssh-keygen" do
homedir node.nailgun.root
username node.nailgun.user
@ -76,18 +68,8 @@ ssh_keygen "Nailgun ssh-keygen" do
keytype 'rsa'
end
ssh_keygen "Root ssh-keygen" do
homedir "/root"
username "root"
groupname "root"
keytype 'rsa'
end
# FIXME
# IT NEEDED TO BE COPIED FROM FIXED PLACE
file "#{node.nailgun.root}/.ssh/bootstrap.rsa" do
mode 0600
owner node.nailgun.user
file "/root/bootstrap.rsa" do
mode 0640
group node.nailgun.group
end

View File

@ -15,3 +15,4 @@ default[:repo][:gnupgpasswdfile] = '/root/.gnupg/keyphrase'
default[:repo][:ubuntu][:root] = '/var/lib/mirror/ubuntu'
default[:repo][:centos][:root] = '/var/lib/mirror/centos'
default[:repo][:gems][:root] = '/var/lib/mirror/gems'

View File

@ -13,3 +13,11 @@ Alias /centos <%= node.repo.centos.root %>
Order deny,allow
Allow from all
</Directory>
Alias /gems <%= node.repo.gems.root %>
<Directory <%= node.repo.gems.root %>>
Options Indexes FollowSymLinks MultiViews
Order deny,allow
Allow from all
</Directory>