diff options
Diffstat (limited to 'deploy/adapters/cobbler')
56 files changed, 3391 insertions, 8 deletions
diff --git a/deploy/adapters/cobbler/kickstarts/default.ks b/deploy/adapters/cobbler/kickstarts/default.ks new file mode 100644 index 00000000..ecd877b8 --- /dev/null +++ b/deploy/adapters/cobbler/kickstarts/default.ks @@ -0,0 +1,131 @@ +# Kickstart for Profile: CentOS6.4_x86-64-1 +# Distro: CentOS6.4 + +# System Authorization +auth --useshadow --enablemd5 + +#if $os_version == "rhel7" +eula --agreed +services --enabled=NetworkManager,sshd +#end if + +# Use Graphic Mode +text + +# Disable Firewall +firewall --disabled + +# Run the Setup Agent on first-boot +firstboot --disable + +# System Keyboard +keyboard us + +# Language Setting +lang en_US + +# Installation Loggin Level +logging --level=info + +# Network Installation +url --url=$tree + + +$SNIPPET('kickstart_network_config') +$SNIPPET('kickstart_partition_disks') +$SNIPPET('kickstart_yum_repo_config') + +# Set User Password +#if $getVar('username', 'root') != "root" +rootpw root + #set username = $getVar('username', 'root') + #set crypted_param = '' + #set password_param = '--password=%s' % $username + #if $getVar('password', '') != "" + #set crypted_param = '--iscrypted' + #set password_param = '--password=%s' % $password + #end if +user --name=$username $crypted_param $password_param +#else + #if $getVar('password', '') != "" +rootpw --iscrypted $password + #else +rootpw root + #end if +#end if + +# Selinux Disable +selinux --disabled + +# No X Window System +skipx + +# System Timezone +#if $getVar('timezone', '') != "" +timezone --utc $timezone +#else +timezone --utc US/Pacific +#end if + +# Install +install + +# Reboot After Installation +reboot + +%pre +$SNIPPET('kickstart_pre_log') +$SNIPPET('kickstart_start') +$SNIPPET('kickstart_pre_install_network_config') +$SNIPPET('kickstart_pre_partition_disks') + +# Enable installation monitoring +$SNIPPET('kickstart_pre_anamon') +%end + +# Packages +%packages --nobase +@core +iproute +ntp +openssh-clients +wget +yum-plugin-priorities +json-c +libestr +rsyslog +parted +vim +lsof +strace +#if $os_version == "rhel7" +net-tools +#end if +#if $getVar('tool', '') != '' + #set $kickstart_software = "kickstart_software_%s" % $tool +$SNIPPET($kickstart_software) +#end if +%end + +%post --log=/var/log/post_install.log +$SNIPPET('kickstart_post_log') +$SNIPPET('kickstart_post_install_kernel_options') +$SNIPPET('kickstart_post_install_network_config') +$SNIPPET('kickstart_post_partition_disks') + +chkconfig iptables off +chkconfig ip6tables off + +$SNIPPET('kickstart_yum') +$SNIPPET('kickstart_ssh') +$SNIPPET('kickstart_ntp') +$SNIPPET('kickstart_limits.conf') +$SNIPPET('kickstart_sysctl.conf') +$SNIPPET('kickstart_rsyslog.conf') +#if $getVar('tool', '') != '' + #set $kickstart_tool = "kickstart_%s" % $tool +$SNIPPET($kickstart_tool) +#end if +$SNIPPET('kickstart_post_anamon') +$SNIPPET('kickstart_done') +%end diff --git a/deploy/adapters/cobbler/snippets/keep_cfengine_keys b/deploy/adapters/cobbler/snippets/keep_cfengine_keys index 06854adc..d2c5622f 100644 --- a/deploy/adapters/cobbler/snippets/keep_cfengine_keys +++ b/deploy/adapters/cobbler/snippets/keep_cfengine_keys @@ -32,13 +32,13 @@ function findkeys # Copy current host keys out to be reused if [ -d /tmp/$tmpdir$SEARCHDIR ] && cp -a /tmp/$tmpdir$SEARCHDIR/${PATTERN}* /tmp/$TEMPDIR; then keys_found="yes" - umount /tmp/$tmpdir - rm -r /tmp/$tmpdir - break + umount /tmp/$tmpdir + rm -r /tmp/$tmpdir + break elif [ -n "$SHORTDIR" ] && [ -d /tmp/$tmpdir$SHORTDIR ] && cp -a /tmp/$tmpdir$SHORTDIR/${PATTERN}* /tmp/$TEMPDIR; then - keys_found="yes" + keys_found="yes" umount /tmp/$tmpdir - rm -r /tmp/$tmpdir + rm -r /tmp/$tmpdir break fi umount /tmp/$tmpdir diff --git a/deploy/adapters/cobbler/snippets/kickstart_ansible b/deploy/adapters/cobbler/snippets/kickstart_ansible new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_ansible @@ -0,0 +1 @@ + diff --git a/deploy/adapters/cobbler/snippets/kickstart_chef b/deploy/adapters/cobbler/snippets/kickstart_chef new file mode 100644 index 00000000..1261b713 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_chef @@ -0,0 +1,13 @@ +mkdir -p /etc/chef +mkdir -p /var/log/chef + +## Generate validation.pem +$SNIPPET('kickstart_chef-validator.pem') +## Generate admin.pem +$SNIPPET('kickstart_chef-admin.pem') +## Generate client.rb +$SNIPPET('kickstart_client.rb') +$SNIPPET('kickstart_knife.rb') +$SNIPPET('kickstart_gem_local_repo') +$SNIPPET('kickstart_chef_run.sh') +$SNIPPET('kickstart_chef_init') diff --git a/deploy/adapters/cobbler/snippets/kickstart_chef-admin.pem b/deploy/adapters/cobbler/snippets/kickstart_chef-admin.pem new file mode 100644 index 00000000..36aad5d1 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_chef-admin.pem @@ -0,0 +1,8 @@ +#if $getVar('chef_admin_file', '') == "" + #set chef_admin_file = '/etc/chef-server/admin.pem' +#end if +#set f = $open($chef_admin_file) +cat << EOL > /etc/chef/admin.pem +#echo $f.read() +EOL +#silent $f.close() diff --git a/deploy/adapters/cobbler/snippets/kickstart_chef-validator.pem b/deploy/adapters/cobbler/snippets/kickstart_chef-validator.pem new file mode 100644 index 00000000..515a2195 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_chef-validator.pem @@ -0,0 +1,8 @@ +#if $getVar('chef_validation_file', '') == "" + #set chef_validation_file = '/etc/chef-server/chef-validator.pem' +#end if +#set f = $open($chef_validation_file) +cat << EOL > /etc/chef/validation.pem +#echo $f.read() +EOL +#silent $f.close() diff --git a/deploy/adapters/cobbler/snippets/kickstart_chef_init b/deploy/adapters/cobbler/snippets/kickstart_chef_init new file mode 100644 index 00000000..9bb9784f --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_chef_init @@ -0,0 +1,31 @@ +## A self-destruct service to boot chef client and register cron job +#if $getVar('ntp_server', '') == "" + #set $ntp_server = '0.centos.pool.ntp.org' +#end if +cat << EOF > /etc/init.d/chef +#raw +#!/bin/bash +# chkconfig: 2345 99 20 +# description: Description of the script +# processname: chef-agent +#end raw +echo "old date is: `date`" 2>&1 > /tmp/ntp.log +service ntp stop 2>&1 >> /tmp/ntp.log +ntpdate $ntp_server 2>&1 >> /tmp/ntp.log +service ntp start 2>&1 >> /tmp/ntp.log +echo "new date is: `date`" 2>&1 >> /tmp/ntp.log +yum -y update 2>&1 >> /tmp/yum_update.log + +crontab -l > /tmp/mycron +echo "*/30 * * * * /etc/chef/chef_client_run.sh" >> /tmp/mycron +crontab /tmp/mycron +rm /tmp/mycron + +/etc/chef/chef_client_run.sh & + +chkconfig chef off +mv /etc/init.d/chef /tmp/chef +EOF + +chmod +x /etc/init.d/chef +chkconfig chef on diff --git a/deploy/adapters/cobbler/snippets/kickstart_chef_run.sh b/deploy/adapters/cobbler/snippets/kickstart_chef_run.sh new file mode 100644 index 00000000..6b2e0301 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_chef_run.sh @@ -0,0 +1,108 @@ +#set ip_address = "" +#set ikeys = $interfaces.keys() +#for $iname in $ikeys + #set $idata = $interfaces[$iname] + #set $static = $idata["static"] + #set $management = $idata["management"] + #set $ip = $idata["ip_address"] + #if $management and $ip + #set $ip_address = $ip + #end if +#end for + +#set $proxy_url = "" +#set $local_repo_url = "" +#if $getVar("local_repo","") != "" + #set $local_repo_url = $local_repo +#end if +#if $getVar("proxy","") != "" + #set $proxy_url = $proxy +#end if + +#if $getVar('compass_server', '') != "" + #set srv = $getVar('compass_server','') +#else + #set srv = $getVar('server','') +#end if + +cat << EOF > /etc/chef/chef_client_run.sh +#!/bin/bash +touch /var/log/chef.log +PIDFILE=/tmp/chef_client_run.pid +if [ -f \\$PIDFILE ]; then + pid=\\$(cat \\$PIDFILE) + if [ -f /proc/\\$pid/exe ]; then + echo "there are chef_client_run.sh running with pid \\$pid" >> /var/log/chef.log 2>&1 + exit 1 + fi +fi +echo \\$$ > \\$PIDFILE +while true; do + echo "run chef-client on \`date\`" >> /var/log/chef.log 2>&1 + clients=\\$(pgrep chef-client) + if [[ "\\$?" == "0" ]]; then + echo "there are chef-clients '\\$clients' running" >> /var/log/chef.log 2>&1 + break + else + echo "knife search nodes" >> /var/log/chef.log 2>&1 +# use knife node list here to check if node has been registered because knife search node +# doesn't work as expected. + USER=root HOME=/root knife node list |grep \\$HOSTNAME. >> /var/log/chef.log 2>&1 + nodes=\\$(USER=root HOME=/root knife node list |grep \\$HOSTNAME.) + echo "found nodes \\$nodes" >> /var/log/chef.log 2>&1 + let all_nodes_success=1 + for node in \\$nodes; do + mkdir -p /var/log/chef/\\$node + if [ ! -f /etc/chef/\\$node.json ]; then + cat << EOL > /etc/chef/\\$node.json +{ + "local_repo": "$local_repo_url", + "proxy_url": "$proxy_url", + "ip_address": "$ip_address" +} +EOL + fi + if [ ! -f "/etc/chef/\\$node.pem" ]; then + cat << EOL > /etc/rsyslog.d/\\$node.conf +\\\\$ModLoad imfile +\\\\$InputFileName /var/log/chef/\\$node/chef-client.log +\\\\$InputFileReadMode 0 +\\\\$InputFileTag \\$node +\\\\$InputFileStateFile chef_\\${node}_log +\\\\$InputFileSeverity notice +\\\\$InputFileFacility local3 +\\\\$InputRunFileMonitor +\\\\$InputFilePollInterval 1 +#if $getVar("compass_server","") != "" +local3.info @$compass_server:514 +#else +local3.info @@$server:514 +#end if +EOL + rm -rf /var/lib/rsyslog/chef_\\$node_log + service rsyslog restart + fi + if [ -f "/etc/chef/\\$node.done" ]; then + USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\$node.json --client_key /etc/chef/\\$node.pem >> /var/log/chef.log 2>&1 + else + USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\$node.json --client_key /etc/chef/\\$node.pem -L /var/log/chef/\\$node/chef-client.log >> /var/log/chef.log 2>&1 + fi + if [ "\\$?" != "0" ]; then + echo "chef-client --node-name \\$node run failed" >> /var/log/chef.log 2>&1 + let all_nodes_success=0 + else + echo "chef-client --node-name \\$node run success" >> /var/log/chef.log 2>&1 + touch /etc/chef/\\$node.done + wget -O /tmp/package_state.\\$node --post-data='{"ready": true}' --header=Content-Type:application/json "http://$srv/api/clusterhosts/\\${node}/state_internal" + fi + done + if [ \\$all_nodes_success -eq 0 ]; then + sleep 1m + else + break + fi + fi +done +EOF +chmod +x /etc/chef/chef_client_run.sh + diff --git a/deploy/adapters/cobbler/snippets/kickstart_client.rb b/deploy/adapters/cobbler/snippets/kickstart_client.rb new file mode 100644 index 00000000..568ba46a --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_client.rb @@ -0,0 +1,39 @@ +mkdir -p /etc/chef +cat << EOL > /etc/chef/client.rb +log_level :info +log_location '/dev/null' +#if $getVar('chef_url', '') != "" +chef_server_url '$chef_url' +#elif $getVar("compass_server","") != "" +chef_server_url 'https://$compass_server' +#else +chef_server_url 'https://$server' +#end if +validation_client_name 'chef-validator' +json_attribs nil +pid_file '/var/run/chef-client.pid' +# Using default node name (fqdn) +no_lazy_load true +ssl_verify_mode :verify_none +#if $os_version == "rhel7" +verify_api_cert false +#end if +EOL + +mkdir -p /etc/chef/trusted_certs +#set certs_path = $getVar("trusted_certs_path", "/var/opt/chef-server/nginx/ca") +#if $certs_path != "" + #import os + #import os.path + #set filenames = $os.listdir($certs_path) + #for filename in $filenames + #if $filename.endswith('.crt') + #set filepath = $os.path.join($certs_path, $filename) + #set f = $open($filepath) +cat << EOF > /etc/chef/trusted_certs/$filename + #echo $f.read() +EOF + #silent $f.close() + #end if + #end for +#end if diff --git a/deploy/adapters/cobbler/snippets/kickstart_done b/deploy/adapters/cobbler/snippets/kickstart_done new file mode 100644 index 00000000..2a936adb --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_done @@ -0,0 +1,84 @@ +#set system_name = $getVar('system_name','') +#set profile_name = $getVar('profile_name','') +#set breed = $getVar('breed','') +#set os_version = $getVar('os_version','') +#if $getVar("compass_server","") != "" +#set srv = $getVar('compass_server','') +#else +#set srv = $getVar('server','') +#end if +#set kickstart = $getVar('kickstart','') +#set run_install_triggers = $str($getVar('run_install_triggers','')) +#set pxe_just_once = $str($getVar('pxe_just_once','')) +#set nopxe = "" +#set saveks = "" +#set runpost = "" +#if $system_name != '' + ## PXE JUST ONCE + #if $pxe_just_once in [ "1", "true", "yes", "y" ] + #if $breed == 'redhat' + #set nopxe = "\nwget \"http://%s/cblr/svc/op/nopxe/system/%s\" -O /var/log/nopxe" % (srv, system_name) + #else if $breed == 'vmware' and $os_version == 'esx4' + #set nopxe = "\ncurl \"http://%s/cblr/svc/op/nopxe/system/%s\" -o /var/log/nopxe" % (srv, system_name) + #else if $breed == 'vmware' + #set nopxe = "\nwget \"http://%s/cblr/svc/op/nopxe/system/%s\" -O /var/log/nopxe" % (srv, system_name) + #else if $breed == 'debian' or $breed == 'ubuntu' + #set nopxe = "\nwget \"http://%s/cblr/svc/op/nopxe/system/%s\" -O /var/log/nopxe" % (srv, system_name) + #else + ## default to wget + #set nopxe = "wget \"http://%s/cblr/svc/op/nopxe/system/%s\" -O /var/log/nopxe;" % (srv, system_name) + #end if + #end if + ## SAVE KICKSTART + #if $kickstart != '' + #if $breed == 'redhat' + #set saveks = "\nwget \"http://%s/cblr/svc/op/ks/%s/%s\" -O /root/cobbler.ks" % (srv, "system", system_name) + #else if $breed == 'vmware' and $os_version == 'esx4' + #set saveks = "\ncurl \"http://%s/cblr/svc/op/ks/%s/%s\" -o /root/cobbler.ks" % (srv, "system", system_name) + #else if $breed == 'vmware' + #set saveks = "\nwget \"http://%s/cblr/svc/op/ks/%s/%s\" -O /var/log/cobbler.ks" % (srv, "system", system_name) + #else if $breed == 'debian' or $breed == 'ubuntu' + #set saveks = "\nwget \"http://%s/cblr/svc/op/ks/%s/%s\" -O /var/log/cobbler.seed" % (srv, "system", system_name) + #end if + #end if + ## RUN POST TRIGGER + #if $run_install_triggers in [ "1", "true", "yes", "y" ] + #if $breed == 'redhat' + #set runpost = "\nwget \"http://%s/cblr/svc/op/trig/mode/post/%s/%s\" -O /dev/null" % (srv, "system", system_name) + #else if $breed == 'vmware' and $os_version == 'esx4' + #set runpost = "\ncurl \"http://%s/cblr/svc/op/trig/mode/post/%s/%s\" -o /dev/null" % (srv, "system", system_name) + #else if $breed == 'vmware' + #set runpost = "\nwget \"http://%s/cblr/svc/op/trig/mode/post/%s/%s\" -O /dev/null" % (srv, "system", system_name) + #else if $breed == 'debian' or $breed == 'ubuntu' + #set runpost = "\nwget \"http://%s/cblr/svc/op/trig/mode/post/%s/%s\" -O /dev/null" % (srv, "system", system_name) + #end if + #end if +#else if $profile_name != '' + ## SAVE KICKSTART + #if $kickstart != '' + #if $breed == 'redhat' + #set saveks = "\nwget \"http://%s/cblr/svc/op/ks/%s/%s\" -O /root/cobbler.ks" % (srv, "profile", profile_name) + #else if $breed == 'vmware' and $os_version == 'esx4' + #set saveks = "\ncurl \"http://%s/cblr/svc/op/ks/%s/%s\" -o /root/cobbler.ks" % (srv, "profile", profile_name) + #else if $breed == 'vmware' + #set saveks = "\nwget \"http://%s/cblr/svc/op/ks/%s/%s\" -O /var/log/cobbler.ks" % (srv, "profile", profile_name) + #else if $breed == 'debian' or $breed == 'ubuntu' + #set saveks = "\nwget \"http://%s/cblr/svc/op/ks/%s/%s\" -O /var/log/cobbler.seed" % (srv, "profile", profile_name) + #end if + #end if + ## RUN POST TRIGGER + #if $run_install_triggers in [ "1", "true", "yes", "y" ] + #if $breed == 'redhat' + #set runpost = "\nwget \"http://%s/cblr/svc/op/trig/mode/post/%s/%s\" -O /dev/null" % (srv, "profile", profile_name) + #else if $breed == 'vmware' and $os_version == 'esx4' + #set runpost = "\ncurl \"http://%s/cblr/svc/op/trig/mode/post/%s/%s\" -o /dev/null" % (srv, "profile", profile_name) + #else if $breed == 'vmware' + #set runpost = "\nwget \"http://%s/cblr/svc/op/trig/mode/post/%s/%s\" -O /dev/null" % (srv, "profile", profile_name) + #else if $breed == 'debian' or $breed == 'ubuntu' + #set runpost = "\nwget \"http://%s/cblr/svc/op/trig/mode/post/%s/%s\" -O /dev/null" % (srv, "profile", profile_name) + #end if + #end if +#end if +#echo $saveks +#echo $runpost +#echo $nopxe diff --git a/deploy/adapters/cobbler/snippets/kickstart_gem_local_repo b/deploy/adapters/cobbler/snippets/kickstart_gem_local_repo new file mode 100644 index 00000000..ac779382 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_gem_local_repo @@ -0,0 +1,23 @@ +cat << EOF > /root/.gemrc +#if $getVar('proxy', '') != "" +gem: --no-ri --no-rdoc --http-proxy=$proxy +#else +gem: --no-ri --no-rdoc +#end if +:backtrace: false +:benchmark: false +:bulk_threshold: 1000 +:sources: +#if $getVar("local_repo","") != "" +- $local_repo/gem_repo/ + #if $getVar("local_repo_only","1") == "0" +- https://rubygems.org/ + #end if +#else +- https://rubygems.org/ +#end if +:update_sources: true +:verbose: true +EOF + +cp -f /root/.gemrc /etc/gemrc diff --git a/deploy/adapters/cobbler/snippets/kickstart_hosts b/deploy/adapters/cobbler/snippets/kickstart_hosts new file mode 100644 index 00000000..7a0866dc --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_hosts @@ -0,0 +1,19 @@ +cat << EOL > /etc/hosts +127.0.0.1 $system_name localhost localhost.localdomain localhost4 localhost4.localdomain4 +::1 $system_name localhost localhost.localdomain localhost6 localhost6.localdomain6 +#for $iname, $idata in $interfaces.items() + #if $hostname and $idata["management"] and $idata["static"] and $idata.get("ip_address", "") != "" +$idata["ip_address"] $hostname + #end if +#end for +#import os +#set $server_name = $os.uname[1] +#if $getVar("compass_server", "") != "" +$compass_server $server_name +#else +$server $server_name +#end if +#if $getVar("chef_server_ip", "") != "" and $getVar("chef_server_dns", "") != "" +$chef_server_ip $chef_server_dns +#end if +EOL diff --git a/deploy/adapters/cobbler/snippets/kickstart_knife.rb b/deploy/adapters/cobbler/snippets/kickstart_knife.rb new file mode 100644 index 00000000..e4ab081b --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_knife.rb @@ -0,0 +1,35 @@ +mkdir -p /root/.chef +cat << EOL > /root/.chef/knife.rb +log_level :info +log_location '/dev/null' +#if $getVar('chef_url', '') != "" +chef_server_url '$chef_url' +#end if +node_name 'admin' +client_key '/etc/chef/admin.pem' +validation_client_name 'chef-validator' +validation_key '/etc/chef/validation.pem' +syntax_check_cache_path '/root/.chef/syntax_check_cache' +ssl_verify_mode :verify_none +#if $os_version == "rhel7" +verify_api_cert false +#end if +EOL + +mkdir -p /root/.chef/trusted_certs +#set certs_path = $getVar("trusted_certs_path", "/var/opt/chef-server/nginx/ca") +#if $certs_path != "" + #import os + #import os.path + #set filenames = $os.listdir($certs_path) + #for filename in $filenames + #if $filename.endswith('.crt') + #set filepath = $os.path.join($certs_path, $filename) + #set f = $open($filepath) +cat << EOF > /root/.chef/trusted_certs/$filename + #echo $f.read() +EOF + #silent $f.close() + #end if + #end for +#end if diff --git a/deploy/adapters/cobbler/snippets/kickstart_limits.conf b/deploy/adapters/cobbler/snippets/kickstart_limits.conf new file mode 100644 index 00000000..00cf8610 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_limits.conf @@ -0,0 +1,54 @@ +cat << EOF > /etc/security/limits.conf +#raw +# /etc/security/limits.conf +# +# Each line describes a limit for a user in the form: +# +#<domain> <type> <item> <value> +# +#Where: +#<domain> can be: +# - an user name +# - a group name, with @group syntax +# - the wildcard *, for default entry +# - the wildcard %, can be also used with %group syntax, +# for maxlogin limit +# +#<type> can have the two values: +# - "soft" for enforcing the soft limits +# - "hard" for enforcing hard limits +# +#<item> can be one of the following: +# - core - limits the core file size (KB) +# - data - max data size (KB) +# - fsize - maximum filesize (KB) +# - memlock - max locked-in-memory address space (KB) +# - nofile - max number of open files +# - rss - max resident set size (KB) +# - stack - max stack size (KB) +# - cpu - max CPU time (MIN) +# - nproc - max number of processes +# - as - address space limit (KB) +# - maxlogins - max number of logins for this user +# - maxsyslogins - max number of logins on the system +# - priority - the priority to run user process with +# - locks - max number of file locks the user can hold +# - sigpending - max number of pending signals +# - msgqueue - max memory used by POSIX message queues (bytes) +# - nice - max nice priority allowed to raise to values: [-20, 19] +# - rtprio - max realtime priority +# +#<domain> <type> <item> <value> +# + +#* soft core 0 +#* hard rss 10000 +#@student hard nproc 20 +#@faculty soft nproc 20 +#@faculty hard nproc 50 +#ftp hard nproc 0 +#@student - maxlogins 4 +* - nofile 100000 +# End of file +#end raw +EOF diff --git a/deploy/adapters/cobbler/snippets/kickstart_network_config b/deploy/adapters/cobbler/snippets/kickstart_network_config new file mode 100644 index 00000000..c4bb47ee --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_network_config @@ -0,0 +1,7 @@ +## start of cobbler network_config generated code +#if $getVar("system_name","") != "" +# Using "new" style networking config, by matching networking information to the physical interface's +# MAC-address +%include /tmp/pre_install_network_config +#end if +## end of cobbler network_config generated code diff --git a/deploy/adapters/cobbler/snippets/kickstart_ntp b/deploy/adapters/cobbler/snippets/kickstart_ntp new file mode 100644 index 00000000..2cbf75e5 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_ntp @@ -0,0 +1,70 @@ +#if $getVar('ntp_server', '') == "" + #set $ntp_server = '0.centos.pool.ntp.org' +#end if +chkconfig ntpd on + +cat << EOF > /etc/ntp.conf +# For more information about this file, see the man pages +# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). + +# Include the option tinker panic 0 at the top of your ntp.conf file. +# By default, the NTP daemon sometimes panics and exits if the underlying clock +# appears to be behaving erratically. This option causes the daemon to keep +# running instead of panicking. +tinker panic 0 + +driftfile /var/lib/ntp/drift + +# Permit time synchronization with our time source, but do not +# permit the source to query or modify the service on this system. +restrict default kod nomodify notrap nopeer noquery +restrict -6 default kod nomodify notrap nopeer noquery + +# Permit all access over the loopback interface. This could +# be tightened as well, but to do so would effect some of +# the administrative functions. +restrict 127.0.0.1 +restrict -6 ::1 + +# Hosts on local network are less restricted. +# restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap + +# Use public servers from the pool.ntp.org project. +# Please consider joining the pool (http://www.pool.ntp.org/join.html). +# server 0.centos.pool.ntp.org +# server 1.centos.pool.ntp.org +# server 2.centos.pool.ntp.org +server $ntp_server + +# broadcast 192.168.1.255 autokey # broadcast server +# broadcastclient # broadcast client +# broadcast 224.0.1.1 autokey # multicast server +# multicastclient 224.0.1.1 # multicast client +# manycastserver 239.255.254.254 # manycast server +# manycastclient 239.255.254.254 autokey # manycast client + +# Undisciplined Local Clock. This is a fake driver intended for backup +# and when no outside source of synchronized time is available. +server 127.127.1.0 # local clock + +# Enable public key cryptography. +# crypto + +includefile /etc/ntp/crypto/pw + +# Key file containing the keys and key identifiers used when operating +# with symmetric key cryptography. +keys /etc/ntp/keys + +# Specify the key identifiers which are trusted. +# trustedkey 4 8 42 + +# Specify the key identifier to use with the ntpdc utility. +# requestkey 8 + +# Specify the key identifier to use with the ntpq utility. +# controlkey 8 + +# Enable writing of statistics records. +# statistics clockstats cryptostats loopstats peerstats +EOF diff --git a/deploy/adapters/cobbler/snippets/kickstart_partition_disks b/deploy/adapters/cobbler/snippets/kickstart_partition_disks new file mode 100644 index 00000000..6978d8f4 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_partition_disks @@ -0,0 +1,5 @@ +## start of cobbler network_config generated code +#if $getVar("system_name","") != "" +%include /tmp/part-include +#end if +## end of cobbler network_config generated code diff --git a/deploy/adapters/cobbler/snippets/kickstart_post_anamon b/deploy/adapters/cobbler/snippets/kickstart_post_anamon new file mode 100644 index 00000000..699e830f --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_post_anamon @@ -0,0 +1,91 @@ +#if $str($getVar('anamon_enabled','')) == "1" + +## install anamon script +#if $getVar("compass_server","") != "" +wget -O /usr/local/sbin/anamon "http://$compass_server:$http_port/cobbler/aux/anamon" +#else +wget -O /usr/local/sbin/anamon "http://$server:$http_port/cobbler/aux/anamon" +#end if +## install anamon system service +cat << EOF > /etc/init.d/anamon.init +#raw +#!/bin/bash +## BEGIN INIT INFO +# Provides: anamon.init +# Default-Start: 3 5 +# Default-Stop: 0 1 2 4 6 +# Required-Start: $network +# Short-Description: Starts the cobbler anamon boot notification program +# Description: anamon runs the first time a machine is booted after +# installation. +## END INIT INFO + +# +# anamon.init: Starts the cobbler post-install boot notification program +# +# chkconfig: 35 95 95 +# +# description: anamon runs the first time a machine is booted after +# installation. +# +#end raw +#if $getVar("compass_server","") != "" +/usr/local/sbin/anamon --watchfile "/var/log/anaconda.log" --name $name --server $compass_server --port $http_port --exit +#else +/usr/local/sbin/anamon --watchfile "/var/log/anaconda.log" --name $name --server $server --port $http_port --exit +#end if +chkconfig anamon.init off +mv /etc/init.d/anamon.init /tmp/anamon.init +EOF + +## adjust permissions +chmod 755 /etc/init.d/anamon.init /usr/local/sbin/anamon +test -d /selinux && restorecon /etc/init.d/anamon.init /usr/local/sbin/anamon + +## enable the script +chkconfig anamon.init on + +#end if + +## place start-up script for updating os state +#if $getVar('compass_server', '') != "" + #set srv = $getVar('compass_server','') +#else + #set srv = $getVar('server','') +#end if +cat << EOF > /etc/init.d/set_state +#raw +#!/bin/bash +## BEGIN INIT INFO +# chkconfig: 2345 99 15 +# Provides: set_state +# Default-Start: 3 5 +# Default-Stop: 0 1 2 4 6 +# Required-Start: $network $sshd +# Short-Description: Notifies the os installation is finished +# Description: set_state runs the first time a machine is booted after +# installation. +## END INIT INFO +# +# set_state: Notify compass server the os installation is finished +# +# chkconfig: 35 99 99 +# +# description: set_state runs the first time a machine is booted after +# installation. +# +#end raw + +wget -O /tmp/os_state --post-data='{"ready": true}' --header=Content-Type:application/json "http://$srv/api/hosts/${hostname}/state_internal" +chkconfig set_state off +mv /etc/init.d/set_state /tmp/set_state +EOF + +## adjust permissions +chmod 755 /etc/init.d/set_state +test -d /selinux && restorecon /etc/init.d/set_state + +## enable the script +chkconfig set_state on + +echo "compass_server=$server" >> /etc/compass.conf diff --git a/deploy/adapters/cobbler/snippets/kickstart_post_install_kernel_options b/deploy/adapters/cobbler/snippets/kickstart_post_install_kernel_options new file mode 100644 index 00000000..1cff9c99 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_post_install_kernel_options @@ -0,0 +1,14 @@ +#if $getVar('kernel_options_post','') != '' +# Start post install kernel options update +if [ -f /etc/default/grub ]; then + TMP_GRUB=\$(gawk 'match(\$0,/^GRUB_CMDLINE_LINUX="([^"]+)"/,a) {printf("%s\n",a[1])}' /etc/default/grub) + sed -i '/^GRUB_CMDLINE_LINUX=/d' /etc/default/grub + echo "GRUB_CMDLINE_LINUX=\"\$TMP_GRUB $kernel_options_post\"" >> /etc/default/grub + grub2-mkconfig -o /boot/grub2/grub.cfg +else + /sbin/grubby --update-kernel=\$(/sbin/grubby --default-kernel) --args="$kernel_options_post" +fi +# End post install kernel options update +#end if + + diff --git a/deploy/adapters/cobbler/snippets/kickstart_post_install_network_config b/deploy/adapters/cobbler/snippets/kickstart_post_install_network_config new file mode 100644 index 00000000..2c089f92 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_post_install_network_config @@ -0,0 +1,603 @@ +# Start post_install_network_config generated code +#if $getVar('promisc_nics', '') != "" + #set promisc_interfaces = [promisc.strip() for promisc in $promisc_nics.split(',') if promisc.strip()] +#else + #set promisc_interfaces = [] +#end if + +#if $gateway != "" +# set the gateway in the network configuration file +grep -v GATEWAY /etc/sysconfig/network > /etc/sysconfig/network.cobbler +echo "GATEWAY=$gateway" >> /etc/sysconfig/network.cobbler +rm -f /etc/sysconfig/network +mv -f /etc/sysconfig/network.cobbler /etc/sysconfig/network +#end if + +cat << EOF > /sbin/ifup-local +#raw +#!/bin/bash +RC=0 +PROM=\$(egrep -i 'promisc' /etc/sysconfig/network-scripts/ifcfg-\$1 | awk -F"=" '{ print \$2 }') +if [[ "\$PROM" == "yes" ]]; then + ip link set dev \$1 promisc on + RC=\$? +fi +exit \$RC +#end raw +EOF +chmod +x /sbin/ifup-local + +#if $hostname != "" +# set the hostname in the network configuration file +grep -v HOSTNAME /etc/sysconfig/network > /etc/sysconfig/network.cobbler +echo "HOSTNAME=$hostname" >> /etc/sysconfig/network.cobbler +rm -f /etc/sysconfig/network +mv -f /etc/sysconfig/network.cobbler /etc/sysconfig/network +/bin/hostname $hostname +#end if + +$SNIPPET('kickstart_hosts') + +#set $num_ns_search = $len($name_servers_search) +#if $num_ns_search > 0 +sed -i -e "/^search /d" /etc/resolv.conf +echo -n "search " >>/etc/resolv.conf + #for $nameserversearch in $name_servers_search +echo -n "$nameserversearch " >>/etc/resolv.conf + #end for +echo "" >>/etc/resolv.conf +#end if + +#set $num_ns = $len($name_servers) +#if $num_ns > 0 +sed -i -e "/^nameserver /d" /etc/resolv.conf + #for $nameserver in $name_servers +echo "nameserver $nameserver" >>/etc/resolv.conf + #end for +#end if + +# get physical interfaces +declare -A physical_interfaces +set \$(ip -o link | grep -v lo | awk '{print \$2}' | sed 's/://') +let physical_interface_num=\$#; +let physical_interface_offset=0 +echo "network interface numbers: \$physical_interface_num" > /tmp/network_log +while [ \$physical_interface_offset -lt \$physical_interface_num ]; +do + physical_interfaces[\$1]=\$1 + let physical_interface_offset=\$physical_interface_offset+1 + shift 1 +done + +echo "interfaces: \${physical_interfaces[@]}" >> /tmp/network_log + +# map physical interface to mac address +declare -A physical_interface_mac +declare -A physical_mac_interface +for physical_interface in \${physical_interfaces[@]}; do + mac=\$(cat /sys/class/net/\${physical_interface}/address) + mac=\${mac^^} + physical_interface_mac[\${physical_interface}]=\$mac + physical_mac_interface[\$mac]=\${physical_interface} +done +for key in \${!physical_interface_mac[@]}; do + echo "interface to mac: $key => \${physical_interface_mac[\$key]}" >> /tmp/network_log +done +for key in \${!physical_mac_interface[@]}; do + echo "mac to interface: $key => \${physical_mac_interface[\$key]}" >> /tmp/network_log +done + +declare -A logical_interfaces +declare -A logical_interface_mapping +declare -A physical_interface_mapping + +#set ikeys = $interfaces.keys() +#set osversion = $getVar("os_version","") +#import re +#set $vlanpattern = $re.compile("([a-zA-Z0-9]+)[\.][0-9]+") +#set $subinterfacepattern = $re.compile("([a-zA-Z0-9]+)[:][0-9]+") +#set $numbondingdevs = 0 +#for $iname in $ikeys + #set $idata = $interfaces[$iname] + #set $mac = $idata.get("mac_address", "").upper() + #set $interface_type = $idata.get("interface_type", "").lower() + #if $interface_type in ("master","bond","bonded_bridge_slave") + #set $numbondingdevs += 1 + #end if + #if $interface_type in ("master","bond","bridge","bonded_bridge_slave") + #continue + #end if + #if $vlanpattern.match($iname) + #set $interface_matched = $vlanpattern.match($iname) + #set $interface_name = $interface_matched.group(1) +logical_interface=${interface_name} + #elif $subinterfacepattern.match($iname) + #set $interface_matched = $subinterfacepattern.match($iname) + #set $interface_name = $interface_matched.group(1) +logical_interface=${interface_name} + #else +logical_interface=$iname + #end if +logical_interfaces[\${logical_interface}]=\${logical_interface} + #if $mac != "" +physical_interface=\${physical_mac_interface[$mac]} +logical_interface_mapping[\${logical_interface}]=\${physical_interface} +if [ ! -z "\$physical_interface" ]; then + physical_interface_mapping[\${physical_interface}]=\${logical_interface} +fi + #else +if [ -z "\${logical_interface_mapping[\${logical_interface}]}" ]; then + logical_interface_mapping[\${logical_interface}]="" +fi + #end if +#end for + +echo "finish mapping logical interfaces in network config to physical interfaces" >> /tmp/network_log +for key in \${!logical_interface_mapping[@]}; do + echo "map logical interface to physical interface: \$key => \${logical_interface_mapping[\$key]}" >> /tmp/network_log +done + +for key in \${!physical_interface_mapping[@]}; do + echo "map physical interface to logical interface: \$key => \${physical_interface_mapping[\$key]}" >> /tmp/network_log +done + +# map unmapped logical interface to the same name physical interface +echo "mapping unmapped logical interfaces to the same name physical interfaces" >> /tmp/network_log +for logical_interface in \${!logical_interface_mapping[@]}; do + physical_interface=\${logical_interface_mapping[\${logical_interface}]} + if [ -z "\${physical_interface}" ]; then + # check if the same name physical interface is mapped + mapped_logical_interface=\${physical_interface_mapping[\${logical_interface}]} + if [ -z "\${mapped_logical_interface}" ]; then + # check if the same name physical interface exists + if [ ! -z "\${physical_interfaces[\${logical_interface}]}" ]; then + logical_interface_mapping[\${logical_interface}]=\${logical_interface} + physical_interface_mapping[\${logical_interface}]=\${logical_interface} + else + echo "ignore logical interface \${logical_interface} since the same name physical interface does not exist" >> /tmp/network_log + fi + else + echo "ignore logical interface \${logical_interface} since the same name physical interface is mapped by logical interface \${mapped_logical_interface}" >> /tmp/network_log + fi + else + echo "ignore logical interface \${logical_interface} since it is mapped to physical interface \${physical_interface}" >> /tmp/network_log + fi +done + +echo "finish mapping unmapped logical interfaces in network config to the same name physical interfaces" >> /tmp/network_log +for key in \${!logical_interface_mapping[@]}; do + echo "map logical interface to physical interface: \$key => \${logical_interface_mapping[\$key]}" >> /tmp/network_log +done + +for key in \${!physical_interface_mapping[@]}; do + echo "map physical interface to logical interface: \$key => \${physical_interface_mapping[\$key]}" >> /tmp/network_log +done + +declare -A unset_logical_interfaces +declare -A unset_physical_interfaces + +echo "get unset logical interfaces from \${logical_interfaces[@]}" >> /tmp/network_log +for logical_interface in \${logical_interfaces[@]}; do + physical_interface=\${logical_interface_mapping[\${logical_interface}]} + if [ -z "\${physical_interface}" ]; then + unset_logical_interfaces[\${logical_interface}]=\${logical_interface} + else + echo "ignore logical interface \${logical_interface} => \${physical_interface}" >> /tmp/network_log + fi +done +echo "got unset logical interfaces: \${unset_logical_interfaces[@]}" >> /tmp/network_log + +echo "get unset physical interfaces" >> /tmp/network_log +for physical_interface in \${physical_interfaces[@]}; do + logical_interface=\${physical_interface_mapping[\${physical_interface}]} + if [ -z "\${logical_interface}" ]; then + unset_physical_interfaces[\${physical_interface}]=\${physical_interface} + else + echo "ignore physical interface \${physical_interface} => \${logical_interface}" >> /tmp/network_log + fi +done +echo "got unset physical interfaces: \${unset_physical_interfaces[@]}" >> /tmp/network_log + +sorted_unset_physical_interfaces=(\$(printf '%s\n' \${unset_physical_interfaces[@]} | sort)) +echo "sorted unset physical interfaces: \${sorted_unset_physical_interfaces[@]}" >> /tmp/network_log +sorted_unset_logical_interfaces=(\$(printf '%s\n' \${unset_logical_interfaces[@]} | sort)) +echo "sorted unset logical interfaces: \${sorted_unset_logical_interfaces[@]}" >> /tmp/network_log + +# map unset logical interface to unset physical interface +while [ \${#sorted_unset_physical_interfaces[@]} -gt 0 -a \${#sorted_unset_logical_interfaces[@]} -gt 0 ]; do + physical_interface=\${sorted_unset_physical_interfaces[0]} + logical_interface=\${sorted_unset_logical_interfaces[0]} + echo "map unset logical interface \${logical_interface} to unset physical interface \${physical_interface}" >> /tmp/network_log + unset sorted_unset_physical_interfaces[0] + unset sorted_unset_logical_interfaces[0] + unset unset_physical_interfaces[\${physical_interface}] + unset unset_logical_interfaces[\${logical_interface}] + logical_interface_mapping[\${logical_interface}]=\${physical_interface} + physical_interface_mapping[\${physical_interface}]=\${logical_interface} +done + +echo "finish mapping unmapped logical interfaces in network config to unmapped physical interfaces" >> /tmp/network_log +for key in \${!logical_interface_mapping[@]}; do + echo "map logical interface to physical interface: \$key => \${logical_interface_mapping[\$key]}" >> /tmp/network_log +done + +for key in \${!physical_interface_mapping[@]}; do + echo "map physical interface to logical interface: \$key => \${physical_interface_mapping[\$key]}" >> /tmp/network_log +done + +echo "unset logical interfaces: \${unset_logical_interfaces[@]}" >> /tmp/network_log +echo "unset physical interfaces: \${unset_physical_interfaces[@]}" >> /tmp/network_log + +# map any unmapped logical interfaces +echo "map unmapped logical interfaces" >> /tmp/network_log +if [ \${#sorted_unset_logical_interfaces[@]} -gt 0 ]; then + declare -A available_logical_interfaces + # get all available logical interfaces which the same name physical interface is not used + for logical_interface in \${logical_interfaces[@]}; do + mapped_logical_interface=\${physical_interface_mapping[\${logical_interface}]} + if [ -z "\${mapped_logical_interface}" ]; then + available_logical_interfaces[\${logical_interface}]=\${logical_interface} + else + echo "ignore logical interface \${logical_interface} since the same name physical interface mapped to logical interface \${mapped_logical_interface}" >> /tmp/network_log + fi + done + + #first map logical interface to the same name physical interface if that physical interface name is not used + for logical_interface in \${sorted_unset_logical_interfaces[@]}; do + available_logical_interface=\${available_logical_interfaces[\${logical_interface}]} + if [ ! -z "\${available_logical_interface}" ]; then + unset unset_logical_interfaces[\${logical_interface}] + unset available_logical_interfaces[\${available_logical_interface}] + logical_interface_mapping[\${logical_interface}]=\${available_logical_interface} + physical_interface_mapping[\${available_logical_interface}]=\${logical_interface} + fi + done + + echo "finish mapping ramaining unmapped logical interfaces to the same name physical interface" >> /tmp/network_log + for key in \${!logical_interface_mapping[@]}; do + echo "map logical interface to physical interface: \$key => \${logical_interface_mapping[\$key]}" >> /tmp/network_log + done + + for key in \${!physical_interface_mapping[@]}; do + echo "map physical interface to logical interface: \$key => \${physical_interface_mapping[\$key]}" >> /tmp/network_log + done + + echo "unset logical interfaces: \${unset_logical_interfaces[@]}" >> /tmp/network_log + echo "unset physical interfaces: \${unset_physical_interfaces[@]}" >> /tmp/network_log + + # map remain unset logical interfaces to available logical interface names + sorted_unset_logical_interfaces=(\$(printf '%s\n' \${unset_logical_interfaces[@]} | sort)) + echo "sorted unset logical interfaces: \${sorted_unset_logical_interfaces[@]}" >> /tmp/network_log + sorted_available_logical_interfaces=(\$(printf '%s\n' \${available_logical_interfaces[@]} | sort)) + echo "sorted available logical interfaces: \${sorted_available_logical_interfaces[@]}" >> /tmp/network_log + while [ \${#sorted_unset_logical_interfaces[@]} -gt 0 -a \${#sorted_available_logical_interfaces[@]} -gt 0 ]; do + logical_interface=\${sorted_unset_logical_interfaces[0]} + available_logical_interface=\${sorted_available_logical_interfaces[0]} + echo "map logical interface \${logical_interface} to unused physical interface \${available_logical_interface}" >> /tmp/network_log + unset sorted_unset_logical_interfaces[0] + unset unset_logical_interfaces[\${logical_interface}] + unset sorted_available_logical_interfaces[0] + unset available_logical_interfaces[\${available_logical_interface}] + logical_interface_mapping[\${logical_interface}]=\${available_logical_interface} + physical_interface_mapping[\${available_logical_interface}]=\${logical_interface} + done +fi + +echo "finish mapping ramaining unmapped logical interfaces" >> /tmp/network_log +for key in \${!logical_interface_mapping[@]}; do + echo "map logical interface to physical interface: \$key => \${logical_interface_mapping[\$key]}" >> /tmp/network_log +done + +for key in \${!physical_interface_mapping[@]}; do + echo "map physical interface to logical interface: \$key => \${physical_interface_mapping[\$key]}" >> /tmp/network_log +done + +echo "unset logical interfaces: \${unset_logical_interfaces[@]}" >> /tmp/network_log +echo "unset physical interfaces: \${unset_physical_interfaces[@]}" >> /tmp/network_log + +# map any unmapped physical interfaces +echo "map unmapped physical interfaces" >> /tmp/network_log +if [ \${#sorted_unset_physical_interfaces[@]} -gt 0 ]; then + declare -A available_physical_interfaces + # get all available physical interfaces which the same name logical interface is not used + for physical_interface in \${physical_interfaces[@]}; do + mapped_physical_interface=\${logical_interface_mapping[\${physical_interface}]} + if [ -z "\${mapped_physical_interface}" ]; then + available_physical_interfaces[\${physical_interface}]=\${physical_interface} + else + echo "ignore physical interface \${physical_interface} since the same name logical interface mapped to physical interface \${mapped_physical_interface}" >> /tmp/network_log + fi + done + + #first map physical interface to the same name logical interface if that logical interface name is not used + for physical_interface in \${sorted_unset_physical_interfaces[@]}; do + available_physical_interface=\${available_physical_interfaces[\${physical_interface}]} + if [ ! -z "\${available_physical_interface}" ]; then + unset unset_physical_interfaces[\${physical_interface}] + unset available_physical_interfaces[\${available_physical_interface}] + logical_interface_mapping[\${available_physical_interface}]=\${physical_interface} + physical_interface_mapping[\${physical_interface}]=\${available_physical_interface} + fi + done + echo "finish mapping ramaining unmapped physical interfaces to the same name logical interface" >> /tmp/network_log + for key in \${!logical_interface_mapping[@]}; do + echo "map logical interface to physical interface: \$key => \${logical_interface_mapping[\$key]}" >> /tmp/network_log + done + + for key in \${!physical_interface_mapping[@]}; do + echo "map physical interface to logical interface: \$key => \${physical_interface_mapping[\$key]}" >> /tmp/network_log + done + + echo "unset logical interfaces: \${unset_logical_interfaces[@]}" >> /tmp/network_log + echo "unset physical interfaces: \${unset_physical_interfaces[@]}" >> /tmp/network_log + + # map remain unset physical interfaces to logical interface name as available physical interface names + sorted_unset_physical_interfaces=(\$(printf '%s\n' \${unset_physical_interfaces[@]} | sort)) + echo "sorted unset physical interfaces: \${sorted_unset_physical_interfaces[@]}" >> /tmp/network_log + sorted_available_physical_interfaces=(\$(printf '%s\n' \${available_physical_interfaces[@]} | sort)) + echo "sorted available physical interfaces: \${sorted_available_physical_interfaces[@]}" >> /tmp/network_log + while [ \${#sorted_unset_physical_interfaces[@]} -gt 0 -a \${#sorted_available_physical_interfaces[@]} -gt 0 ]; do + physical_interface=\${sorted_unset_physical_interfaces[0]} + available_physical_interface=\${sorted_available_physical_interfaces[0]} + echo "map physical interface \${physical_interface} to unused logical interface \${available_physical_interface}" >> /tmp/network_log + unset sorted_unset_physical_interfaces[0] + unset unset_physical_interfaces[\${physical_interface}] + unset sorted_available_physical_interfaces[0] + unset available_physical_interfaces[\${available_physical_interface}] + physical_interface_mapping[\${available_physical_interface}]=\${physical_interface} + logical_interface_mapping[\${physical_interface}]=\${available_physical_interface} + done +fi + +echo "finish mapping ramaining unmapped physical interfaces" >> /tmp/network_log +for key in \${!logical_interface_mapping[@]}; do + echo "map logical interface to physical interface: \$key => \${logical_interface_mapping[\$key]}" >> /tmp/network_log +done + +for key in \${!physical_interface_mapping[@]}; do + echo "map physical interface to logical interface: \$key => \${physical_interface_mapping[\$key]}" >> /tmp/network_log +done + +echo "unset logical interfaces: \${unset_logical_interfaces[@]}" >> /tmp/network_log +echo "unset physical interfaces: \${unset_physical_interfaces[@]}" >> /tmp/network_log + +for key in \${!logical_interface_mapping[@]}; do + echo "map logical interface to physical interface: \$key => \${logical_interface_mapping[\$key]}" >> /tmp/network_log +done + +for key in \${!physical_interface_mapping[@]}; do + echo "map physical interface to logical interface: \$key => \${physical_interface_mapping[\$key]}" >> /tmp/network_log +done + +# generate udev network rules +#if $osversion == "rhel7" +udev_network_rule_filename=80-net-name-slot.rules +#else +udev_network_rule_filename=70-persistent-net.rules +#end if +for key in \${!logical_interface_mapping[@]}; do + physical_interface=\${logical_interface_mapping[\$key]} + if [ ! -z "\${physical_interface}" ]; then + physical_mac=\${physical_interface_mac[\${physical_interface}]} + else + physical_mac="" + fi + if [ ! -z "\${physical_mac}" ]; then + physical_mac=\${physical_mac,,} + echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"\${physical_mac}\", ATTR{type}==\"1\", KERNEL==\"eth*\", NAME=\"\$key\"" >> /etc/udev/rules.d/\${udev_network_rule_filename}.new + echo "add network interface \$key mac \$physical_mac into udev rules" >> /tmp/network_log + else + echo "network interface \$key does not find mac address to add to udev rules" >> /tmp/network_log + fi +done + +#if $numbondingdevs > 0 +# we have bonded interfaces, so set max_bonds +if [ -f "/etc/modprobe.conf" ]; then + echo "options bonding max_bonds=$numbondingdevs" >> /etc/modprobe.conf +fi +#end if + +# create a working directory for interface scripts +mkdir /etc/sysconfig/network-scripts/cobbler +cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/cobbler/ + +declare -A used_logical_interfaces + +#set $nameserver_set = 0 + +#for $iname in $ikeys +# Start configuration for $iname + ## create lots of variables to use later + #set $idata = $interfaces[$iname] + #set $mac = $idata.get("mac_address", "").upper() + #set $mtu = $idata.get("mtu", "") + #set $static = $idata.get("static", "") + #set $ip = $idata.get("ip_address", "") + #set $netmask = $idata.get("netmask", "") + #set $if_gateway = $idata.get("if_gateway", "") + #set $static_routes = $idata.get("static_routes", "") + #set $iface_type = $idata.get("interface_type", "").lower() + #set $iface_master = $idata.get("interface_master", "") + #set $bonding_opts = $idata.get("bonding_opts", "") + #set $bridge_opts = $idata.get("bridge_opts", "").split(" ") + #set $devfile = "/etc/sysconfig/network-scripts/cobbler/ifcfg-" + $iname + #set $routesfile = "/etc/sysconfig/network-scripts/cobbler/route-" + $iname + +used_logical_interfaces[$iname]=$iname + + #if $iface_type in ("slave","bond_slave","bridge_slave","bonded_bridge_slave") + #set $static = 1 + #end if +echo "DEVICE=$iname" > $devfile +echo "ONBOOT=yes" >> $devfile + + #if $iface_type not in ("master","bond","bridge","bonded_bridge_slave") + #if $vlanpattern.match($iname) + #pass + #else + #set $interface_matched = $subinterfacepattern.match($iname) + #if $interface_matched + #set $interface_name = $interface_matched.group(1) +logical_interface=$interface_name + #else +logical_interface=$iname + #end if +physical_interface=\${logical_interface_mapping[\$logical_interface]} +if [ ! -z "\$physical_interface" ]; then + physical_mac=\${physical_interface_mac[\$physical_interface]} +fi +if [ ! -z "\$physical_mac" ]; then + echo "HWADDR=\$physical_mac" >> $devfile +fi + #if not $subinterfacepattern.match($iname) +if [ -f "/etc/modprobe.conf" ] && [ ! -z "\${physical_interface}" ]; then + grep \$physical_interface /etc/modprobe.conf | sed "s/\${physical_interface}/$iname/" >> /etc/modprobe.conf.cobbler + grep -v \$physical_interface /etc/modprobe.conf >> /etc/modprobe.conf.new + rm -f /etc/modprobe.conf + mv -f /etc/modprobe.conf.new /etc/modprobe.conf +fi + #end if + #end if + #end if + + #if $iface_type in ("master","bond","bonded_bridge_slave") + ## if this is a bonded interface, configure it in modprobe.conf +if [ -f "/etc/modprobe.conf" ]; then + #if $osversion == "rhel4" + echo "install $iname /sbin/modprobe bonding -o $iname $bonding_opts" >> /etc/modprobe.conf.cobbler + #else + echo "alias $iname bonding" >> /etc/modprobe.conf.cobbler + #end if +fi + #if $bonding_opts != "" +cat >> $devfile << EOF +BONDING_OPTS="$bonding_opts" +EOF + #end if + #elif $iface_type in ("slave","bond_slave") and $iface_master != "" +echo "SLAVE=yes" >> $devfile +echo "MASTER=$iface_master" >> $devfile +echo "HOTPLUG=no" >> $devfile + #end if + + #if $iface_type == "bridge" +echo "TYPE=Bridge" >> $devfile + #for $bridge_opt in $bridge_opts + #if $bridge_opt.strip() != "" +echo "$bridge_opt" >> $devfile + #end if + #end for + #elif $iface_type in ["bridge_slave", "bonded_bridge_slave"] and $iface_master != "" +echo "BRIDGE=$iface_master" >> $devfile +echo "HOTPLUG=no" >> $devfile + #end if + + #if $iface_type != "bridge" +echo "TYPE=Ethernet" >> $devfile + #end if + + #if $static +echo "BOOTPROTO=static" >> $devfile + #if $iname in $promisc_interfaces +echo "PROMISC=yes" >> $devfile + #elif $ip != "" +echo "IPADDR=$ip" >> $devfile + #if $if_gateway != "" +echo "GATEWAY=$if_gateway" >> $devfile + #end if + + #if $netmask == "" + ## Default to 255.255.255.0? + #set $netmask = "255.255.255.0" + #end if +echo "NETMASK=$netmask" >> $devfile + #end if + #else +echo "BOOTPROTO=dhcp" >> $devfile + #if $len($name_servers) > 0 +echo "PEERDNS=no" >> $devfile + #end if + #end if + + #if $vlanpattern.match($iname) +echo "VLAN=yes" >> $devfile +echo "ONPARENT=yes" >> $devfile + #elif $subinterfacepattern.match($iname) +echo "ONPARENT=yes" >> $devfile + #end if + + #if $mtu != "" +echo "MTU=$mtu" >> $devfile + #end if + + #if not $nameserver_set + #if $iface_type not in ("slave","bond_slave","bridge_slave","bonded_bridge_slave") + #set $nct = 0 + #for $nameserver in $name_servers + #set $nct = $nct + 1 +echo "DNS$nct=$nameserver" >> $devfile + #end for + #set $nameserver_set = 1 + #end if + #end if + + #for $route in $static_routes + #set routepattern = $re.compile("[0-9/.]+:[0-9.]+") + #if $routepattern.match($route) + #set $routebits = $route.split(":") + #set [$network, $router] = $route.split(":") +echo "$network via $router" >> $routesfile + #else +# Warning: invalid route "$route" + #end if + #end for +#end for + +for logical_interface in \${!logical_interface_mapping[@]}; do + if [ ! -z "\${used_logical_interfaces[\${logical_interface}]}" ]; then + # ignore logical interface that is already generated in above + continue + fi + physical_interface=\${logical_interface_mapping[\${logical_interface}]} + if [ ! -z "\${physical_interface}" ]; then + devfile="/etc/sysconfig/network-scripts/cobbler/ifcfg-"\${logical_interface} + mac=\${physical_interface_mac[\${physical_interface}]} + echo "DEVICE=\${logical_interface}" > \$devfile + echo "ONBOOT=yes" >> \$devfile + echo "BOOTPROTO=static" >> \$devfile + if [ ! -z "\$mac" ]; then + echo "HWADDR=\$mac" >> \$devfile + fi + echo "TYPE=Ethernet" >> \$devfile + if [ -f "/etc/modprobe.conf" ] && [ ! -z "\${physical_interface}" ]; then + grep \${physical_interface} /etc/modprobe.conf | sed "s/\${physical_interface}/\${logical_interface}/" >> /etc/modprobe.conf.cobbler + grep -v \${physical_interface} /etc/modprobe.conf >> /etc/modprobe.conf.new + rm -f /etc/modprobe.conf + mv -f /etc/modprobe.conf.new /etc/modprobe.conf + fi + fi +done + +## Disable all eth interfaces by default before overwriting +## the old files with the new ones in the working directory +## This stops unneccesary (and time consuming) DHCP queries +## during the network initialization +sed -i 's/ONBOOT=yes/ONBOOT=no/g' /etc/sysconfig/network-scripts/ifcfg-* + +## Move all staged files to their final location +rm -f /etc/sysconfig/network-scripts/ifcfg-* +mv -f /etc/sysconfig/network-scripts/cobbler/* /etc/sysconfig/network-scripts/ +rm -r /etc/sysconfig/network-scripts/cobbler +if [ -f "/etc/modprobe.conf" ]; then + cat /etc/modprobe.conf.cobbler >> /etc/modprobe.conf + rm -f /etc/modprobe.conf.cobbler +fi +if [ -f "/etc/udev/rules.d/\${udev_network_rule_filename}" ]; then + rm -f /etc/udev/rules.d/\${udev_network_rule_filename} +fi + +if [ -f "/etc/udev/rules.d/\${udev_network_rule_filename}.new" ]; then + mv -f /etc/udev/rules.d/\${udev_network_rule_filename}.new /etc/udev/rules.d/\${udev_network_rule_filename} +fi +# End post_install_network_config generated code diff --git a/deploy/adapters/cobbler/snippets/kickstart_post_log b/deploy/adapters/cobbler/snippets/kickstart_post_log new file mode 100644 index 00000000..d1df0265 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_post_log @@ -0,0 +1,2 @@ +set -x -v +exec 1>/root/ks-post.log 2>&1 diff --git a/deploy/adapters/cobbler/snippets/kickstart_post_partition_disks b/deploy/adapters/cobbler/snippets/kickstart_post_partition_disks new file mode 100644 index 00000000..ded9e961 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_post_partition_disks @@ -0,0 +1,33 @@ +partitions=\$(pvs --noheadings --separator :| cut -d: -f1,2) +vg_remove=0 +remove_partitions='' +echo "partitions \$partitions" >> /tmp/post_partition.log + +for partition in \$partitions; do + partition_vg=(\${partition//:/ }) + partition=\${partition_vg[0]} + vg=\${partition_vg[1]} + if [[ "\$vg" == "reserved" ]]; then + echo "prepare remove partition \$partition" >> /tmp/post_partition.log + remove_partitions="\${remove_partitions} \$partition" + vg_remove=1 + else + echo "ignore \$vg since it is not reserved" >> /tmp/post_partition.log + fi +done + +if [[ "\${vg_remove}" != "0" ]]; then + vgremove -f reserved +fi + +for remove_partition in \${remove_partitions}; do + echo "remove partition \${remove_partition}" >> /tmp/post_partition.log + pvremove -ff -y \${remove_partition} + set \$(echo \${remove_partition} | sed -e 's/^\(.*\)\([0-9]\+\)\$/\1 \2/g') + partition_disk=\$1 + partition_number=\$2 + if [ -z "\${partition_disk}" -o -z "\${partition_number}" ]; then + continue + fi + parted \${partition_disk} --script -- rm \${partition_number} +done diff --git a/deploy/adapters/cobbler/snippets/kickstart_pre_anamon b/deploy/adapters/cobbler/snippets/kickstart_pre_anamon new file mode 100644 index 00000000..70b84690 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_pre_anamon @@ -0,0 +1,9 @@ +#if $str($getVar('anamon_enabled','')) == "1" + #if $getVar("compass_server", "") != "" +wget -O /tmp/anamon "http://$compass_server:$http_port/cobbler/aux/anamon" +python /tmp/anamon --name "$name" --server "$compass_server" --port "$http_port" + #else +wget -O /tmp/anamon "http://$server:$http_port/cobbler/aux/anamon" +python /tmp/anamon --name "$name" --server "$server" --port "$http_port" + #end if +#end if diff --git a/deploy/adapters/cobbler/snippets/kickstart_pre_install_network_config b/deploy/adapters/cobbler/snippets/kickstart_pre_install_network_config new file mode 100644 index 00000000..34d670f8 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_pre_install_network_config @@ -0,0 +1,99 @@ +#if $getVar("system_name","") != "" +# Start pre_install_network_config generated code + #if $getVar('management_nic', '') == "" + #set $management_nic='' + #end if +#raw +# generic functions to be used later for discovering NICs +mac_exists() { + if which ip 2>/dev/null >/dev/null; then + ip -o link | grep -i "$1" 2>/dev/null >/dev/null + return $? + elif which esxcfg-nics 2>/dev/null >/dev/null; then + esxcfg-nics -l | grep -i "$1" 2>/dev/null >/dev/null + return $? + else + ifconfig -a | grep -i "$1" 2>/dev/null >/dev/null + return $? + fi +} +get_ifname() { + if which ip 2>/dev/null >/dev/null; then + IFNAME=$(ip -o link | grep -i "$1" | sed -e 's/^[0-9]*: //' -e 's/:.*//') + elif which esxcfg-nics 2>/dev/null >/dev/null; then + IFNAME=$(esxcfg-nics -l | grep -i "$1" | cut -d " " -f 1) + else + IFNAME=$(ifconfig -a | grep -i "$1" | cut -d " " -f 1) + if [ -z "$IFNAME" ]; then + IFNAME=$(ifconfig -a | grep -i -B 2 "$1" | sed -n '/flags/s/:.*$//p') + fi + fi +} +#end raw + #set ikeys = $interfaces.keys() + #for $iname in $ikeys + #set $idata = $interfaces[$iname] + #set $management = $idata["management"] + #if $management + #set $management_nic = $iname + #end if + #end for + #for $iname in $ikeys + #set $idata = $interfaces[$iname] + #set $mac = $idata["mac_address"] + #set $static = $idata["static"] + #set $management = $idata["management"] + #set $ip = $idata["ip_address"] + #set $netmask = $idata["netmask"] + #set $iface_type = $idata["interface_type"] + #set $iface_master = $idata["interface_master"] + #set $static_routes = $idata["static_routes"] + #if $management_nic != '' + #if $iname != $management_nic + #continue + #end if + #end if + #if $mac == "" + #continue + #end if +# Configuring $iname ($mac) +if mac_exists $mac +then + get_ifname $mac + #if $static and $ip != "" + #if $netmask == "" + ## Netmask not provided, default to /24. + #set $netmask = "255.255.255.0" + #end if + #set $netinfo = "--bootproto=static --ip=%s --netmask=%s" % ($ip, $netmask) + #if $gateway != "" + #set $netinfo = "%s --gateway=%s" % ($netinfo, $gateway) + #end if + #if $len($name_servers) > 0 + #set $netinfo = "%s --nameserver=%s" % ($netinfo, $name_servers[0]) + #end if + #else if not $static + #set $netinfo = "--bootproto=dhcp" + #else + ## Skip this interface, it's set as static, but without + ## networking info. +# Skipping (no configuration)... + #continue + #end if + #if $hostname != "" + #set $netinfo = "%s --hostname=%s" % ($netinfo, $hostname) + #end if + echo "network --device=\$IFNAME $netinfo" >> /tmp/pre_install_network_config + #for $route in $static_routes + #if $routepattern.match($route) + #set $routebits = $route.split(":") + #set [$network, $router] = $route.split(":") + ip route add $network via $router dev \$IFNAME + #else + # Warning: invalid route "$route" + #end if + #end for +fi + #end for +# End pre_install_network_config generated code +#end if diff --git a/deploy/adapters/cobbler/snippets/kickstart_pre_log b/deploy/adapters/cobbler/snippets/kickstart_pre_log new file mode 100644 index 00000000..fe71c592 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_pre_log @@ -0,0 +1,12 @@ +set -x -v +exec 1>/tmp/ks-pre.log 2>&1 + +# Once root's homedir is there, copy over the log. +while : ; do + sleep 10 + if [ -d /mnt/sysimage/root ]; then + cp /tmp/ks-pre.log /mnt/sysimage/root/ + logger "Copied %pre section log to system" + break + fi +done & diff --git a/deploy/adapters/cobbler/snippets/kickstart_pre_partition_disks b/deploy/adapters/cobbler/snippets/kickstart_pre_partition_disks new file mode 100644 index 00000000..6b1c9ce3 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_pre_partition_disks @@ -0,0 +1,542 @@ +#set hostname=$getVar('hostname',None) +#set partition = $getVar('partition', None) +#set partition_size = $getVar('partition_size', None) +#set partition_maxsize = $getVar('partition_maxsize', None) +#set disk_reserve_size = $getVar('disk_reserve_size', None) +#set disk_max_size = $getVar('disk_max_size', None) +#set default_disk_reserve_size = $getVar('default_disk_reserve_size', '0') +#set default_disk_max_size = $getVar('default_disk_max_size', '0') + +#if $hostname == None +#set $vgname = "VolGroup00" +#else +#set $vgname = $hostname.split('.')[0] +#end if + +declare -A disk_mapping +declare -A disk_path_mapping +declare -A ignore_disk_mapping +declare -A ignore_disk_path_mapping +if [ -e /dev/disk/by-path ]; then + set \$(ls -s -l /dev/disk/by-path | awk '{print \$10, \$12}') + let disk_mapping_nums=\$#/2 + let disk_mapping_offset=0 + echo "disk_mapping_nums: \$disk_mapping_nums" > /tmp/log + echo "disk_mapping: \$*" >> /tmp/log + while [ \$disk_mapping_offset -lt \$disk_mapping_nums ]; do + let found_disk_type=0 +#if $getVar('disk_type_only','') != "" + if expr match "\$1" ".*-${disk_type_only}-.*"; then + let found_disk_type=1 + fi +#else + let found_disk_type=1 +#end if + path_name=\$(basename \$1) + disk_name=\$(basename \$2) + let disk_mapping_offset=\$disk_mapping_offset+1 + shift 2 + + if [ \$found_disk_type -gt 0 ]; then + disk_mapping[\${disk_name}]="/dev/disk/by-path/\${path_name}" + disk_mapping[\${path_name}]="/dev/disk/by-path/\${path_name}" + disk_path_mapping[\${disk_name}]="/dev/\${disk_name}" + disk_path_mapping[\${path_name}]="/dev/\${disk_name}" + else + ignore_disk_mapping[\${disk_name}]="/dev/disk/by-path/\${path_name}" + ignore_disk_mapping[\${path_name}]="/dev/disk/by-path/\${path_name}" + ignore_disk_path_mapping[\${disk_name}]="/dev/\${disk_name}" + ignore_disk_path_mapping[\${path_name}]="/dev/\${disk_name}" + fi + done + + for key in \${!disk_mapping[@]}; do + echo "disk mapping \$key => \${disk_mapping[\$key]}" >> /tmp/log + done + + for key in \${!disk_path_mapping[@]}; do + echo "disk path mapping \$key => \${disk_path_mapping[\$key]}" >> /tmp/log + done +else + echo "/dev/disk/by-path does not exist" >> /tmp/log +fi + +declare -A partition_disks +declare -A disks +set \$(list-harddrives) +let disk_nums=\$#/2 +let disk_offset=0 +let found_disk_offset=0 +while [ \$disk_offset -lt \$disk_nums ]; do + disk=\$1 + disk_name=\$(basename \$disk) + let offset=\${disk_offset} + let disk_offset=\${disk_offset}+1 + shift 2 + if [[ x"\${disk_mapping[\${disk_name}]}" == x"" ]]; then + if [[ x"\${ignore_disk_mapping[\${disk_name}]}" != x"" ]]; then + echo "ignore disk \${disk_name} since it is not in disk_mapping" >> /tmp/log + continue + else + echo "did not found disk path for \$disk but it is not ignored" >> /tmp/log + disk_mapping[\${disk_name}]="/dev/\${disk_name}" + disk_path_mapping[\${disk_name}]="/dev/\${disk_name}" + fi + fi + let found_disk=0 + +#if $getVar('partition_by_path', '0') != "0" + disk=\${disk_mapping[\${disk_name}]} +#end if + disks[\$offset]=\$disk + +#if $getVar('partitions_only', '') != "" + #for $partition_only in $partitions_only.split(',') + #if not $partition_only + #continue + #end if + if expr match "\${disk_name}" "$partition_only"; then + let found_disk=1 + else + echo "disk \${disk_name} does not match $partition_only" >> /tmp/log + fi + #end for +#else + let found_disk=1 +#end if + + if [ \${found_disk} -gt 0 ]; then + echo "add disk \${disk_name} in partitioning list" >> /tmp/log + partition_disks[\${found_disk_offset}]=\$disk + let found_disk_offset=\${found_disk_offset}+1 + fi +done +echo "partition disks \${partition_disks[@]}" >> /tmp/log +echo "disks \${disks[@]}" >> /tmp/log + +#if $getVar('sort_disks', '0') != "0" +sorted_disks=(\$(printf '%s\n' \${partition_disks[@]} | sort)) +#else +sorted_disks=(\${partition_disks[@]}) +#end if +echo "sorted disks \${sorted_disks[@]}" >> /tmp/log + +#if $getVar('start_from_disk', '') != "" + #set $start_from_disk = $int($start_from_disk) + #if $start_from_disk > 0 + #set $disk_start_offset = $start_from_disk - 1 + #else + #set $disk_start_offset = 0 + #end if +set \${sorted_disks[@]} +shift $disk_start_offset +unset sorted_disks +sorted_disks=(\$@) +echo "sorted disks begin from the $start_from_disk: \${sorted_disks[@]}" >> /tmp/log +#end if + +#if $getVar('disk_num', '') != "" +set \${sorted_disks[@]} +unset sorted_disks +sorted_disks=(\$(printf '%s\n' \$@ | head -n${disk_num})) +echo "sorted disks for $disk_num disks: \${sorted_disks[@]}" >> /tmp/log +#end if + +first_disk="" +for disk in \${sorted_disks}; do + if [ -z "\${first_disk}" ]; then + first_disk=\${disk} + break + fi +done +echo "first disk \${first_disk}" >> /tmp/log + +let disk_nums=\${#sorted_disks[@]} +sorted_disks_str="" +for disk in \${sorted_disks[@]}; do + if [ -z "${sorted_disks_str}" ]; then + sorted_disks_str="\${disk}" + else + sorted_disks_str="\${sorted_disks_str},\${disk}" + fi +done + +echo "clearpart --all --initlabel" > /tmp/part-include + +declare -A remove_disks +let remove_disk_offset=0 +#if $getVar('keep_old_partitions', '0') != "0" +for disk in \${sorted_disks[@]}; do + dd if=/dev/zero of=\${disk} bs=512 count=1 + remove_disks[\${remove_disk_offset}]=\$disk + let remove_disk_offset=\${remove_disk_offset}+1 +done +echo "only partition \$sorted_disks_str" >> /tmp/log +echo "ignoredisk --only-use=\$sorted_disks_str" >> /tmp/part-include +#else +for disk in \${disks[@]}; do + dd if=/dev/zero of=\${disk} bs=512 count=1 + remove_disks[\${remove_disk_offset}]=\$disk + let remove_disk_offset=\${remove_disk_offset}+1 +done +#end if +echo "remove disks \${remove_disks[@]}" >> /tmp/log + +disk_partitions=\$(pvs --noheadings --separator :| cut -d: -f1) +remove_partitions="" +remove_vgs="" +for disk_partition in \${disk_partitions}; do + vg=\$(pvs --noheadings --separator : \${disk_partition} | cut -d: -f2) + remove_vg="" + remove_partition="" + for remove_disk in \${remove_disks[@]}; do +#if $getVar('partition_by_path', '0') != "0" + path_name=\$(basename \${remove_disk}) + remove_disk_path=\${remove_disk} + remove_disk=\${disk_path_mapping[\${path_name}]} +#else + disk_name=\$(basename \${remove_disk}) + remove_disk_path=\${disk_mapping[\${disk_name}]} +#end if + if [ -z "\${remove_disk}" ]; then + continue + fi + if [ -z "\${remove_disk_path}" ]; then + continue + fi + if expr match "\${disk_partition}" "\${remove_disk_path}.*"; then + remove_vg="\$vg" + remove_partition="\${disk_partition}" + else + echo "partition \${disk_partition} does not match \${remove_disk_path}.*" >> /tmp/log + fi + if expr match "\${disk_partition}" "\${remove_disk}.*"; then + remove_vg="\$vg" + remove_partition="\${disk_partition}" + else + echo "partition \${disk_partition} does not match \${remove_disk}.*" >> /tmp/log + fi + if [[ "\$vg" == "$vgname" ]]; then + remove_vg="\$vg" + remove_partition="\${disk_partition}" + fi + done + if [ ! -z "\${remove_vg}" ]; then + if [ -z "\${remove_vgs}" ]; then + remove_vgs="\${remove_vg}" + else + vg_removed=0 + for vg in \${remove_vgs}; do + if [[ "\$vg" == "\${remove_vg}" ]]; then + vg_removed=1 + fi + done + if [ \${vg_removed} -eq 0 ]; then + remove_vgs="\${remove_vgs} \${remove_vg}" + fi + fi + fi + if [ ! -z "\${remove_partition}" ]; then + if [ -z "\${remove_partitions}" ]; then + remove_partitions="\${remove_partition}" + else + pv_removed=0 + for pv in ${remove_partitions}; do + if [[ "\$pv" == "\${remove_partition}" ]]; then + pv_removed=1 + fi + done + if [ \${pv_removed} -eq 0 ]; then + remove_partitions="\${remove_partitions} \${remove_partition}" + fi + fi + fi +done + +echo "remove vgs \${remove_vgs}" >> /tmp/log +for remove_vg in \${remove_vgs}; do + vgremove -f \${remove_vg} +done + +echo "remove partitions \${remove_partitions} from \${remove_vgs}" >> /tmp/log +for remove_partition in \${remove_partitions}; do + pvremove -ff -y \${remove_partition} +done + +declare -A reserve_disks_size +#if $disk_reserve_size != None + #set disk_sizes = [disk_size.strip() for disk_size in $disk_reserve_size.split(';') if disk_size.strip()] + #for disk_and_size in $disk_sizes + #set disk_name, size = $disk_and_size.split(' ', 1) + #set disk_name = $disk_name.strip() + #if $size.endswith('K') + #set disk_size = $int($size[:-1]) / 1000 + #elif size.endswith('M') + #set disk_size = $int($size[:-1]) + #elif $size.endswith('G') + #set disk_size = $int($size[:-1]) * 1000 + #elif $size.endswith('T') + #set disk_size = $int($size[:-1]) * 1000000 + #else + #set disk_size = $int($size) + #end if +reserve_disks_size[${disk_name}]=${disk_size} + #end for +#end if + +#if $default_disk_reserve_size.endswith('K') + #set disk_size = $int($default_disk_reserve_size[:-1]) / 1000 +#elif $default_disk_reserve_size.endswith('M') + #set disk_size = $int($default_disk_reserve_size[:-1]) +#elif $default_disk_reserve_size.endswith('G') + #set disk_size = $int($default_disk_reserve_size[:-1]) * 1000 +#elif $default_disk_reserve_size.endswith('T') + #set disk_size = $int($default_disk_reserve_size[:-1]) * 1000000 +#else + #set disk_size = $int($default_disk_reserve_size) +#end if +default_reserve_disk_size=${disk_size} + +declare -A max_disks_size +#if $disk_max_size != None + #set disk_sizes = [disk_size.strip() for disk_size in $disk_max_size.split(';') if disk_size.strip()] + #for disk_and_size in $disk_sizes + #set disk_name, size = $disk_and_size.split(' ', 1) + #set disk_name = $disk_name.strip() + #if $size.endswith('K') + #set disk_size = $int($size[:-1]) / 1000 + #elif $size.endswith('M') + #set disk_size = $int($size[:-1]) + #elif $size.endswith('G') + #set disk_size = $int($size[:-1]) * 1000 + #elif $size.endswith('T') + #set disk_size = $int($size[:-1]) * 1000000 + #else + #set disk_size = $int($size) + #end if +max_disks_size[${disk_name}]=${disk_size} + #end for +#end if + +#if $default_disk_max_size.endswith('K') + #set disk_size = $int($default_disk_max_size[:-1]) / 1000 +#elif $default_disk_max_size.endswith('M') + #set disk_size = $int($default_disk_max_size[:-1]) +#elif $default_disk_max_size.endswith('G') + #set disk_size = $int($default_disk_max_size[:-1]) * 1000 +#elif $default_disk_max_size.endswith('T') + #set disk_size = $int($default_disk_max_size[:-1]) * 1000000 +#else + #set disk_size = $int($default_disk_max_size) +#end if +default_max_disk_size=${disk_size} + +declare -A partitions_percentage +declare -A partitions_name +declare -A partitions_size +declare -A partitions_maxsize + +#if $partition != None + #set vol_sizes = [part.strip() for part in $partition.split(';') if part.strip()] + #for vol_and_size in $vol_sizes + #set vol, vol_size = $vol_and_size.split(' ', 1) + #set vol = $vol.strip() + #if $vol == '/' + #set volname = 'root' + #elif $vol == 'swap' + #set volname = 'swap' + #elif $vol.startswith('/') + #set volname = $vol[1:].replace('/', '_') + #else + #set volname = '' +# $vol is not starts with / + #continue + #end if +partitions_name[$vol]=$volname + #set vol_size = $vol_size.strip() + #if $vol_size.endswith('%'): + #set vol_percent = $vol_size[:-1] +partitions_percentage[$vol]=${vol_percent} + #else + #if $vol_size.endswith('K') + #set vol_min_size = $int($vol_size[:-1]) / 1000 + #elif $vol_size.endswith('M') + #set vol_min_size = $int($vol_size[:-1]) + #elif $vol_size.endswith('G') + #set vol_min_size = $int($vol_size[:-1]) * 1000 + #elif $vol_size.endswith('T') + #set vol_min_size = $int($vol_size[:-1]) * 1000000 + #else + #set vol_min_size = $int($vol_size) + #end if +partitions_size[$vol]=${vol_min_size} + #end if + #end for +#end if + +#if $partition_size != None + #set vol_sizes = [part.strip() for part in $partition_size.split(';') if part.strip()] + #for vol_and_size in $vol_sizes + #set vol, vol_size = $vol_and_size.split(' ', 1) + #set vol = $vol.strip() + #if $vol_size.endswith('K') + #set vol_min_size = $int($vol_size[:-1]) / 1000 + #elif $vol_size.endswith('M') + #set vol_min_size = $int($vol_size[:-1]) + #elif $vol_size.endswith('G') + #set vol_min_size = $int($vol_size[:-1]) * 1000 + #elif $vol_size.endswith('T') + #set vol_min_size = $int($vol_size[:-1]) * 1000000 + #else + #set vol_min_size = $int($vol_size) + #end if +partitions_size[$vol]=${vol_min_size} + #end for +#end if + +#if $partition_maxsize != None + #set vol_sizes = [part.strip() for part in $partition_maxsize.split(';') if part.strip()] + #for vol_and_size in $vol_sizes + #set vol, vol_size = $vol_and_size.split(' ', 1) + #set vol = $vol.strip() + #if $vol_size.endswith('K') + #set vol_max_size = $int($vol_size[:-1]) / 1000 + #elif $vol_size.endswith('M') + #set vol_max_size = $int($vol_size[:-1]) + #elif $vol_size.endswith('G') + #set vol_max_size = $int($vol_size[:-1]) * 1000 + #elif $vol_size.endswith('T') + #set vol_max_size = $int($vol_size[:-1]) * 1000000 + #else + #set vol_max_size = $int($vol_size) + #end if +partitions_maxsize[$vol]=${vol_max_size} + #end for +#end if + +default_partition=$getVar('default_partition', '/') +partition_fstype=$getVar('partition_fstype', 'ext3') + +for key in \${!partitions_name[@]}; do + echo "partition names \$key => \${partitions_name[\$key]}" >> /tmp/log +done + +for key in \${!partitions_percentage[@]}; do +echo "partition percentage \$key => \${partitions_percentage[\$key]}" >> /tmp/log +done + +for key in \${!partitions_size[@]}; do + echo "partition min size \$key => \${partitions_size[\$key]}" >> /tmp/log +done + +echo "default partition \${default_partition}" >> /tmp/log +echo "partition fstype \${partition_fstype}" >> /tmp/log + +for key in \${!partitions_maxsize[@]}; do + echo "partition max size \$key => \${partitions_maxsize[\$key]}" >> /tmp/log +done + +partition_size=\${partitions_size[/boot]:-500} +unset \${partitions_name[/boot]} +#if $os_version == "rhel7" +echo "bootloader --location=mbr --boot-drive=\${sorted_disks[0]}" >> /tmp/part-include +#else +echo "bootloader --location=mbr --driveorder=\${sorted_disks[0]}" >> /tmp/part-include +#end if +echo "zerombr" >> /tmp/part-include +echo "part biosboot --fstype=biosboot --size=1 --ondisk=\${sorted_disks[0]} --asprimary" >> /tmp/part-include +echo "part /boot --fstype=\${partition_fstype} --size=\${partition_size} --ondisk=\${sorted_disks[0]} --asprimary" >> /tmp/part-include +partition_size=\${partitions_size[swap]:-0} +if [[ "\$partition_size" == "0" ]]; then + partition_maxsize=\${partitions_maxsize[swap]:-128000} + echo "part swap --recommended --maxsize=\${partition_maxsize} --ondisk=\${sorted_disks[0]} --asprimary" >> /tmp/part-include +else + echo "part swap --size=\${partition_size} --ondisk=\${sorted_disks[0]}" >> /tmp/part-include +fi +unset \${partitions_name[swap]} + +if [[ x"\${partitions_name[/]}" == x"" ]]; then + partitions_name[/]="root" +fi + +echo "partition disks" >> /tmp/log + +vggroup='' +let disk_nums=\${#sorted_disks[@]} +let disk_offset=0 +while [ \${disk_offset} -lt \${disk_nums} ]; do + disk=\${sorted_disks[\${disk_offset}]} + let disk_offset=\$disk_offset+1; + let pv_id=\${disk_offset} + partname="pv.0\${pv_id}" + if [ ! -z "\${max_disks_size[\${disk}]}" ]; then + max_disk_size=\${max_disks_size[\${disk}]} + else + max_disk_size=\${default_max_disk_size} + fi + echo "partition \${disk} max size \${max_disk_size}" >> /tmp/log + if [ \${max_disk_size} -gt 0 ]; then + maxsize_param="--maxsize=\${max_disk_size}" + else + maxsize_param="" + fi + echo "part \$partname --size=1 --grow \${maxsize_param} --ondisk=\${disk}" >> /tmp/part-include + vggroup="\$vggroup \$partname" + if [ ! -z "\${reserve_disks_size[\$disk]}" ]; then + reserve_disk_size=\${reserve_disks_size[\$disk]} + else + reserve_disk_size=\${default_reserve_disk_size} + fi + echo "reserve \${reserve_disk_size} on \${disk}" >> /tmp/log + if [ \${reserve_disk_size} -gt 0 ]; then + reserve_partname="pv.1\${pv_id}" + echo "part \${reserve_partname} --size=\${reserve_disk_size} --ondisk=\${disk}" >> /tmp/part-include + reserve_vggroup="\${reserve_vggroup} \${reserve_partname}" + fi +done + +if [ ! -z "\$vggroup" ]; then + echo "volgroup $vgname \$vggroup" >> /tmp/part-include +fi +if [ ! -z "\${reserve_vggroup}" ]; then + echo "volgroup reserved \${reserve_vggroup}" >> /tmp/part-include +fi + +declare -A sorted_partitions +sorted_partitions[0]=\${default_partition} +let sorted_partition_offset=1 +for key in \${!partitions_name[@]}; do + if [[ "\$key" != "\${default_partition}" ]]; then + sorted_partitions[\${sorted_partition_offset}]=\$key + let sorted_partition_offset=\${sorted_partition_offset}+1 + fi +done + +for key in \${sorted_partitions[@]}; do + partition_name=\${partitions_name[\$key]} + if [[ "\$key" == "\${default_partition}" ]]; then + grow_param="--grow" + else + grow_param="" + fi + partition_percentage=\${partitions_percentage[\$key]} + if [[ x"\${partition_percentage}" != x"" ]]; then + percentage_param="--percent=\${partition_percentage}" + grow_param="--grow" + else + percentage_param="" + fi + partition_size=\${partitions_size[\$key]} + if [[ x"\${partition_size}" != x"" ]]; then + size_param="--size=\${partition_size}" + else + size_param="" + fi + partition_maxsize=\${partitions_maxsize[\$key]} + if [[ x"\${partition_maxsize}" != x"" ]]; then + maxsize_param="--maxsize=\${partition_maxsize}" + else + maxsize_param="" + fi + echo "logvol \$key --fstype=\${partition_fstype} --vgname=$vgname \${percentage_param} \${size_param} \${maxsize_param} \${grow_param} --name=\${partition_name}vol" >> /tmp/part-include +done diff --git a/deploy/adapters/cobbler/snippets/kickstart_rsyslog.conf b/deploy/adapters/cobbler/snippets/kickstart_rsyslog.conf new file mode 100644 index 00000000..33af044a --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_rsyslog.conf @@ -0,0 +1,66 @@ +cat << EOL > /etc/rsyslog.conf +\#\#\#\# MODULES \#\#\#\## + +\\$ModLoad imuxsock # provides support for local system logging (e.g. via logger command) +\\$ModLoad imfile + +\\$WorkDirectory /var/lib/rsyslog +\\$ActionQueueType LinkedList +\\$ActionQueueFileName srvrfwd +\\$ActionResumeRetryCount -1 +\\$ActionQueueSaveOnShutDown on +#if $getVar("compass_server", "") != "" +\# *.* @@$compass_server:514 +#else +\# *.* @@$server:514 +#end if + +\# Provides UDP syslog reception +\#\\$ModLoad imudp +\#\\$UDPServerRun 514 + +\# Provides TCP syslog reception +\\$ModLoad imtcp +\\$InputTCPServerRun 514 +#set system_name = $getVar('system_name','') +\\$LocalHostName $system_name + +\#\#\#\# GLOBAL DIRECTIVES \#\#\#\## + +\# Use default timestamp format +\\$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat + +\# File syncing capability is disabled by default. This feature is usually not required, +\# not useful and an extreme performance hit +\#\\$ActionFileEnableSync on + +\# Include all config files in /etc/rsyslog.d/ +\\$IncludeConfig /etc/rsyslog.d/*.conf + + +\#\#\#\# RULES \#\#\#\## + +\# Log anything (except mail) of level info or higher. +\# Don't log private authentication messages! +syslog.*,daemon.* /var/log/messages + +\# The authpriv file has restricted access. +authpriv.* /var/log/secure + +\# Log all the mail messages in one place. +mail.* -/var/log/maillog + +\# Log cron stuff +cron.* /var/log/cron + +\# Everybody gets emergency messages +*.emerg * + +\# Save news errors of level crit and higher in a special file. +uucp,news.crit /var/log/spooler + +\# Save boot messages also to boot.log +local7.* /var/log/boot.log + +EOL +chkconfig rsyslog on diff --git a/deploy/adapters/cobbler/snippets/kickstart_software_chef b/deploy/adapters/cobbler/snippets/kickstart_software_chef new file mode 100644 index 00000000..398ae94a --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_software_chef @@ -0,0 +1 @@ +chef diff --git a/deploy/adapters/cobbler/snippets/kickstart_ssh b/deploy/adapters/cobbler/snippets/kickstart_ssh new file mode 100644 index 00000000..2ffedaae --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_ssh @@ -0,0 +1,34 @@ +#set ssh_keys = $getVar("push_ssh_keys", "/root/.ssh/id_rsa.pub") +#if $ssh_keys != "" + #set user_name = $getVar("username", "root") + #if $user_name == "root" + #set home = "/root" + #else + #set home = "/home/%s" % $user_name + #end if +mkdir -p $home/.ssh +chmod 700 -R $home/.ssh + #set $firstline = True + #for $ssh_key in $ssh_keys.split(',') + #if not $ssh_key + #continue + #end if + #try + #set f = $open($ssh_key) + #if $firstline +cat << EOL > $home/.ssh/authorized_keys + #echo $f.read() +EOL + #else +cat << EOL >> $home/.ssh/authorized_keys + #echo $f.read() +EOL + #end if + #set $firstline = False + #silent $f.close() + #except +# failed to read from $ssh_key + #end try + #end for +chmod 600 $home/.ssh/authorized_keys +#end if diff --git a/deploy/adapters/cobbler/snippets/kickstart_start b/deploy/adapters/cobbler/snippets/kickstart_start new file mode 100644 index 00000000..13705c88 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_start @@ -0,0 +1,30 @@ +#set system_name = $getVar('system_name','') +#set profile_name = $getVar('profile_name','') +#set breed = $getVar('breed','') +#set srv = $getVar('http_server','') +#set run_install_triggers = $str($getVar('run_install_triggers','')) +#set runpre = "" +#if $system_name != '' + ## RUN PRE TRIGGER + #if $run_install_triggers in [ "1", "true", "yes", "y" ] + #if $breed == 'redhat' + #set runpre = "\nwget \"http://%s/cblr/svc/op/trig/mode/pre/%s/%s\" -O /dev/null" % (srv, "system", system_name) + #else if $breed == 'vmware' + #set runpre = "\nwget \"http://%s/cblr/svc/op/trig/mode/pre/%s/%s\" -O /dev/null" % (srv, "system", system_name) + #else if $breed == 'debian' or $breed == 'ubuntu' + #set runpre = "wget \"http://%s/cblr/svc/op/trig/mode/pre/%s/%s\" -O /dev/null" % (srv, "system", system_name) + #else if $breed == 'vmware' + #set runpre = "wget \"http://%s/cblr/svc/op/trig/mode/pre/%s/%s\" -O /dev/null" % (srv, "system", system_name) + #end if + #end if +#else if $profile_name != '' + ## RUN PRE TRIGGER + #if $run_install_triggers in [ "1", "true", "yes", "y" ] + #if $breed == 'redhat' + #set runpre = "\nwget \"http://%s/cblr/svc/op/trig/mode/pre/%s/%s\" -O /dev/null" % (srv, "profile", profile_name) + #else if $breed == 'vmware' + #set runpre = "\nwget \"http://%s/cblr/svc/op/trig/mode/pre/%s/%s\" -O /dev/null" % (srv, "profile", profile_name) + #end if + #end if +#end if +#echo $runpre diff --git a/deploy/adapters/cobbler/snippets/kickstart_sysctl.conf b/deploy/adapters/cobbler/snippets/kickstart_sysctl.conf new file mode 100644 index 00000000..c227ecfa --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_sysctl.conf @@ -0,0 +1,72 @@ +cat << EOF > /etc/sysctl.conf +#raw +# Kernel sysctl configuration file for Red Hat Linux +# +# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and +# sysctl.conf(5) for more details. + +# Controls IP packet forwarding +net.ipv4.ip_forward = 0 + +# Controls source route verification +net.ipv4.conf.default.rp_filter = 1 + +# Do not accept source routing +net.ipv4.conf.default.accept_source_route = 0 + +# Controls the System Request debugging functionality of the kernel +kernel.sysrq = 0 + +# Controls whether core dumps will append the PID to the core filename. +# Useful for debugging multi-threaded applications. +kernel.core_uses_pid = 1 + +# Controls the use of TCP syncookies +net.ipv4.tcp_syncookies = 1 + +# Controls the default maxmimum size of a mesage queue +kernel.msgmnb = 65536 + +# Controls the maximum size of a message, in bytes +kernel.msgmax = 65536 + +# Controls the maximum shared segment size, in bytes +kernel.shmmax = 68719476736 + +# Controls the maximum number of shared memory segments, in pages +kernel.shmall = 4294967296 + +# increase TCP max buffer size settable using setsockopt() +net.core.rmem_max = 16777216 +net.core.wmem_max = 16777216 + +# increase Linux autotuning TCP buffer limit +net.ipv4.tcp_rmem = 4096 87380 16777216 +net.ipv4.tcp_wmem = 4096 65536 16777216 + +# increase the length of the processor input queue +net.core.netdev_max_backlog = 30000 +net.ipv4.tcp_max_syn_backlog = 4096 + +# recommended default congestion control is htcp +net.ipv4.tcp_congestion_control=htcp + +# recommended for hosts with jumbo frames enabled +net.ipv4.tcp_mtu_probing=1 + +# increase client parallel connections +net.ipv4.ip_local_port_range = 15000 61000 +net.ipv4.tcp_fin_timeout=30 + +# fast cycling of sockets in time_wait state and re-using them +net.ipv4.tcp_tw_recycle = 1 +net.ipv4.tcp_tw_reuse = 1 + +# increase the maximum number of requests queued to a listen socket +net.core.somaxconn = 8192 + +# avoid caching tcp network transfer statistics +net.ipv4.route.flush=1 +#end raw +EOF +sysctl -p diff --git a/deploy/adapters/cobbler/snippets/kickstart_yum b/deploy/adapters/cobbler/snippets/kickstart_yum new file mode 100644 index 00000000..c33ba0f1 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_yum @@ -0,0 +1,91 @@ +cat << EOF > /etc/yum.conf +[main] +cachedir=/var/cache/yum/\\$basearch/\\$releasever +#if $getVar('proxy', '') != "" +proxy=$proxy +#end if +keepcache=1 +debuglevel=2 +logfile=/var/log/yum.log +exactarch=1 +obsoletes=1 +gpgcheck=1 +plugins=1 +installonly_limit=5 +bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum +distroverpkg=centos-release + +# This is the default, if you make this bigger yum won't see if the metadata +# is newer on the remote and so you'll "gain" the bandwidth of not having to +# download the new metadata and "pay" for it by yum not having correct +# information. +# It is esp. important, to have correct metadata, for distributions like +# Fedora which don't keep old packages around. If you don't like this checking +# interupting your command line usage, it's much better to have something +# manually check the metadata once an hour (yum-updatesd will do this). +# metadata_expire=90m + +# PUT YOUR REPOS HERE OR IN separate files named file.repo +# in /etc/yum.repos.d +EOF + +mkdir -p /root/repo_backup +mv -f /etc/yum.repos.d/* /root/repo_backup/ + +#set profile_name = $getVar('profile_name','') +#set os_info = $profile_name.split('-') +#set osname = $os_info[0].lower() +#set osversion = $os_info[1] +#set osversion_flat = $osversion.replace('.', '_') + +cat << EOF > /etc/yum.repos.d/${osname}_${osversion_flat}_os_repo.repo +[${osname}_${osversion_flat}_os_repo] +name=${osname} - ${osname}_${osversion_flat}_os_repo +proxy=_none_ +baseurl=$tree +enabled=1 +gpgcheck=0 +skip_if_unavailable=1 +EOF + +#set $repo_data = $getVar("repo_data",[]) +#for $repo in $repo_data +cat << EOF > /etc/yum.repos.d/${repo.name}.repo +[$repo.name] +name=${osname} - $repo.name + #if $repo.mirror_locally +baseurl=http://$http_server/cblr/repo_mirror/${repo.name} +proxy=_none_ + #else +baseurl=${repo.mirror} + #end if +enabled=1 +gpgcheck=0 +priority=${repo.priority} +skip_if_unavailable=1 +EOF +#end for + +#if $getVar("local_repo", "") == "" or $getVar("local_repo_only","1") == "0" + #set repos_snippet = 'yum.repos.d/%s/%s/kickstart_repos' % ($osname, $osversion) +$SNIPPET($repos_snippet) +#end if + +#if $getVar("local_repo","") != "" + #set repo = 'yum.repos.d/%s/%s/centos_repo' % ($osname, $osversion) +cat << EOF > /etc/yum.repos.d/Compass.repo +[compass_repo] +name=Compass yum repo +baseurl=$local_repo/$repo +enabled=1 +gpgcheck=0 +priority=1 +proxy=_none_ +skip_if_unavailable=1 +EOF + + #if $getVar("local_repo_only","1") != "0" +yum -y update +rm -rf /etc/yum.repos.d/CentOS-*.repo + #end if +#end if diff --git a/deploy/adapters/cobbler/snippets/kickstart_yum_repo_config b/deploy/adapters/cobbler/snippets/kickstart_yum_repo_config new file mode 100644 index 00000000..9aae52ee --- /dev/null +++ b/deploy/adapters/cobbler/snippets/kickstart_yum_repo_config @@ -0,0 +1,11 @@ +# Repository Config +#set $repo_data = $getVar("repo_data",[]) +#for $repo in $repo_data +#if $repo.mirror_locally +repo --name=${repo.name} --baseurl=http://$http_server/cobbler/repo_mirror/${repo.name}/ +#else +repo --name=${repo.name} --baseurl=${repo.mirror} +#end if +#end for + + diff --git a/deploy/adapters/cobbler/snippets/preseed_chef_run.sh b/deploy/adapters/cobbler/snippets/preseed_chef_run.sh index ade6215f..19d7eee3 100644 --- a/deploy/adapters/cobbler/snippets/preseed_chef_run.sh +++ b/deploy/adapters/cobbler/snippets/preseed_chef_run.sh @@ -32,8 +32,8 @@ PIDFILE=/tmp/chef_client_run.pid if [ -f \\$PIDFILE ]; then pid=\\$(cat \\$PIDFILE) if [ -f /proc/\\$pid/exe ]; then - echo "there are chef_client_run.sh running with pid \\$pid" >> /var/log/chef.log 2>&1 - exit 1 + echo "there are chef_client_run.sh running with pid \\$pid" >> /var/log/chef.log 2>&1 + exit 1 fi fi echo \\$$ > \\$PIDFILE diff --git a/deploy/adapters/cobbler/snippets/preseed_pre_install_network_config b/deploy/adapters/cobbler/snippets/preseed_pre_install_network_config index 2ea74799..e2d45df7 100644 --- a/deploy/adapters/cobbler/snippets/preseed_pre_install_network_config +++ b/deploy/adapters/cobbler/snippets/preseed_pre_install_network_config @@ -34,7 +34,7 @@ get_ifname() { #set ikeys = $interfaces.keys() #for $iname in $ikeys #set $idata = $interfaces[$iname] - #set $management = $idata["management"] + #set $management = $idata["management"] #if $management #set $management_nic = $iname #end if diff --git a/deploy/adapters/cobbler/snippets/sysctl.xml b/deploy/adapters/cobbler/snippets/sysctl.xml new file mode 100644 index 00000000..fe13bf7f --- /dev/null +++ b/deploy/adapters/cobbler/snippets/sysctl.xml @@ -0,0 +1,78 @@ +<file> + <file_path>/etc/sysctl.conf</file_path> + <file_contents> +<![CDATA[ +#raw +# Kernel sysctl configuration file for Red Hat Linux +# +# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and +# sysctl.conf(5) for more details. + +# Controls IP packet forwarding +net.ipv4.ip_forward = 0 + +# Controls source route verification +net.ipv4.conf.default.rp_filter = 1 + +# Do not accept source routing +net.ipv4.conf.default.accept_source_route = 0 + +# Controls the System Request debugging functionality of the kernel +kernel.sysrq = 0 + +# Controls whether core dumps will append the PID to the core filename. +# Useful for debugging multi-threaded applications. +kernel.core_uses_pid = 1 + +# Controls the use of TCP syncookies +net.ipv4.tcp_syncookies = 1 + +# Controls the default maxmimum size of a mesage queue +kernel.msgmnb = 65536 + +# Controls the maximum size of a message, in bytes +kernel.msgmax = 65536 + +# Controls the maximum shared segment size, in bytes +kernel.shmmax = 68719476736 + +# Controls the maximum number of shared memory segments, in pages +kernel.shmall = 4294967296 + +# increase TCP max buffer size settable using setsockopt() +net.core.rmem_max = 16777216 +net.core.wmem_max = 16777216 + +# increase Linux autotuning TCP buffer limit +net.ipv4.tcp_rmem = 4096 87380 16777216 +net.ipv4.tcp_wmem = 4096 65536 16777216 + +# increase the length of the processor input queue +net.core.netdev_max_backlog = 30000 +net.ipv4.tcp_max_syn_backlog = 4096 + +# recommended default congestion control is htcp +net.ipv4.tcp_congestion_control=htcp + +# recommended for hosts with jumbo frames enabled +net.ipv4.tcp_mtu_probing=1 + +# increase client parallel connections +net.ipv4.ip_local_port_range = 15000 61000 +net.ipv4.tcp_fin_timeout=30 + +# fast cycling of sockets in time_wait state and re-using them +net.ipv4.tcp_tw_recycle = 1 +net.ipv4.tcp_tw_reuse = 1 + +# increase the maximum number of requests queued to a listen socket +net.core.somaxconn = 8192 + +# avoid caching tcp network transfer statistics +net.ipv4.route.flush=1 +#end raw +]]> + </file_contents> + <file_owner>root.root</file_owner> + <file_permissions>644</file_permissions> +</file> diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_base_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_base_repo new file mode 100644 index 00000000..ee01aa32 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_base_repo @@ -0,0 +1,59 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Base.repo +# CentOS-Base.repo +# +# The mirror system uses the connecting IP address of the client and the +# update status of each mirror to pick mirrors that are updated to and +# geographically close to the client. You should use this for CentOS updates +# unless you are manually picking other mirrors. +# +# If the mirrorlist= does not work for you, as a fall back you can try the +# remarked out baseurl= line instead. +# +# + +[base] +name=CentOS-6.5 - Base +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=os +baseurl=http://mirror.centos.org/centos/6/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 + +# released updates +[updates] +name=CentOS-6.5 - Updates +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=updates +baseurl=http://mirror.centos.org/centos/6/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 + +# additional packages that may be useful +[extras] +name=CentOS-6.5 - Extras +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=extras +baseurl=http://mirror.centos.org/centos/6/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 + +#additional packages that extend functionality of existing packages +[centosplus] +name=CentOS-6.5 - Plus +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=centosplus +baseurl=http://mirror.centos.org/centos/6/centosplus/\\$basearch/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 + +#contrib - packages by Centos Users +[contrib] +name=CentOS-6.5 - Contrib +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=contrib +baseurl=http://mirror.centos.org/centos/6/contrib/\\$basearch/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_debuginfo_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_debuginfo_repo new file mode 100644 index 00000000..a8e8853e --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_debuginfo_repo @@ -0,0 +1,23 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Debuginfo.repo +# CentOS-Debug.repo +# +# The mirror system uses the connecting IP address of the client and the +# update status of each mirror to pick mirrors that are updated to and +# geographically close to the client. You should use this for CentOS updates +# unless you are manually picking other mirrors. +# + +# All debug packages from all the various CentOS-5 releases +# are merged into a single repo, split by BaseArch +# +# Note: packages in the debuginfo repo are currently not signed +# + +[debug] +name=CentOS-6 - Debuginfo +baseurl=http://debuginfo.centos.org/6/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-6 +enabled=0 +skip_if_unavailable=1 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_epel_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_epel_repo new file mode 100644 index 00000000..ce139eab --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_epel_repo @@ -0,0 +1,25 @@ +cat << EOF > /etc/yum.repos.d/epel.repo +[epel] +name=Extra Packages for Enterprise Linux 6 - \\$basearch +baseurl=http://download.fedoraproject.org/pub/epel/6/\\$basearch +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=\\$basearch +failovermethod=priority +enabled=1 +gpgcheck=0 + +[epel-debuginfo] +name=Extra Packages for Enterprise Linux 6 - \\$basearch - Debug +baseurl=http://download.fedoraproject.org/pub/epel/6/\\$basearch/debug +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-source] +name=Extra Packages for Enterprise Linux 6 - \\$basearch - Source +baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_epel_testing_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_epel_testing_repo new file mode 100644 index 00000000..c09468a0 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_epel_testing_repo @@ -0,0 +1,25 @@ +cat << EOF > /etc/yum.repos.d/epel-testing.repo +[epel-testing] +name=Extra Packages for Enterprise Linux 6 - Testing - \\$basearch +baseurl=http://download.fedoraproject.org/pub/epel/testing/6/\\$basearch +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-epel6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-testing-debuginfo] +name=Extra Packages for Enterprise Linux 6 - Testing - \\$basearch - Debug +baseurl=http://download.fedoraproject.org/pub/epel/testing/6/\\$basearch/debug +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-debug-epel6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-testing-source] +name=Extra Packages for Enterprise Linux 6 - Testing - \\$basearch - Source +baseurl=http://download.fedoraproject.org/pub/epel/testing/6/SRPMS +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-source-epel6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_vault_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_vault_repo new file mode 100644 index 00000000..310736d4 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_centos_vault_repo @@ -0,0 +1,213 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Vault.repo +# CentOS-Vault.repo +# +# CentOS Vault holds packages from previous releases within the same CentOS Version +# these are packages obsoleted by the current release and should usually not +# be used in production +#----------------- + +[C6.0-base] +name=CentOS-6.0 - Base +baseurl=http://vault.centos.org/6.0/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.0-updates] +name=CentOS-6.0 - Updates +baseurl=http://vault.centos.org/6.0/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.0-extras] +name=CentOS-6.0 - Extras +baseurl=http://vault.centos.org/6.0/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.0-contrib] +name=CentOS-6.0 - Contrib +baseurl=http://vault.centos.org/6.0/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.0-centosplus] +name=CentOS-6.0 - CentOSPlus +baseurl=http://vault.centos.org/6.0/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 +#----------------- + +[C6.1-base] +name=CentOS-6.1 - Base +baseurl=http://vault.centos.org/6.1/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.1-updates] +name=CentOS-6.1 - Updates +baseurl=http://vault.centos.org/6.1/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.1-extras] +name=CentOS-6.1 - Extras +baseurl=http://vault.centos.org/6.1/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.1-contrib] +name=CentOS-6.1 - Contrib +baseurl=http://vault.centos.org/6.1/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.1-centosplus] +name=CentOS-6.1 - CentOSPlus +baseurl=http://vault.centos.org/6.1/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 +#----------------- + +[C6.2-base] +name=CentOS-6.2 - Base +baseurl=http://vault.centos.org/6.2/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.2-updates] +name=CentOS-6.2 - Updates +baseurl=http://vault.centos.org/6.2/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.2-extras] +name=CentOS-6.2 - Extras +baseurl=http://vault.centos.org/6.2/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.2-contrib] +name=CentOS-6.2 - Contrib +baseurl=http://vault.centos.org/6.2/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.2-centosplus] +name=CentOS-6.2 - CentOSPlus +baseurl=http://vault.centos.org/6.2/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 +#----------------- + +[C6.3-base] +name=CentOS-6.3 - Base +baseurl=http://vault.centos.org/6.3/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.3-updates] +name=CentOS-6.3 - Updates +baseurl=http://vault.centos.org/6.3/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.3-extras] +name=CentOS-6.3 - Extras +baseurl=http://vault.centos.org/6.3/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.3-contrib] +name=CentOS-6.3 - Contrib +baseurl=http://vault.centos.org/6.3/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.3-centosplus] +name=CentOS-6.3 - CentOSPlus +baseurl=http://vault.centos.org/6.3/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +#----------------- + +[C6.4-base] +name=CentOS-6.4 - Base +baseurl=http://vault.centos.org/6.4/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.4-updates] +name=CentOS-6.4 - Updates +baseurl=http://vault.centos.org/6.4/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.4-extras] +name=CentOS-6.4 - Extras +baseurl=http://vault.centos.org/6.4/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.4-contrib] +name=CentOS-6.4 - Contrib +baseurl=http://vault.centos.org/6.4/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.4-centosplus] +name=CentOS-6.4 - CentOSPlus +baseurl=http://vault.centos.org/6.4/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_repos b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_repos new file mode 100644 index 00000000..d7914337 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.5/kickstart_repos @@ -0,0 +1,5 @@ +$SNIPPET('yum.repos.d/centos/6.5/kickstart_centos_base_repo') +$SNIPPET('yum.repos.d/centos/6.5/kickstart_centos_debuginfo_repo') +$SNIPPET('yum.repos.d/centos/6.5/kickstart_centos_vault_repo') +$SNIPPET('yum.repos.d/centos/6.5/kickstart_centos_epel_repo') +$SNIPPET('yum.repos.d/centos/6.5/kickstart_centos_epel_testing_repo') diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_base_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_base_repo new file mode 100644 index 00000000..7116ade2 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_base_repo @@ -0,0 +1,59 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Base.repo +# CentOS-Base.repo +# +# The mirror system uses the connecting IP address of the client and the +# update status of each mirror to pick mirrors that are updated to and +# geographically close to the client. You should use this for CentOS updates +# unless you are manually picking other mirrors. +# +# If the mirrorlist= does not work for you, as a fall back you can try the +# remarked out baseurl= line instead. +# +# + +[base] +name=CentOS-6.6 - Base +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=os +baseurl=http://mirror.centos.org/centos/6/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 + +# released updates +[updates] +name=CentOS-6.6 - Updates +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=updates +baseurl=http://mirror.centos.org/centos/6/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 + +# additional packages that may be useful +[extras] +name=CentOS-6.6 - Extras +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=extras +baseurl=http://mirror.centos.org/centos/6/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 + +#additional packages that extend functionality of existing packages +[centosplus] +name=CentOS-6.6 - Plus +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=centosplus +baseurl=http://mirror.centos.org/centos/6/centosplus/\\$basearch/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 + +#contrib - packages by Centos Users +[contrib] +name=CentOS-6.6 - Contrib +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=contrib +baseurl=http://mirror.centos.org/centos/6/contrib/\\$basearch/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_debuginfo_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_debuginfo_repo new file mode 100644 index 00000000..a8e8853e --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_debuginfo_repo @@ -0,0 +1,23 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Debuginfo.repo +# CentOS-Debug.repo +# +# The mirror system uses the connecting IP address of the client and the +# update status of each mirror to pick mirrors that are updated to and +# geographically close to the client. You should use this for CentOS updates +# unless you are manually picking other mirrors. +# + +# All debug packages from all the various CentOS-5 releases +# are merged into a single repo, split by BaseArch +# +# Note: packages in the debuginfo repo are currently not signed +# + +[debug] +name=CentOS-6 - Debuginfo +baseurl=http://debuginfo.centos.org/6/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-6 +enabled=0 +skip_if_unavailable=1 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_epel_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_epel_repo new file mode 100644 index 00000000..ce139eab --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_epel_repo @@ -0,0 +1,25 @@ +cat << EOF > /etc/yum.repos.d/epel.repo +[epel] +name=Extra Packages for Enterprise Linux 6 - \\$basearch +baseurl=http://download.fedoraproject.org/pub/epel/6/\\$basearch +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=\\$basearch +failovermethod=priority +enabled=1 +gpgcheck=0 + +[epel-debuginfo] +name=Extra Packages for Enterprise Linux 6 - \\$basearch - Debug +baseurl=http://download.fedoraproject.org/pub/epel/6/\\$basearch/debug +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-source] +name=Extra Packages for Enterprise Linux 6 - \\$basearch - Source +baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_epel_testing_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_epel_testing_repo new file mode 100644 index 00000000..c09468a0 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_epel_testing_repo @@ -0,0 +1,25 @@ +cat << EOF > /etc/yum.repos.d/epel-testing.repo +[epel-testing] +name=Extra Packages for Enterprise Linux 6 - Testing - \\$basearch +baseurl=http://download.fedoraproject.org/pub/epel/testing/6/\\$basearch +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-epel6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-testing-debuginfo] +name=Extra Packages for Enterprise Linux 6 - Testing - \\$basearch - Debug +baseurl=http://download.fedoraproject.org/pub/epel/testing/6/\\$basearch/debug +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-debug-epel6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-testing-source] +name=Extra Packages for Enterprise Linux 6 - Testing - \\$basearch - Source +baseurl=http://download.fedoraproject.org/pub/epel/testing/6/SRPMS +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-source-epel6&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_fasttrack_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_fasttrack_repo new file mode 100644 index 00000000..5a4a7eae --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_fasttrack_repo @@ -0,0 +1,10 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Fasttrack.repo +[fasttrack] +name=CentOS-6.6 - fasttrack +mirrorlist=http://mirrorlist.centos.org/?release=6&arch=\\$basearch&repo=fasttrack&infra=\\$infra +baseurl=http://mirror.centos.org/centos/6/fasttrack/\\$basearch/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +skip_if_unavailable=1 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_vault_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_vault_repo new file mode 100644 index 00000000..065fa43e --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_centos_vault_repo @@ -0,0 +1,256 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Vault.repo +# CentOS-Vault.repo +# +# CentOS Vault holds packages from previous releases within the same CentOS Version +# these are packages obsoleted by the current release and should usually not +# be used in production +#----------------- + +[C6.0-base] +name=CentOS-6.0 - Base +baseurl=http://vault.centos.org/6.0/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.0-updates] +name=CentOS-6.0 - Updates +baseurl=http://vault.centos.org/6.0/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.0-extras] +name=CentOS-6.0 - Extras +baseurl=http://vault.centos.org/6.0/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.0-contrib] +name=CentOS-6.0 - Contrib +baseurl=http://vault.centos.org/6.0/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.0-centosplus] +name=CentOS-6.0 - CentOSPlus +baseurl=http://vault.centos.org/6.0/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 +#----------------- + +[C6.1-base] +name=CentOS-6.1 - Base +baseurl=http://vault.centos.org/6.1/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.1-updates] +name=CentOS-6.1 - Updates +baseurl=http://vault.centos.org/6.1/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.1-extras] +name=CentOS-6.1 - Extras +baseurl=http://vault.centos.org/6.1/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.1-contrib] +name=CentOS-6.1 - Contrib +baseurl=http://vault.centos.org/6.1/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.1-centosplus] +name=CentOS-6.1 - CentOSPlus +baseurl=http://vault.centos.org/6.1/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 +#----------------- + +[C6.2-base] +name=CentOS-6.2 - Base +baseurl=http://vault.centos.org/6.2/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.2-updates] +name=CentOS-6.2 - Updates +baseurl=http://vault.centos.org/6.2/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.2-extras] +name=CentOS-6.2 - Extras +baseurl=http://vault.centos.org/6.2/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.2-contrib] +name=CentOS-6.2 - Contrib +baseurl=http://vault.centos.org/6.2/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.2-centosplus] +name=CentOS-6.2 - CentOSPlus +baseurl=http://vault.centos.org/6.2/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 +#----------------- + +[C6.3-base] +name=CentOS-6.3 - Base +baseurl=http://vault.centos.org/6.3/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.3-updates] +name=CentOS-6.3 - Updates +baseurl=http://vault.centos.org/6.3/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.3-extras] +name=CentOS-6.3 - Extras +baseurl=http://vault.centos.org/6.3/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.3-contrib] +name=CentOS-6.3 - Contrib +baseurl=http://vault.centos.org/6.3/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.3-centosplus] +name=CentOS-6.3 - CentOSPlus +baseurl=http://vault.centos.org/6.3/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +#----------------- + +[C6.4-base] +name=CentOS-6.4 - Base +baseurl=http://vault.centos.org/6.4/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.4-updates] +name=CentOS-6.4 - Updates +baseurl=http://vault.centos.org/6.4/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.4-extras] +name=CentOS-6.4 - Extras +baseurl=http://vault.centos.org/6.4/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.4-contrib] +name=CentOS-6.4 - Contrib +baseurl=http://vault.centos.org/6.4/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.4-centosplus] +name=CentOS-6.4 - CentOSPlus +baseurl=http://vault.centos.org/6.4/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +#----------------- + +[C6.5-base] +name=CentOS-6.5 - Base +baseurl=http://vault.centos.org/6.5/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.5-updates] +name=CentOS-6.5 - Updates +baseurl=http://vault.centos.org/6.5/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.5-extras] +name=CentOS-6.5 - Extras +baseurl=http://vault.centos.org/6.5/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.5-contrib] +name=CentOS-6.5 - Contrib +baseurl=http://vault.centos.org/6.5/contrib/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +[C6.5-centosplus] +name=CentOS-6.5 - CentOSPlus +baseurl=http://vault.centos.org/6.5/centosplus/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 +enabled=0 +skip_if_unavailable=1 + +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_repos b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_repos new file mode 100644 index 00000000..a6ff23b5 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/6.6/kickstart_repos @@ -0,0 +1,6 @@ +$SNIPPET('yum.repos.d/centos/6.6/kickstart_centos_base_repo') +$SNIPPET('yum.repos.d/centos/6.6/kickstart_centos_debuginfo_repo') +$SNIPPET('yum.repos.d/centos/6.6/kickstart_centos_vault_repo') +$SNIPPET('yum.repos.d/centos/6.6/kickstart_centos_fasttrack_repo') +$SNIPPET('yum.repos.d/centos/6.6/kickstart_centos_epel_repo') +$SNIPPET('yum.repos.d/centos/6.6/kickstart_centos_epel_testing_repo') diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_base_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_base_repo new file mode 100644 index 00000000..2462aa87 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_base_repo @@ -0,0 +1,59 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Base.repo +# CentOS-Base.repo +# +# The mirror system uses the connecting IP address of the client and the +# update status of each mirror to pick mirrors that are updated to and +# geographically close to the client. You should use this for CentOS updates +# unless you are manually picking other mirrors. +# +# If the mirrorlist= does not work for you, as a fall back you can try the +# remarked out baseurl= line instead. +# +# + +[base] +name=CentOS-7.0 - Base +mirrorlist=http://mirrorlist.centos.org/?release=7&arch=\\$basearch&repo=os +baseurl=http://mirror.centos.org/centos/7/os/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +skip_if_unavailable=1 + +# released updates +[updates] +name=CentOS-7.0 - Updates +mirrorlist=http://mirrorlist.centos.org/?release=7&arch=\\$basearch&repo=updates +baseurl=http://mirror.centos.org/centos/7/updates/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +skip_if_unavailable=1 + +# additional packages that may be useful +[extras] +name=CentOS-7.0 - Extras +mirrorlist=http://mirrorlist.centos.org/?release=7&arch=\\$basearch&repo=extras +baseurl=http://mirror.centos.org/centos/7/extras/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +skip_if_unavailable=1 + +#additional packages that extend functionality of existing packages +[centosplus] +name=CentOS-7.0 - Plus +mirrorlist=http://mirrorlist.centos.org/?release=7&arch=\\$basearch&repo=centosplus +baseurl=http://mirror.centos.org/centos/7/centosplus/\\$basearch/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +skip_if_unavailable=1 + +#contrib - packages by Centos Users +[contrib] +name=CentOS-7.0 - Contrib +mirrorlist=http://mirrorlist.centos.org/?release=7&arch=\\$basearch&repo=contrib +baseurl=http://mirror.centos.org/centos/7/contrib/\\$basearch/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +skip_if_unavailable=1 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_debuginfo_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_debuginfo_repo new file mode 100644 index 00000000..78554b6a --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_debuginfo_repo @@ -0,0 +1,23 @@ +cat << EOF > /etc/yum.repos.d/CentOS-Debuginfo.repo +# CentOS-Debug.repo +# +# The mirror system uses the connecting IP address of the client and the +# update status of each mirror to pick mirrors that are updated to and +# geographically close to the client. You should use this for CentOS updates +# unless you are manually picking other mirrors. +# + +# All debug packages from all the various CentOS-5 releases +# are merged into a single repo, split by BaseArch +# +# Note: packages in the debuginfo repo are currently not signed +# + +[debug] +name=CentOS-7 - Debuginfo +baseurl=http://debuginfo.centos.org/7/\\$basearch/ +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7 +enabled=0 +skip_if_unavailable=1 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_epel_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_epel_repo new file mode 100644 index 00000000..ca684c34 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_epel_repo @@ -0,0 +1,25 @@ +cat << EOF > /etc/yum.repos.d/epel.repo +[epel] +name=Extra Packages for Enterprise Linux 7 - \\$basearch +baseurl=http://download.fedoraproject.org/pub/epel/7/\\$basearch +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=\\$basearch +failovermethod=priority +enabled=1 +gpgcheck=0 + +[epel-debuginfo] +name=Extra Packages for Enterprise Linux 7 - \\$basearch - Debug +baseurl=http://download.fedoraproject.org/pub/epel/7/\\$basearch/debug +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-source] +name=Extra Packages for Enterprise Linux 7 - \\$basearch - Source +baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS +mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_epel_testing_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_epel_testing_repo new file mode 100644 index 00000000..bc1d1970 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_epel_testing_repo @@ -0,0 +1,25 @@ +cat << EOF > /etc/yum.repos.d/epel-testing.repo +[epel-testing] +name=Extra Packages for Enterprise Linux 7.0 - Testing - \\$basearch +baseurl=http://download.fedoraproject.org/pub/epel/testing/7/\\$basearch +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-epel7&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-testing-debuginfo] +name=Extra Packages for Enterprise Linux 7.0 - Testing - \\$basearch - Debug +baseurl=http://download.fedoraproject.org/pub/epel/testing/7/\\$basearch/debug +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-debug-epel7&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 + +[epel-testing-source] +name=Extra Packages for Enterprise Linux 7 - Testing - \\$basearch - Source +baseurl=http://download.fedoraproject.org/pub/epel/testing/7/SRPMS +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-source-epel7&arch=\\$basearch +failovermethod=priority +enabled=0 +gpgcheck=0 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_mysql_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_mysql_repo new file mode 100644 index 00000000..1d2c3d73 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_mysql_repo @@ -0,0 +1,35 @@ +cat << EOF > /etc/yum.repos.d/mysql-community.repo +[mysql-connectors-community] +name=MySQL Connectors Community +baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/\\$basearch/ +enabled=1 +gpgcheck=0 + +[mysql-tools-community] +name=MySQL Tools Community +baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/\\$basearch/ +enabled=1 +gpgcheck=0 + +# Enable to use MySQL 5.5 +[mysql55-community] +name=MySQL 5.5 Community Server +baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/\\$basearch/ +enabled=0 +gpgcheck=0 + +# Enable to use MySQL 5.6 +[mysql56-community] +name=MySQL 5.6 Community Server +baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/\\$basearch/ +enabled=1 +gpgcheck=0 + +# Note: MySQL 5.7 is currently in development. For use at your own risk. +# Please read with sub pages: https://dev.mysql.com/doc/relnotes/mysql/5.7/en/ +[mysql57-community-dmr] +name=MySQL 5.7 Community Server Development Milestone Release +baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/\\$basearch/ +enabled=0 +gpgcheck=0 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_mysql_source_repo b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_mysql_source_repo new file mode 100644 index 00000000..b1c1be39 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_centos_mysql_source_repo @@ -0,0 +1,31 @@ +cat << EOF > /etc/yum.repos.d/mysql-community-source.repo +[mysql-connectors-community-source] +name=MySQL Connectors Community - Source +baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/SRPMS +enabled=0 +gpgcheck=0 + +[mysql-tools-community-source] +name=MySQL Tools Community - Source +baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/SRPMS +enabled=0 +gpgcheck=0 + +[mysql55-community-source] +name=MySQL 5.5 Community Server - Source +baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/SRPMS +enabled=0 +gpgcheck=0 + +[mysql56-community-source] +name=MySQL 5.6 Community Server - Source +baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/SRPMS +enabled=0 +gpgcheck=0 + +[mysql57-community-dmr-source] +name=MySQL 5.7 Community Server Development Milestone Release - Source +baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/SRPMS +enabled=0 +gpgcheck=0 +EOF diff --git a/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_repos b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_repos new file mode 100644 index 00000000..6b85bcc1 --- /dev/null +++ b/deploy/adapters/cobbler/snippets/yum.repos.d/centos/7.0/kickstart_repos @@ -0,0 +1,7 @@ +$SNIPPET('yum.repos.d/centos/7.0/kickstart_centos_base_repo') +$SNIPPET('yum.repos.d/centos/7.0/kickstart_centos_debuginfo_repo') +$SNIPPET('yum.repos.d/centos/7.0/kickstart_centos_atomic_repo') +$SNIPPET('yum.repos.d/centos/7.0/kickstart_centos_epel_repo') +$SNIPPET('yum.repos.d/centos/7.0/kickstart_centos_epel_testing_repo') +$SNIPPET('yum.repos.d/centos/7.0/kickstart_centos_mysql_repo') +$SNIPPET('yum.repos.d/centos/7.0/kickstart_centos_mysql_source_repo') |