# Mirror settings

# Configure part of mirroring via passed bootcmdline
d-i mirror/protocol string http
#d-i mirror/http/hostname string mirror.mirantis.com
#d-i mirror/http/directory string testing/ubuntu

d-i mirror/country string manual
d-i apt-setup/use_mirror boolean true
d-i mirror/http/proxy string

d-i apt-setup/backports boolean false
d-i base-installer/install-recommends boolean false
d-i console-setup/ask_detect boolean false
d-i console-setup/console-setup/layoutcode string us
d-i console-setup/modelcode string pc105
d-i keyboard-configuration/layout string USA
d-i keyboard-configuration/variant string USA

d-i debian-installer/locale string en_US
d-i debian-installer/language string en
d-i debian-installer/country EN

d-i pkgsel/install-language-support boolean false

d-i debian-installer/framebuffer boolean false
d-i debconf/frontend select noninteractive
#d-i base-installer/kernel/image string linux-hwe
d-i base-installer/kernel/override-image string linux-server
d-i clock-setup/utc boolean true
d-i clock-setup/utc-auto boolean true
d-i finish-install/reboot_in_progress note
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i netcfg/get_domain string local
d-i netcfg/get_hostname string ubuntu
d-i netcfg/enable boolean true
d-i netcfg/choose_interface select auto
d-i hw-detect/load_firmware boolean true

d-i partman-auto/disk string /dev/sda /dev/vda
# Use LVM for partitioning
d-i partman-auto/method string lvm

# GPT

d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt

# GPT

d-i partman-auto-lvm/guided_size string max

# If one of the disks that are going to be automatically partitioned
# contains an old LVM configuration, the user will normally receive a
# warning. Preseed this away
d-i partman-lvm/device_remove_lvm boolean true

# And the same goes for the confirmation to write the lvm partitions.
d-i partman-lvm/confirm boolean true

# Really, please don't prompt me!
d-i partman-lvm/confirm_nooverwrite boolean true

d-i partman-auto/expert_recipe string                         \
          vcp_lvm ::                                          \
              1 1 1 free                                      \
                      $gptonly{ }                             \
                      $primary{ }                             \
                      $bios_boot{ }                           \
                      method{ biosgrub }                      \
              .                                               \
              1051 2 1051 ext3                                \
                      $gptonly{ }                             \
                      $primary{ }                             \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext3 }    \
                      lable{ lable-boot }                     \
                      mountpoint{ /boot }                     \
              .                                               \
              10 10 10 ext4                                   \
                      $defaultignore{ }                       \
                      $gptonly{ }                             \
                      $primary{ }                             \
                      method{ lvm }                           \
                      vg_name{ vg0 }                          \
              .                                               \
              105 2 105 ext4                                \
                      $lvmok{ }                               \
                      in_vg{ vg0 }                            \
                      lv_name{ home }                         \
                      method{ lvm } format{ }                 \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /home }                     \
                      options/nodev{ nodev }                  \
              .                                               \
              105 2 105 ext4 ext4                            \
                      $lvmok{ }                               \
                      in_vg{ vg0 }                            \
                      lv_name{ tmp }                          \
                      method{ lvm } format{ }                 \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /tmp }                      \
                      options/nodev{ nodev }                  \
                      options/nosuid{ nosuid }                \
                      options/noexec{ noexec }                \
              .                                               \
              105 2 105 ext4                            \
                      $lvmok{ }                               \
                      in_vg{ vg0 }                            \
                      lv_name{ var_log }                      \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /var/log }                  \
                      options/noexec{ noexec }                \
              .                                               \
              315 2 315 ext4 ext4                            \
                      $lvmok{ }                               \
                      in_vg{ vg0 }                            \
                      lv_name{ var_tmp }                      \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /var/tmp }                  \
                      options/nodev{ nodev }                  \
                      options/nosuid{ nosuid }                \
                      options/noexec{ noexec }                \
              .                                               \
              105 2 105 ext4 ext4                                \
                      $lvmok{ }                               \
                      in_vg{ vg0 }                            \
                      lv_name{ var_log_audit }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /var/log/audit }            \
                      options/noexec{ noexec }                \
              .                                               \
              2154 2 65536 ext4                          \
                      $lvmok{ }                               \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
                      in_vg{ vg0 }                            \
                      lv_name{ root }                         \
              .

d-i partman-auto/choose_recipe select vcp_lvm

partman-basicfilesystems partman-basicfilesystems/no_swap boolean false

# This makes partman automatically partition without confirmation, provided
# that you told it what to do using one of the methods above.
d-i     partman-partitioning/confirm_write_new_label boolean true
d-i     partman/choose_partition select finish
d-i     partman/confirm boolean true
d-i     partman/confirm_nooverwrite boolean true

d-i pkgsel/include string openssh-server
d-i pkgsel/update-policy select none
popularity-contest popularity-contest/participate boolean false

d-i pkgsel/upgrade select safe-upgrade

d-i time/zone string UTC
d-i passwd/root-password password r00tme
d-i passwd/root-password-again password r00tme
d-i passwd/root-login boolean true
d-i passwd/make-user boolean false
d-i openssh-server/permit-root-login boolean true
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
tasksel tasksel/first multiselect minimal, ssh-server, openssh-server

# in ubuntu18.04.2 netplan detect interface like enp0s3, but in reboot-ed system,
# due init, its renames to ens3
d-i preseed/late_command string \
in-target sed -i 's/.*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config; \
in-target sed -i 's/enp0s3/ens3/g' /etc/netplan/01-netcfg.yaml;
