kameleon-builder 2.2.5 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.rst +21 -0
  4. data/{templates → contrib}/steps/bootstrap/debian/debootstrap_arm.yaml +1 -1
  5. data/{templates → contrib}/steps/export/clean_appliance.yaml +0 -0
  6. data/{templates → contrib}/steps/export/compact_qcow_img.yaml +0 -0
  7. data/{templates → contrib}/steps/setup/archlinux/configure_ruby.yaml +0 -0
  8. data/{templates → contrib}/steps/setup/archlinux/install_dev_tools.yaml +0 -0
  9. data/{templates → contrib}/steps/setup/archlinux/install_gnome.yaml +0 -0
  10. data/{templates → contrib}/steps/setup/archlinux/install_yaourt.yaml +0 -0
  11. data/{templates → contrib}/steps/setup/centos/6.5/configure_repo.yaml +0 -0
  12. data/{templates → contrib}/steps/setup/debian/install_gnome.yaml +0 -0
  13. data/{templates → contrib}/steps/setup/debian/install_kde.yaml +0 -0
  14. data/{templates → erb}/extend.erb +2 -2
  15. data/erb/userconf.erb +5 -0
  16. data/kameleon-builder.gemspec +6 -1
  17. data/lib/kameleon.rb +53 -3
  18. data/lib/kameleon/cli.rb +146 -99
  19. data/lib/kameleon/engine.rb +20 -8
  20. data/lib/kameleon/environment.rb +11 -10
  21. data/lib/kameleon/persistent_cache.rb +1 -9
  22. data/lib/kameleon/recipe.rb +52 -24
  23. data/lib/kameleon/repository.rb +46 -0
  24. data/lib/kameleon/utils.rb +49 -0
  25. data/{templates → tests/recipes}/steps/aliases/defaults.yaml +0 -0
  26. data/tests/recipes/steps/bootstrap/linux/bootstrap.yaml +2 -0
  27. data/tests/recipes/steps/checkpoints/test.yaml +14 -0
  28. data/tests/recipes/steps/enable_something.yaml +2 -0
  29. data/tests/recipes/steps/export/save_appliance.yaml +10 -0
  30. data/tests/recipes/steps/setup/linux/software_install.yaml +7 -0
  31. data/tests/recipes/test_recipe.yaml +41 -0
  32. data/version.txt +1 -1
  33. metadata +34 -139
  34. data/templates/COPYRIGHT +0 -21
  35. data/templates/chroot/debian7-amd64.yaml +0 -119
  36. data/templates/docker/debian7.yaml +0 -107
  37. data/templates/grid5000/debian7.yaml +0 -97
  38. data/templates/qemu/archlinux-desktop-i686.yaml +0 -25
  39. data/templates/qemu/archlinux-desktop-x86_64.yaml +0 -25
  40. data/templates/qemu/archlinux-i686.yaml +0 -25
  41. data/templates/qemu/archlinux-x86_64.yaml +0 -109
  42. data/templates/qemu/centos6.5-x86_64.yaml +0 -122
  43. data/templates/qemu/centos7-x86_64.yaml +0 -122
  44. data/templates/qemu/debian7-amd64.yaml +0 -134
  45. data/templates/qemu/debian7-desktop-amd64.yaml +0 -24
  46. data/templates/qemu/debian7-kameleon-amd64.yaml +0 -40
  47. data/templates/qemu/debian7-oar-amd64.yaml +0 -51
  48. data/templates/qemu/debian8-amd64.yaml +0 -25
  49. data/templates/qemu/fedora20-desktop-x86_64.yaml +0 -21
  50. data/templates/qemu/fedora20-x86_64.yaml +0 -119
  51. data/templates/qemu/ubuntu-12.04-amd64.yaml +0 -132
  52. data/templates/qemu/ubuntu-12.04-desktop-amd64.yaml +0 -25
  53. data/templates/qemu/ubuntu-14.04-amd64.yaml +0 -25
  54. data/templates/qemu/ubuntu-14.04-desktop-amd64.yaml +0 -27
  55. data/templates/steps/bootstrap/archlinux/arch_bootstrap.yaml +0 -211
  56. data/templates/steps/bootstrap/centos/6.5/yum_bootstrap.yaml +0 -67
  57. data/templates/steps/bootstrap/debian/debootstrap.yaml +0 -20
  58. data/templates/steps/bootstrap/fedora/init_pxeboot.yaml +0 -13
  59. data/templates/steps/bootstrap/fedora/yum_bootstrap.yaml +0 -45
  60. data/templates/steps/bootstrap/g5k_reserv.yaml +0 -70
  61. data/templates/steps/bootstrap/initialize_disk.yaml +0 -16
  62. data/templates/steps/bootstrap/initialize_disk_chroot.yaml +0 -80
  63. data/templates/steps/bootstrap/install_requirements.yaml +0 -3
  64. data/templates/steps/bootstrap/prepare_chroot.yaml +0 -126
  65. data/templates/steps/bootstrap/prepare_docker.yaml +0 -51
  66. data/templates/steps/bootstrap/prepare_qemu.yaml +0 -41
  67. data/templates/steps/bootstrap/prepare_virtualbox.yaml +0 -67
  68. data/templates/steps/bootstrap/start_chroot.yaml +0 -51
  69. data/templates/steps/bootstrap/start_docker.yaml +0 -16
  70. data/templates/steps/bootstrap/start_qemu.yaml +0 -74
  71. data/templates/steps/bootstrap/start_virtualbox.yaml +0 -38
  72. data/templates/steps/bootstrap/switch_context_qemu.yaml +0 -84
  73. data/templates/steps/bootstrap/switch_context_virtualbox.yaml +0 -86
  74. data/templates/steps/breakpoint.yaml +0 -3
  75. data/templates/steps/checkpoints/docker.yaml +0 -17
  76. data/templates/steps/checkpoints/qcow2.yaml +0 -40
  77. data/templates/steps/checkpoints/qemu.yaml +0 -33
  78. data/templates/steps/checkpoints/virtualbox.yaml +0 -21
  79. data/templates/steps/disable_checkpoint.yaml +0 -3
  80. data/templates/steps/enable_checkpoint.yaml +0 -5
  81. data/templates/steps/export/qemu_save_appliance.yaml +0 -52
  82. data/templates/steps/export/save_appliance_from_g5k.yaml +0 -47
  83. data/templates/steps/export/vagrant_save_appliance.yaml +0 -14
  84. data/templates/steps/export/virtualbox_save_appliance.yaml +0 -61
  85. data/templates/steps/setup/archlinux/configure_keyboard.yaml +0 -9
  86. data/templates/steps/setup/archlinux/configure_network.yaml +0 -9
  87. data/templates/steps/setup/archlinux/configure_system.yaml +0 -20
  88. data/templates/steps/setup/archlinux/install_bootloader.yaml +0 -23
  89. data/templates/steps/setup/archlinux/install_software.yaml +0 -9
  90. data/templates/steps/setup/autologin.yaml +0 -16
  91. data/templates/steps/setup/centos/6.5/configure_network.yaml +0 -33
  92. data/templates/steps/setup/centos/6.5/configure_system.yaml +0 -46
  93. data/templates/steps/setup/centos/6.5/minimal_install.yaml +0 -3
  94. data/templates/steps/setup/centos/6.5/setup_vagrant_box.yaml +0 -77
  95. data/templates/steps/setup/create_group.yaml +0 -12
  96. data/templates/steps/setup/create_user.yaml +0 -11
  97. data/templates/steps/setup/debian/configure_apt.yaml +0 -73
  98. data/templates/steps/setup/debian/configure_kernel.yaml +0 -13
  99. data/templates/steps/setup/debian/configure_keyboard.yaml +0 -10
  100. data/templates/steps/setup/debian/configure_network.yaml +0 -30
  101. data/templates/steps/setup/debian/configure_system.yaml +0 -12
  102. data/templates/steps/setup/debian/install_bootloader.yaml +0 -36
  103. data/templates/steps/setup/debian/install_software.yaml +0 -2
  104. data/templates/steps/setup/debian/oar/oar_debian_config_frontend.yaml +0 -8
  105. data/templates/steps/setup/debian/oar/oar_debian_config_node.yaml +0 -5
  106. data/templates/steps/setup/debian/oar/oar_debian_config_server.yaml +0 -5
  107. data/templates/steps/setup/debian/oar/oar_prereq_install.yaml +0 -16
  108. data/templates/steps/setup/debian/setup_vagrant_box.yaml +0 -80
  109. data/templates/steps/setup/debian/upgrade_system.yaml +0 -10
  110. data/templates/steps/setup/fedora/configure_kernel.yaml +0 -9
  111. data/templates/steps/setup/fedora/configure_keyboard.yaml +0 -12
  112. data/templates/steps/setup/fedora/configure_network.yaml +0 -38
  113. data/templates/steps/setup/fedora/configure_system.yaml +0 -52
  114. data/templates/steps/setup/fedora/install_bootloader.yaml +0 -53
  115. data/templates/steps/setup/fedora/install_software.yaml +0 -3
  116. data/templates/steps/setup/fedora/minimal_install.yaml +0 -3
  117. data/templates/steps/setup/fedora/update_system.yaml +0 -16
  118. data/templates/steps/setup/oar/oar_config_devel.yaml +0 -21
  119. data/templates/steps/setup/oar/oar_config_frontend.yaml +0 -38
  120. data/templates/steps/setup/oar/oar_config_node.yaml +0 -4
  121. data/templates/steps/setup/oar/oar_config_server.yaml +0 -25
  122. data/templates/steps/setup/oar/oar_config_system.yaml +0 -34
  123. data/templates/steps/setup/oar/oar_devel_prereq_install.yaml +0 -5
  124. data/templates/steps/setup/oar/oar_git_install.yaml +0 -21
  125. data/templates/steps/setup/ubuntu/configure_apt.yaml +0 -62
  126. data/templates/virtualbox/archlinux-desktop-i686.yaml +0 -25
  127. data/templates/virtualbox/archlinux-desktop-x86_64.yaml +0 -28
  128. data/templates/virtualbox/archlinux-i686.yaml +0 -28
  129. data/templates/virtualbox/archlinux-x86_64.yaml +0 -108
  130. data/templates/virtualbox/centos6.5-i386.yaml +0 -39
  131. data/templates/virtualbox/centos6.5-vagrant-x86_64.yaml +0 -33
  132. data/templates/virtualbox/centos6.5-x86_64.yaml +0 -121
  133. data/templates/virtualbox/centos7-x86_64.yaml +0 -118
  134. data/templates/virtualbox/debian7-amd64.yaml +0 -128
  135. data/templates/virtualbox/debian7-desktop-amd64.yaml +0 -25
  136. data/templates/virtualbox/debian7-i386.yaml +0 -31
  137. data/templates/virtualbox/debian7-kameleon-amd64.yaml +0 -38
  138. data/templates/virtualbox/debian7-oar-amd64.yaml +0 -51
  139. data/templates/virtualbox/debian7-vagrant-amd64.yaml +0 -32
  140. data/templates/virtualbox/debian8-amd64.yaml +0 -25
  141. data/templates/virtualbox/debian8-i386.yaml +0 -31
  142. data/templates/virtualbox/fedora20-x86_64.yaml +0 -118
  143. data/templates/virtualbox/ubuntu-12.04-amd64.yaml +0 -128
  144. data/templates/virtualbox/ubuntu-12.04-desktop-amd64.yaml +0 -25
  145. data/templates/virtualbox/ubuntu-14.04-amd64.yaml +0 -25
  146. data/templates/virtualbox/ubuntu-14.04-desktop-amd64.yaml +0 -27
  147. data/tests/recipes/dummy_recipe.yaml +0 -48
  148. data/tests/recipes/steps/bootstrap/dummy_distro/dummy_bootstrap_static.yaml +0 -4
  149. data/tests/recipes/steps/export/dummy_save_appliance.yaml +0 -9
  150. data/tests/recipes/steps/setup/default/dummy_root_passwd.yaml +0 -8
  151. data/tests/recipes/steps/setup/dummy_distro/dummy_software_install.yaml +0 -7
