forked from ungleich-public/cdist
Merge remote branch 'nico/master'
This commit is contained in:
commit
d21c52be1c
9 changed files with 149 additions and 19 deletions
|
@ -355,15 +355,17 @@ __cdist_tmp_removal()
|
||||||
rm -rf "${__cdist_tmp_dir}"
|
rm -rf "${__cdist_tmp_dir}"
|
||||||
}
|
}
|
||||||
|
|
||||||
__cdist_exit_on_kill()
|
# Does not work in children, will be called again in every script!
|
||||||
|
# Use only in interactive "front end" scripts
|
||||||
|
__cdist_kill_on_interrupt()
|
||||||
{
|
{
|
||||||
# FIXME: before 1.8.0 -> kill all children, but do not segfault
|
|
||||||
# kill 0
|
|
||||||
__cdist_tmp_removal
|
__cdist_tmp_removal
|
||||||
|
kill 0
|
||||||
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Remove tempfiles at normal exit
|
||||||
trap __cdist_tmp_removal EXIT
|
trap __cdist_tmp_removal EXIT
|
||||||
trap __cdist_exit_on_kill INT TERM
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
|
@ -25,6 +25,9 @@
|
||||||
[ $# -eq 1 ] || __cdist_usage "<target host>"
|
[ $# -eq 1 ] || __cdist_usage "<target host>"
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
# Kill children on interrupt - only in interactive scripts
|
||||||
|
trap __cdist_kill_on_interrupt INT TERM
|
||||||
|
|
||||||
__cdist_target_host="$1"
|
__cdist_target_host="$1"
|
||||||
|
|
||||||
# Make target host available for non-core
|
# Make target host available for non-core
|
||||||
|
|
|
@ -25,18 +25,8 @@
|
||||||
[ $# -ge 1 ] || __cdist_usage "[-p] <target host> [target host ]"
|
[ $# -ge 1 ] || __cdist_usage "[-p] <target host> [target host ]"
|
||||||
set -u
|
set -u
|
||||||
|
|
||||||
# trap __cdist_tmp_removal EXIT
|
# Kill children on interrupt - only in interactive scripts
|
||||||
trap killandclean EXIT
|
trap __cdist_kill_on_interrupt INT TERM
|
||||||
|
|
||||||
killandclean()
|
|
||||||
{
|
|
||||||
__cdist_echo info "Existing and killing children..."
|
|
||||||
kill 0
|
|
||||||
|
|
||||||
# Ensure tmp stuff is being removed
|
|
||||||
__cdist_cleanly_exit
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
filter()
|
filter()
|
||||||
{
|
{
|
||||||
|
|
112
doc/dev/logs/2011-06-13.installation-via-cdist
Normal file
112
doc/dev/logs/2011-06-13.installation-via-cdist
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
Provisioning Server ideas
|
||||||
|
|
||||||
|
- bootup kernel on target host via TFTP/PXE
|
||||||
|
- start our code that
|
||||||
|
- enables networking (dhcp)
|
||||||
|
- enables sshd
|
||||||
|
|
||||||
|
Requires:
|
||||||
|
- Program that creates our blob that needs to be started
|
||||||
|
- for Linux: initrd
|
||||||
|
- Including ssh keys -> known!
|
||||||
|
- startup sshd
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Setup for installation server:
|
||||||
|
|
||||||
|
- have dhcpd available
|
||||||
|
- install tftpd server
|
||||||
|
- configure dhcp to tell clients to boot from tftp server
|
||||||
|
- have a kernel
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Ideas on how to create "blob"
|
||||||
|
|
||||||
|
- Use tools from system?
|
||||||
|
-> requires same arch on destination!
|
||||||
|
- Use debian|...| base?
|
||||||
|
-> works with cuni!
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
tftp via cuni:
|
||||||
|
debian pxelinux.0 pxelinux.cfg
|
||||||
|
|
||||||
|
[19:44] kr:tftp% ln -s /usr/lib/syslinux/
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
How to create the initrd?
|
||||||
|
Base from ...
|
||||||
|
arch?
|
||||||
|
debian?
|
||||||
|
|
||||||
|
- needs many hardware support / in kernel?
|
||||||
|
- fit to kernel?
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Based on Debian
|
||||||
|
[21:33] kr:tftp% sudo debootstrap --arch=i386 squeeze debian-squeeze
|
||||||
|
|
||||||
|
sudo chroot debian-squeeze /bin/bash
|
||||||
|
apt-get install openssh-server
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Based on Archlinux
|
||||||
|
|
||||||
|
Edit / create pacman.conf
|
||||||
|
Server = ftp://mirrors.kernel.org/archlinux/$repo/os/i686
|
||||||
|
|
||||||
|
[21:40] kr:~% grep -v ^# pacman.conf | grep -v '^$'
|
||||||
|
[options]
|
||||||
|
HoldPkg = pacman glibc
|
||||||
|
SyncFirst = pacman
|
||||||
|
Architecture = auto
|
||||||
|
[core]
|
||||||
|
Include = Server = ftp://mirrors.kernel.org/archlinux/$repo/os/i686
|
||||||
|
[extra]
|
||||||
|
Include = Server = ftp://mirrors.kernel.org/archlinux/$repo/os/i686
|
||||||
|
[community]
|
||||||
|
Include = Server = ftp://mirrors.kernel.org/archlinux/$repo/os/i686
|
||||||
|
[archlinuxfr]
|
||||||
|
Server = http://repo.archlinux.fr/$arch
|
||||||
|
|
||||||
|
[21:40] kr:tftp% sudo mkarchroot -C ~/pacman.conf archlinuxroot
|
||||||
|
|
||||||
|
[21:42] kr:tftp% sudo mkarchroot -C ~/pacman.conf archlinuxroot base
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Initramfs general:
|
||||||
|
|
||||||
|
- need /init
|
||||||
|
|
||||||
|
Test in Debian:
|
||||||
|
root@kr:/# ln -s /sbin/init init
|
||||||
|
|
||||||
|
Create initramfs:
|
||||||
|
[22:47] kr:debian-squeeze% sudo find . -print0 | sudo cpio --null -ov --format=newc | gzip -9 > ../pre-os/initrd.gz
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Gentoo: http://en.gentoo-wiki.com/wiki/Initramfs
|
||||||
|
|
||||||
|
It is possible to specify multiple initramfs to be extracted during boot. This can be useful if you want to create a generic initramfs (for example one that does mdadm) and then add modifications in separate files (for example a custom /etc/mdadm.conf for every machine).
|
||||||
|
|
||||||
|
http://syslinux.zytor.com/wiki/index.php/SYSLINUX#INITRD_initrd_file
|
||||||
|
It supports multiple filenames separated by commas. This is mostly useful for initramfs, which can be composed of multiple separate cpio or cpio.gz archives. Note: all files except the last one are zero-padded to a 4K page boundary. This should not affect initramfs.
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Multiple initrds, #1:
|
||||||
|
|
||||||
|
LABEL preos
|
||||||
|
MENU LABEL Pre OS (Debian Squeeze)
|
||||||
|
KERNEL debian-squeeze/boot/vmlinuz-2.6.32-5-686
|
||||||
|
INITRD debian-squeeze/boot/initrd.img-2.6.32-5-686,pre-os/initrd.gz
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Debug in rootfs:
|
||||||
|
root@kr:/# passwd
|
||||||
|
Enter new UNIX password:
|
||||||
|
Retype new UNIX password:
|
||||||
|
passwd: password updated successfully
|
||||||
|
test
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Multiple nics in Debian...
|
19
doc/dev/logs/2011-06-14.library_for_user
Normal file
19
doc/dev/logs/2011-06-14.library_for_user
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
How to make library functions available to manifest, explorer, etc.
|
||||||
|
|
||||||
|
Some ideas / background:
|
||||||
|
|
||||||
|
- do not have the user to source $__lib/foo if not needed
|
||||||
|
- have $__cdist_lib for internal stuff (probably referring to core/)
|
||||||
|
|
||||||
|
Implementation:
|
||||||
|
|
||||||
|
load_lib()
|
||||||
|
{
|
||||||
|
. $__cdist_lib/*
|
||||||
|
}
|
||||||
|
|
||||||
|
run_code_from_user()
|
||||||
|
{
|
||||||
|
load_lib
|
||||||
|
. file_from_user
|
||||||
|
}
|
|
@ -37,6 +37,9 @@ CORE
|
||||||
-> add function to cdist-config, import from cdist-cache
|
-> add function to cdist-config, import from cdist-cache
|
||||||
|
|
||||||
- check all all internal variables are prefixed with __cdist
|
- check all all internal variables are prefixed with __cdist
|
||||||
|
- Define / document "this is what should be on host X"
|
||||||
|
and have it parsable by different (shinken) tool
|
||||||
|
-> given after manifest run already!
|
||||||
|
|
||||||
TYPES
|
TYPES
|
||||||
------
|
------
|
||||||
|
|
|
@ -54,6 +54,7 @@ everybody using cdist, you're welcome to propose inclusion into upstream.
|
||||||
There are though some requirements to ensure your changes don't break others
|
There are though some requirements to ensure your changes don't break others
|
||||||
work nor kill the authors brain:
|
work nor kill the authors brain:
|
||||||
|
|
||||||
|
- All files should contain the usual header (Author, Copying, etc.)
|
||||||
- Code submission must be done via git
|
- Code submission must be done via git
|
||||||
- Do not add conf/manifest/init - This file should only be touched in your
|
- Do not add conf/manifest/init - This file should only be touched in your
|
||||||
private branch!
|
private branch!
|
||||||
|
|
|
@ -183,12 +183,12 @@ level tools like ruby installed. If a type requires specific tools to be present
|
||||||
on the target, there must be another type that provides this tool and the first
|
on the target, there must be another type that provides this tool and the first
|
||||||
type should create an object of the specific type.
|
type should create an object of the specific type.
|
||||||
|
|
||||||
If your type wants to save temporay data, that may be used by other types
|
If your type wants to save temporary data, that may be used by other types
|
||||||
later on (for instance __file), you can save them in the subdirectory
|
later on (for instance __file), you can save them in the subdirectory
|
||||||
"files" below $__object (but you must create it yourself). cdist will not touch
|
"files" below $__object (but you must create it yourself). cdist will not touch
|
||||||
this directory.
|
this directory.
|
||||||
|
|
||||||
If your type contains static files, it's also recommened to place them in
|
If your type contains static files, it's also recommended to place them in
|
||||||
a folder named "files" within the type (again, because cdist guarantees to
|
a folder named "files" within the type (again, because cdist guarantees to
|
||||||
never ever touch this folder).
|
never ever touch this folder).
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ pull mechanism (client requests configuration).
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
- Website: http://www.nico.schottelius.org/cdist/[]
|
- Website: http://www.nico.schottelius.org/software/cdist/[]
|
||||||
- cdist-best-practise(7)
|
- cdist-best-practise(7)
|
||||||
- cdist-deploy-to(1)
|
- cdist-deploy-to(1)
|
||||||
- cdist-hacker(7)
|
- cdist-hacker(7)
|
||||||
|
|
Loading…
Reference in a new issue