7 --instance-id id Id of the instance
8 --reinstall-first Start with reinstalling the vps
9 --host-user user Use another user (default: arch)
10 --no-reboot Don't reboot
11 --no-reboot-start Don't reboot to rescue at the beginning
12 --no-reboot-end Don't reboot to normal at the end
13 --git-branch Use another puppet branch (default: master)
14 --environment Environment to use for the installl (default: production)
22 environment
=production
63 DIRECTORY
=$(cd `dirname $0` && pwd)
64 PYTHON_DIRECTORY
="$DIRECTORY/../python"
66 if [ -z "$instance_id" ]; then
67 read -p "Id de l'instance : " instance_id
70 if [ -n "$reinstall_first" ]; then
71 echo "Réinstallation du système"
72 python
$PYTHON_DIRECTORY/reinstall_cloud_instance.py
--use-current "$instance_id"
74 read -p "Appuyer sur une touche quand le serveur est prêt" ready
77 if [ -z "$no_reboot" -a -z "$no_reboot_start" ]; then
78 echo "Patienter le temps du reboot"
79 python
$PYTHON_DIRECTORY/reboot_cloud_instance.py
--rescue "$instance_id"
81 read -p "Appuyer sur une touche quand l'instance a redémarré" ready
85 ARCH_HOST_SCRIPT
="$ARCH_DIR/arch_host_script.sh"
86 ARCH_INSTALL_SCRIPT
="$ARCH_DIR/arch_install_script.sh"
87 ARCH_HOST_PUPPET_CONFIGURATION_SCRIPT
="$ARCH_DIR/arch_host_puppet_configuration_script.sh"
88 ARCH_PUPPET_CONFIGURATION_SCRIPT
="$ARCH_DIR/arch_puppet_configuration_script.sh"
89 ARCH_PUPPET_INITIAL_CONFIGURATION
="$ARCH_DIR/puppet_variables.json"
91 trap "rm -rf $ARCH_DIR" EXIT
93 #### Base installation stage
94 python
$PYTHON_DIRECTORY/get_initial_configuration_cloud_instance.py
$instance_id > $ARCH_PUPPET_INITIAL_CONFIGURATION
95 host_address
=$(python $PYTHON_DIRECTORY/get_initial_configuration_cloud_instance.py $instance_id | jq -r '.ips.v4.ipAddress')
97 cat > $ARCH_HOST_SCRIPT <<EOF
101 sudo pacman -Sy --noconfirm arch-install-scripts
106 UUID=\$(lsblk -rno UUID "\$DEVICE")
107 PART="/dev/disk/by-uuid/\$UUID"
109 # mkfs.ext4 -F -U "\$UUID" "\$DEVICE"
110 sudo mount "\$DEVICE" /mnt
112 ##### FIXME: mkfs.ext4 would be better ####
114 if [ "\$i" = "/mnt/boot" ]; then
123 sudo pacstrap /mnt base git puppet
125 echo "\$PART / auto defaults 0 1" | sudo tee /mnt/etc/fstab
127 sudo cp /tmp/arch_install_script.sh "\$MOUNTPOINT/root/"
128 sudo cp /tmp/puppet_variables.json "\$MOUNTPOINT/root/"
130 sudo arch-chroot "\$MOUNTPOINT" /root/arch_install_script.sh
133 cat > $ARCH_INSTALL_SCRIPT <<EOF
134 CODE_PATH="/etc/puppetlabs/code"
136 git clone -b $git_branch --recursive https://git.immae.eu/perso/Immae/Projets/Puppet.git \$CODE_PATH
137 puppet apply --environment $environment --tags base_installation --test \$CODE_PATH/manifests/site.pp
138 # The password seed requires puppet to be run twice
139 puppet apply --environment $environment --tags base_installation --test \$CODE_PATH/manifests/site.pp
142 chmod a
+x
$ARCH_HOST_SCRIPT $ARCH_INSTALL_SCRIPT
146 spawn scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no $ARCH_PUPPET_INITIAL_CONFIGURATION $ARCH_HOST_SCRIPT $ARCH_INSTALL_SCRIPT $host_user@$host_address:/tmp
148 spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no $host_user@$host_address /tmp/arch_host_script.sh
152 ### Role specific stage
153 read -p "Press key when LDAP is configured" i
155 cat > $ARCH_PUPPET_CONFIGURATION_SCRIPT <<EOF
156 CODE_PATH="/etc/puppetlabs/code"
157 puppet apply --environment $environment --tags base_installation --test \$CODE_PATH/manifests/site.pp
160 cat > $ARCH_HOST_PUPPET_CONFIGURATION_SCRIPT <<EOF
163 sudo cp /tmp/arch_puppet_configuration_script.sh "\$MOUNTPOINT/root/"
165 sudo arch-chroot "\$MOUNTPOINT" /root/arch_puppet_configuration_script.sh
168 chmod a
+x
$ARCH_PUPPET_CONFIGURATION_SCRIPT $ARCH_HOST_PUPPET_CONFIGURATION_SCRIPT
172 spawn scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no $ARCH_PUPPET_CONFIGURATION_SCRIPT $ARCH_HOST_PUPPET_CONFIGURATION_SCRIPT $host_user@$host_address:/tmp
174 spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no $host_user@$host_address /tmp/arch_host_puppet_configuration_script.sh
178 ### Installation finished
179 if [ -z "$no_reboot" -a -z "$no_reboot_end" ]; then
181 python
$PYTHON_DIRECTORY/reboot_cloud_instance.py
--local "$instance_id"