@@ -1,132 +0,0 @@
1
- #==============================================================================
2
- # vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
3
- #==============================================================================
4
- #
5
- # DESCRIPTION: Ubuntu 12.04 LTS (Precise Pangolin) base system (amd64).
6
- #
7
- #==============================================================================
8
-
9
- ---
10
- # Loads some helpful aliases
11
- aliases: defaults.yaml
12
- # Enables qemu checkpoint
13
- checkpoint: qemu.yaml
14
- #== Global variables use by Kameleon engine and the steps
15
- global:
16
- ## User varibales : used by the recipe
17
- user_name: kameleon
18
- user_password: $$user_name
19
-
20
- # Distribution
21
- distrib: ubuntu
22
- release: precise
23
- arch: amd64
24
- kernel_arch: $$arch
25
- hostname: kameleon-$$distrib
26
-
27
- ## QEMU options
28
- qemu_enable_kvm: "$(egrep '(vmx|svm)' /proc/cpuinfo > /dev/null && echo true)"
29
- qemu_cpu: 2
30
- qemu_memory_size: 768
31
- qemu_monitor_socket: $$kameleon_cwd/qemu_monitor.socket
32
- qemu_ssh_port: 55423
33
- qemu_arch: x86_64
34
- qemu_image_size: 10G
35
- qemu_image_disk: $$kameleon_cwd/base_$$kameleon_recipe_name.qcow2
36
- qemu_pidfile: $$kameleon_cwd/qemu.pid
37
-
38
- ## Kameleon iso bootstrap
39
- boot2kameleon_url: http://kameleon.imag.fr/iso/boot2debian/debian-jessie-$${qemu_arch}-insecure.iso
40
- insecure_ssh_key_url: http://kameleon.imag.fr/iso/boot2debian/keys/insecure_id_rsa
41
-
42
- # rootfs options
43
- disk_device: /dev/vda
44
- rootfs: /rootfs
45
- filesystem_type: ext4
46
-
47
- # rootfs options
48
- rootfs: /rootfs
49
-
50
- # Apt options
51
- apt_repository: http://archive.ubuntu.com/ubuntu/
52
- apt_enable_restricted: true
53
-
54
- ## System variables. Required by kameleon engine
55
- # Include specific steps
56
- include_steps:
57
- - $$distrib/$$release
58
- - $$distrib
59
- - debian
60
-
61
- ssh_config_file: $$kameleon_cwd/ssh_config
62
- out_context:
63
- cmd: ssh -F $$ssh_config_file $${kameleon_recipe_name} -t /bin/bash
64
- workdir: /root/kameleon_workdir
65
- proxy_cache: 10.0.2.2
66
-
67
- in_context:
68
- cmd: ssh -F $$ssh_config_file $${kameleon_recipe_name} -t /bin/bash
69
- workdir: /root/kameleon_workdir
70
- proxy_cache: 10.0.2.2
71
-
72
- #== Bootstrap the new system and create the 'in_context'
73
- bootstrap:
74
- - prepare_qemu
75
- - start_qemu
76
- - install_requirements:
77
- - packages: parted e2fsprogs debootstrap extlinux
78
- - enable_checkpoint
79
- - initialize_disk
80
- - debootstrap:
81
- - include_pkg: >
82
- apt-transport-https ca-certificates less acpid acpi-support kbd bzip2 udev
83
- locales psmisc linux-image-generic ifupdown iptables iputils-ping
84
- iproute pciutils isc-dhcp-client openssh-server
85
- - release: $$release
86
- - arch: $$arch
87
- - repository: $$apt_repository
88
- - variant: minbase
89
- - switch_context_qemu
90
-
91
-
92
- #== Install and configuration steps
93
- setup:
94
- # Install
95
- - configure_apt:
96
- - repository: $$apt_repository
97
- - enable_restricted: $$apt_enable_restricted
98
- - upgrade_system:
99
- - dist_upgrade: true
100
- - install_software:
101
- - packages: >
102
- bash-completion curl nano vim language-pack-en extlinux sudo
103
- - configure_kernel:
104
- - arch: $$arch
105
- - install_bootloader
106
- # Configuration
107
- - configure_system:
108
- - locales: POSIX C en_US fr_FR de_DE
109
- - lang: en_US.UTF-8
110
- - timezone: UTC
111
- - configure_keyboard:
112
- - layout: "us,fr,de"
113
- - configure_network
114
- - create_group:
115
- - name: admin
116
- - create_user:
117
- - name: $$user_name
118
- - groups: sudo admin
119
- - password: $$user_password
120
-
121
- #== Export the generated appliance in the format of your choice
122
- export:
123
- - disable_checkpoint
124
- - qemu_save_appliance:
125
- - input: $$qemu_image_disk
126
- - output: $$kameleon_cwd/$$kameleon_recipe_name
127
- - save_as_qcow2
128
- # - save_as_qed
129
- # - save_as_tgz
130
- # - save_as_raw
131
- # - save_as_vmdk
132
- # - save_as_vdi
@@ -1,25 +0,0 @@
1
- #==============================================================================
2
- # vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
3
- #==============================================================================
4
- #
5
- # DESCRIPTION: Ubuntu 12.04 LTS (Precise Pangolin) Desktop edition (amd64).
6
- #
7
- #==============================================================================
8
-
9
- ---
10
- extend: ubuntu-12.04-amd64
11
-
12
- global:
13
- # Apt options
14
- virtualbox_memory_size: 1024
15
-
16
- bootstrap:
17
- - "@base"
18
-
19
- setup:
20
- - "@base"
21
- - install_software:
22
- - packages: ubuntu-desktop
23
-
24
- export:
25
- - "@base"
@@ -1,25 +0,0 @@
1
- #==============================================================================
2
- # vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
3
- #==============================================================================
4
- #
5
- # DESCRIPTION: Ubuntu 14.04 LTS (Trusty Tahr) base system (amd64).
6
- #
7
- #==============================================================================
8
-
9
- ---
10
- extend: ubuntu-12.04-amd64
11
-
12
- global:
13
- # Distribution
14
- distrib: ubuntu
15
- release: trusty
16
- arch: amd64
17
-
18
- bootstrap:
19
- - "@base"
20
-
21
- setup:
22
- - "@base"
23
-
24
- export:
25
- - "@base"
@@ -1,27 +0,0 @@
1
- #==============================================================================
2
- # vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
3
- #==============================================================================
4
- #
5
- # DESCRIPTION: Ubuntu 14.04 LTS (Trusty Tahr) Desktop edition (amd64).
6
- #
7
- #==============================================================================
8
-
9
- ---
10
- extend: ubuntu-14.04-amd64
11
-
12
- global:
13
- # Distribution
14
- distrib: ubuntu
15
- release: trusty
16
- arch: amd64
17
-
18
- bootstrap:
19
- - "@base"
20
-
21
- setup:
22
- - "@base"
23
- - install_software:
24
- - packages: ubuntu-desktop
25
-
26
- export:
27
- - "@base"
@@ -1,211 +0,0 @@
1
- # Arch-bootstrap
2
- #
3
- # Call the arch-bootstrap.sh script to bootstrap an archlinux distro from
4
- # any GNU system
5
-
6
- # You can choose any group from https://www.archlinux.org/groups/
7
- # It's recommended to use 'base' (default) or 'base-devel' (with dev tools)
8
-
9
- - pkg_group: base
10
-
11
- - import_script:
12
- - exec_out: |
13
- cat > $KAMELEON_WORKDIR/arch-bootstrap.sh <<'EOF'
14
- #!/bin/bash
15
- #
16
- # arch-bootstrap: Bootstrap a base Arch Linux system using any GNU distribution.
17
- #
18
- # Dependencies: bash >= 4, coreutils, wget, sed, gawk, tar, gzip, chroot, xz.
19
- # Project: https://github.com/tokland/arch-bootstrap
20
- #
21
- # Install:
22
- #
23
- # # install -m 755 arch-bootstrap.sh /usr/local/bin/arch-bootstrap
24
- #
25
- # Some examples:
26
- #
27
- # # arch-bootstrap destination
28
- # # arch-bootstrap -a x86_64 -r ftp://ftp.archlinux.org destination-x86_64
29
- #
30
- # And then you can chroot to the destination directory (root/root):
31
- #
32
- # # chroot destination
33
-
34
- set -e -u -o pipefail
35
-
36
- # Packages needed by pacman (see get-pacman-dependencies.sh)
37
- PACMAN_PACKAGES=(
38
- acl archlinux-keyring attr bzip2 curl expat glibc gpgme libarchive
39
- libassuan libgpg-error libssh2 lzo2 openssl pacman pacman-mirrorlist xz
40
- zlib krb5 e2fsprogs keyutils
41
- )
42
- BASIC_PACKAGES=(${PACMAN_PACKAGES[*]} filesystem)
43
- EXTRA_PACKAGES=(
44
- $$pkg_group haveged
45
- )
46
- DEFAULT_REPO_URL="http://mirrors.kernel.org/archlinux"
47
- DEFAULT_ARCH=`uname -m`
48
-
49
- # Output to standard error
50
- stderr() { echo "$@" >&2; }
51
-
52
- # Output debug message to standard error
53
- debug() { echo "--- $@"; }
54
-
55
- # Extract href attribute from HTML link
56
- extract_href() { sed -n '/<a / s/^.*<a [^>]*href="\([^\"]*\)".*$/\1/p'; }
57
-
58
- # Simple wrapper around wget
59
- fetch() { wget -c --passive-ftp --quiet "$@"; }
60
-
61
- # Extract FILEPATH gz/xz archive to DEST directory
62
- uncompress() {
63
- local FILEPATH=$1 DEST=$2
64
-
65
- case "$FILEPATH" in
66
- *.gz) tar xzf "$FILEPATH" -C "$DEST";;
67
- *.xz) xz -dc "$FILEPATH" | tar x -C "$DEST";;
68
- *) debug "Error: unknown package format: $FILEPATH"
69
- return 1;;
70
- esac
71
- }
72
-
73
- ###
74
-
75
- configure_pacman() {
76
- local DEST=$1 ARCH=$2
77
- debug "configure DNS and pacman"
78
- cp "/etc/resolv.conf" "$DEST/etc/resolv.conf"
79
- echo "Server = $REPO_URL/\$repo/os/$ARCH" >> "$DEST/etc/pacman.d/mirrorlist"
80
- }
81
-
82
- configure_minimal_system() {
83
- local DEST=$1
84
-
85
- mkdir -p "$DEST/dev"
86
- echo "root:x:0:0:root:/root:/bin/bash" > "$DEST/etc/passwd"
87
- echo 'root:$1$GT9AUpJe$oXANVIjIzcnmOpY07iaGi/:14657::::::' > "$DEST/etc/shadow"
88
- touch "$DEST/etc/group"
89
- echo "bootstrap" > "$DEST/etc/hostname"
90
-
91
- test -e "$DEST/etc/mtab" || echo "rootfs / rootfs rw 0 0" > "$DEST/etc/mtab"
92
- test -e "$DEST/dev/null" || mknod "$DEST/dev/null" c 1 3
93
- test -e "$DEST/dev/random" || mknod -m 0644 "$DEST/dev/random" c 1 8
94
- test -e "$DEST/dev/urandom" || mknod -m 0644 "$DEST/dev/urandom" c 1 9
95
-
96
- sed -i "s/^[[:space:]]*\(CheckSpace\)/# \1/" "$DEST/etc/pacman.conf"
97
- sed -i "s/^[[:space:]]*SigLevel[[:space:]]*=.*$/SigLevel = Never/" "$DEST/etc/pacman.conf"
98
- }
99
-
100
- fetch_packages_list() {
101
- local REPO=$1
102
-
103
- debug "fetch packages list: $REPO/"
104
- # Force trailing '/' needed by FTP servers.
105
- fetch -O - "$REPO/" | extract_href | awk -F"/" '{print $NF}' | sort -rn ||
106
- { debug "Error: cannot fetch packages list: $REPO"; return 1; }
107
- }
108
-
109
- install_pacman_packages() {
110
- local BASIC_PACKAGES=$1 DEST=$2 LIST=$3 PACKDIR=$4
111
- debug "pacman package and dependencies: $BASIC_PACKAGES"
112
-
113
- for PACKAGE in $BASIC_PACKAGES; do
114
- local FILE=$(echo "$LIST" | grep -m1 "^$PACKAGE-[[:digit:]].*\(\.gz\|\.xz\)$")
115
- test "$FILE" || { debug "Error: cannot find package: $PACKAGE"; return 1; }
116
- local FILEPATH="$PACKDIR/$FILE"
117
-
118
- debug "download package: $REPO/$FILE"
119
- fetch -O "$FILEPATH" "$REPO/$FILE"
120
- debug "uncompress package: $FILEPATH"
121
- uncompress "$FILEPATH" "$DEST"
122
- done
123
- }
124
-
125
- install_packages() {
126
- local ARCH=$1 DEST=$2 PACKAGES=$3
127
- debug "install packages: $PACKAGES"
128
- mount -t proc /proc $DEST/proc
129
- mount /dev $DEST/dev -o bind
130
- LC_ALL=C chroot "$DEST" /usr/bin/pacman \
131
- --noconfirm --arch $ARCH -Sy --force $PACKAGES
132
- sync
133
- umount $DEST/{proc,dev}
134
- }
135
-
136
- show_usage() {
137
- stderr "show_usage: $(basename "$0") [-a i686|x86_64] [-r REPO_URL] DIRECTORY"
138
- }
139
-
140
- main() {
141
- # Process arguments and options
142
- test $# -eq 0 && set -- "-h"
143
- local ARCH=$DEFAULT_ARCH
144
- local REPO_URL=$DEFAULT_REPO_URL
145
-
146
- while getopts "a:r:h" ARG; do
147
- case "$ARG" in
148
- a) ARCH=$OPTARG;;
149
- r) REPO_URL=$OPTARG;;
150
- *) show_usage; return 1;;
151
- esac
152
- done
153
- shift $(($OPTIND-1))
154
- test $# -eq 1 || { show_usage; return 1; }
155
-
156
- local DEST=$1
157
- local REPO="${REPO_URL%/}/core/os/$ARCH"
158
- local PACKDIR=$(mktemp -d)
159
- trap "rm -rf '$PACKDIR'" KILL TERM EXIT
160
- debug "destination directory: $DEST"
161
- debug "core repository: $REPO"
162
- debug "temporary directory: $PACKDIR"
163
-
164
- # Fetch packages, install and do a minimal system configuration
165
- mkdir -p "$DEST"
166
- local LIST=$(fetch_packages_list $REPO)
167
- install_pacman_packages "${BASIC_PACKAGES[*]}" "$DEST" "$LIST" "$PACKDIR"
168
- configure_pacman "$DEST" "$ARCH"
169
- configure_minimal_system "$DEST"
170
- install_packages "$ARCH" "$DEST" "${BASIC_PACKAGES[*]} ${EXTRA_PACKAGES[*]}"
171
- configure_pacman "$DEST" "$ARCH" # Pacman must be re-configured
172
- rm -rf "$PACKDIR"
173
-
174
- debug "done"
175
- }
176
-
177
- main "$@"
178
- EOF
179
-
180
- - call_arch_boostrap:
181
- - exec_out: bash $KAMELEON_WORKDIR/arch-bootstrap.sh -a $$arch -r $$mirror $$rootfs
182
- - on_clean:
183
- - umount_out: $$rootfs/proc
184
- - umount_out: $$rootfs/dev
185
-
186
- - enable_sshd_service:
187
- - exec_out: |
188
- chroot $$rootfs \
189
- ln -sf \
190
- '/usr/lib/systemd/system/sshd.service' \
191
- '/etc/systemd/system/multi-user.target.wants/sshd.service'
192
-
193
- - enable_dhcp_service:
194
- - exec_out: |
195
- chroot $$rootfs \
196
- ln -sf \
197
- '/usr/lib/systemd/system/dhcpcd.service' \
198
- '/etc/systemd/system/multi-user.target.wants/dhcpcd.service'
199
-
200
- - add_nobody_user: ## To allow sshd to run correctly
201
- - exec_out: echo "nobody:x:99:99:nobody:/:/bin/false" >> $$rootfs/etc/passwd
202
- - exec_out: echo "nobody:x:99:" >> $$rootfs/etc/group
203
- - exec_out: echo "nobody:x:14871::::::" >> $$rootfs/etc/shadow
204
-
205
- - configure_pacman:
206
- - on_setup_init:
207
- # init pacman keyring
208
- - exec_in: haveged -w 1024
209
- - exec_in: pacman-key --init
210
- - exec_in: pkill haveged
211
- - exec_in: pacman-key --populate archlinux
@@ -1,67 +0,0 @@
1
- - fix_yum:
2
- - check_cmd_out: yum
3
- - exec_out: sed -i "s/opts.ssl_verify_host/2/g" /usr/lib/pymodules/python2.7/urlgrabber/grabber.py
4
-
5
- - init_rpm_db:
6
- - check_cmd_out: rpm
7
- - exec_out: mkdir -p $$rootfs/var/lib/rpm
8
- - exec_out: rpm --root $$rootfs --initdb
9
-
10
- - fetch_release_package:
11
- - check_cmd_out: lynx
12
- - exec_out: RELEASE_PACKAGE_URL=$(lynx $$mirror_packages_url -dump -listonly -nonumbers | grep $${distrib}-release | head -1)
13
- - exec_out: |
14
- if [ -z "${RELEASE_PACKAGE_URL-unset}" ]; then
15
- fail "$${distrib}-release package not found!"
16
- fi
17
-
18
- - install_distrib_release:
19
- - download_file_out:
20
- - $RELEASE_PACKAGE_URL
21
- - $KAMELEON_WORKDIR/$${distrib}-release.rpm
22
- - exec_out: rpm --root $$rootfs -ivh --force-debian --nodeps $KAMELEON_WORKDIR/$${distrib}-release.rpm
23
-
24
- - install_yum:
25
- - exec_out: ln -sf $$rootfs/etc/pki/ /etc/pki
26
- - exec_out: yum --installroot $$rootfs -y install yum
27
- - exec_out: echo $${release} > $$rootfs/etc/yum/vars/releasever
28
-
29
- - mount_chroot:
30
- - exec_out: mount -o bind /dev $$rootfs/dev
31
- - exec_out: mount -o bind /dev/pts $$rootfs/dev/pts
32
- - exec_out: mount -t proc /proc $$rootfs/proc
33
- - exec_out: mount -t sysfs /sys $$rootfs/sys
34
- - exec_out: cp /etc/resolv.conf $$rootfs/etc/resolv.conf
35
-
36
- - install_packages:
37
- - exec_out: chroot $$rootfs yum install --releasever=$$release -y $$include_pkgs
38
-
39
- - enable_services:
40
- - exec_out: chroot $$rootfs chkconfig network on
41
- - exec_out: chroot $$rootfs chkconfig sshd on
42
-
43
- - set_interface:
44
- - write_out:
45
- - $$rootfs/etc/sysconfig/network-scripts/ifcfg-eth0
46
- - |
47
- DEVICE="eth0"
48
- BOOTPROTO="dhcp"
49
- HOSTNAME="$$hostname"
50
- IPV6INIT="yes"
51
- NM_CONTROLLED="yes"
52
- ONBOOT="yes"
53
- TYPE="Ethernet"
54
- - write_out:
55
- - $$rootfs/etc/sysconfig/network
56
- - |
57
- NETWORKING=yes
58
- HOSTNAME=$$hostname
59
- RES_OPTIONS="single-request-reopen"
60
-
61
- - umount_chroot:
62
- - on_clean:
63
- - umount_out: $$rootfs/sys
64
- - umount_out: $$rootfs/proc
65
- - umount_out: $$rootfs/dev/pts
66
- - umount_out: $$rootfs/dev
67
- - exec_out: rm -f $$rootfs/etc/resolv.conf