Init repo
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
ssh/*.pub
|
||||
5
.pre-commit-config.yaml
Normal file
5
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
repos:
|
||||
- repo: https://github.com/sirosen/fix-smartquotes
|
||||
rev: 0.1.1
|
||||
hooks:
|
||||
- id: fix-smartquotes
|
||||
58
README.md
Normal file
58
README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
 
|
||||
|
||||
# Déploiement Packer d'une machine Debian sur Proxmox
|
||||
|
||||
## Qu'est ce que Packer ?
|
||||
|
||||
> Packer est une solution opensource permettant de construire des images machine pour de multiples plateformes cloud. Il est utilisé dans une approche « d'infrastructure as code » afin de pouvoir maintenir facilement les logiciels déployés sur les serveurs. - Syloe
|
||||
|
||||
L'objectif de ce dépôt est de déployer une template de machine virtuelle Debian pré-configurée. *(Authentification par clé SSH, ou installation d'un agent de supervision à la fin de l'installation)*
|
||||
|
||||
## Démarrer le projet
|
||||
|
||||
Pré-requis:
|
||||
- [j2cli](https://pypi.org/project/j2cli/)
|
||||
- [Packer](https://packer.io)
|
||||
|
||||
Editez le fichier `build.sh` pour y mettre les identifiants de votre Proxmox :
|
||||
```bash
|
||||
export proxmox_url="https://IP_PROXMOX:8006/api2/json"
|
||||
export proxmox_node="NOM_NOEUD"
|
||||
export proxmox_username="root@pam" # packer@pve si vous créez un utilisateur "packer".
|
||||
export proxmox_password="Password"
|
||||
```
|
||||
*Pensez à vérifier que les noms des pools de stockages sont les mêmes que vous (local, local-zfs)*.
|
||||
|
||||
Il sera **obligatoire** de fournir une clé ssh qui sera ajoutée à l'utilisateur *root* de la machine.
|
||||
```bash
|
||||
export vm_keys=$(echo "$(cat ~/.ssh/id_ed25519.pub)")
|
||||
```
|
||||
|
||||
Il est possible d'ajouter plusieurs clés de cette manière :
|
||||
```bash
|
||||
export vm_keys=$(echo "$(cat ./KeyDEPLOY.id_rsa.pub)\n$(cat ./KeyINFRA.id_rsa.pub)\n$(cat ~/.ssh/id_rsa.pub)")
|
||||
```
|
||||
Valider la config :
|
||||
```bash
|
||||
packer validate *.pkr.hcl
|
||||
```
|
||||
|
||||
Commande de démarrage :
|
||||
```bash
|
||||
source ./build.sh
|
||||
```
|
||||
|
||||
# TroubleShooting
|
||||
## No matching host key type found
|
||||
Si vous êtes sur Ubuntu, vous devrez ajouter le ssh-rsa en algorithme de chiffrement compatible.
|
||||
Voici l'erreur sur laquelle vous tomberez :
|
||||
```
|
||||
proxmox: fatal: [default]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Unable to negotiate with 127.0.0.1 port 32985: no matching host key type found. Their offer: ssh-rsa", "unreachable": true}
|
||||
```
|
||||
|
||||
La solution est d'accepter cet algorithme dans votre fichier `~/.ssh/config`.
|
||||
```
|
||||
Host 127.0.0.1
|
||||
HostKeyAlgorithms +ssh-rsa
|
||||
PubkeyAcceptedAlgorithms +ssh-rsa
|
||||
```
|
||||
19
ansible/add-ssh.yml
Executable file
19
ansible/add-ssh.yml
Executable file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
- hosts: all
|
||||
gather_facts: true
|
||||
|
||||
vars:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
tasks:
|
||||
|
||||
- name: Show keys to add
|
||||
debug:
|
||||
msg: "{{ item }}"
|
||||
loop: "{{ lookup('fileglob', '../ssh/*.pub', wantlist=True) }}"
|
||||
|
||||
- name: Set authorized key took from file
|
||||
authorized_key:
|
||||
user: root
|
||||
state: present
|
||||
key: "{{ lookup('pipe','cat ../ssh/*.pub') }}"
|
||||
|
||||
51
ansible/install-docker.yml
Executable file
51
ansible/install-docker.yml
Executable file
@@ -0,0 +1,51 @@
|
||||
- hosts: all
|
||||
remote_user: deploy
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: sudo
|
||||
|
||||
tasks:
|
||||
- name: Update all packages to the latest version
|
||||
apt:
|
||||
upgrade: dist
|
||||
autoremove: true
|
||||
become: true
|
||||
|
||||
- name: Ensure old versions of Docker are not installed.
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- docker
|
||||
- docker-engine
|
||||
- docker.io
|
||||
- containerd
|
||||
- runc
|
||||
state: absent
|
||||
- name: Ensure dependencies are installed.
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- apt-transport-https
|
||||
- ca-certificates
|
||||
- curl
|
||||
- gnupg
|
||||
- lsb-release
|
||||
state: present
|
||||
|
||||
- name: Add Docker apt key.
|
||||
ansible.builtin.apt_key:
|
||||
url: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg
|
||||
id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
|
||||
state: present
|
||||
|
||||
- name: Add Docker repository.
|
||||
ansible.builtin.apt_repository:
|
||||
repo: deb [arch=amd64] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
- name: Install docker
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- docker-ce
|
||||
- docker-ce-cli
|
||||
- containerd.io
|
||||
state: present
|
||||
149
ansible/install-tools.yml
Executable file
149
ansible/install-tools.yml
Executable file
@@ -0,0 +1,149 @@
|
||||
---
|
||||
- hosts: all
|
||||
gather_facts: true
|
||||
vars:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
|
||||
tasks:
|
||||
- name: "Install packages"
|
||||
apt:
|
||||
state: present
|
||||
name:
|
||||
- vim
|
||||
- exa
|
||||
- grc
|
||||
- most
|
||||
- highlight
|
||||
- source-highlight
|
||||
- python3-pygments
|
||||
- gawk
|
||||
- python3-apt
|
||||
- tmux
|
||||
- htop
|
||||
- fdisk
|
||||
|
||||
- name: configure .vimrc
|
||||
copy:
|
||||
content: 'set mouse=r'
|
||||
dest: "/root/.vimrc"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
|
||||
- name: config /etc/vim/vimrc syntax on
|
||||
lineinfile:
|
||||
path: /etc/vim/vimrc
|
||||
regexp: '^"syntax on'
|
||||
line: syntax on
|
||||
|
||||
- name: config /etc/vim/vimrc set background=dark
|
||||
lineinfile:
|
||||
path: /etc/vim/vimrc
|
||||
regexp: '^"set background=dark'
|
||||
line: set background=dark
|
||||
|
||||
- name: config .bashrc add cat color alias
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
line: 'alias cat="highlight -O ansi --force --syntax=bash"'
|
||||
create: no
|
||||
|
||||
- name: config .bashrc set alias ll
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
regexp: '^# alias ll(.*)'
|
||||
line: 'alias ll\1'
|
||||
backrefs: yes
|
||||
|
||||
- name: config .bashrc set alias ls
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
regexp: '^# alias ls(.*)'
|
||||
line: 'alias ls\1'
|
||||
backrefs: yes
|
||||
|
||||
- name: config .bashrc set alias l
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
regexp: '^# alias l(.*)'
|
||||
line: 'alias l\1'
|
||||
backrefs: yes
|
||||
|
||||
- name: config .bashrc set export LSOPTIONS
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
regexp: '^# export LS_OPTIONS(.*)'
|
||||
line: 'export LS_OPTIONS\1'
|
||||
backrefs: yes
|
||||
|
||||
- name: config .bashrc set eval OPTIONS
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
regexp: '^# eval(.*)'
|
||||
line: '# eval\1'
|
||||
backrefs: yes
|
||||
|
||||
|
||||
- name: config .bashrc add vim alias
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
line: "alias vi='vim'"
|
||||
create: no
|
||||
|
||||
- name: config .bashrc add export LESS Color1
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
line: 'export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"'
|
||||
create: no
|
||||
|
||||
- name: config .bashrc add export LESS Color2
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
line: "export LESS=' -R'"
|
||||
create: no
|
||||
|
||||
- name: config .bashrc add export pager
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
line: 'export PAGER="most"'
|
||||
create: no
|
||||
|
||||
- name: config .bashrc alias grep color
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
line: "alias grep='grep --color=auto'"
|
||||
create: no
|
||||
|
||||
- name: configure yaml color syntax
|
||||
copy:
|
||||
dest: "/usr/share/source-highlight/yaml.lang"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
content: |
|
||||
include "script_comment.lang"
|
||||
include "number.lang"
|
||||
keyword = "true|false|null"
|
||||
section start '^---'
|
||||
(symbol,name,symbol) = `(^[[:blank:]-]*)([[:alnum:]_]+)(:)`
|
||||
symbol = '^[[:blank:]]*-'
|
||||
string delim "\"" "\"" escape "\\"
|
||||
string delim "'" "'" escape "\\"
|
||||
|
||||
- name: config lang.map yaml
|
||||
lineinfile:
|
||||
path: /usr/share/source-highlight/lang.map
|
||||
line: 'yaml = yaml.lang'
|
||||
create: no
|
||||
|
||||
- name: config lang.map yaml
|
||||
lineinfile:
|
||||
path: /usr/share/source-highlight/lang.map
|
||||
line: 'yml = yaml.lang'
|
||||
create: no
|
||||
|
||||
- name: config .bashrc set Prompt
|
||||
lineinfile:
|
||||
path: /root/.bashrc
|
||||
line: "export PS1='\\[\\033[1;31m\\]\\u\\[\\033[0;37m\\]@\\[\\033[1;32m\\]\\h\\[\\033[00m\\]:\\[\\033[1;34m\\]\\w\\[\\033[00m\\] (\\d - \\t)\\n\\$ '"
|
||||
create: no
|
||||
5
ansible/provisioning.yml
Executable file
5
ansible/provisioning.yml
Executable file
@@ -0,0 +1,5 @@
|
||||
- import_playbook: install-tools.yml
|
||||
# - import_playbook: add-ssh.yml
|
||||
- import_playbook: postinstall-vm.yml
|
||||
- import_playbook: install-docker.yml
|
||||
|
||||
52
build.sh
Executable file
52
build.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
packerfile="debian-amd64-proxmox.pkr.hcl"
|
||||
|
||||
# Paramètres du Proxmox
|
||||
export proxmox_url="https://192.168.1.57:8006/api2/json"
|
||||
export proxmox_node="BETELGEUSE"
|
||||
export proxmox_username="packer@pve"
|
||||
export proxmox_password="Koc89qo!R2UfXR*t" # Il est préférable d'utiliser un utilisateur dédié à Proxmox
|
||||
export proxmox_vm_storage="Haumea"
|
||||
export proxmox_iso_url="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.2.0-amd64-netinst.iso"
|
||||
export proxmox_iso_checksum="sha256:677c4d57aa034dc192b5191870141057574c1b05df2b9569c0ee08aa4e32125d"
|
||||
export proxmox_iso_storage="local"
|
||||
export proxmox_network="vmbr0"
|
||||
|
||||
# Ressources attribuées à la VM
|
||||
export vm_id="9000"
|
||||
export vm_name="debian-13-tf"
|
||||
export template_description="VM debian"
|
||||
export vm_default_user="root"
|
||||
export vm_cpu="4"
|
||||
export vm_disk="16G"
|
||||
export vm_memory="2048"
|
||||
|
||||
# Paramètres de la VM Template
|
||||
export prefix_disk="vd"
|
||||
export ssh_username="root"
|
||||
export ssh_password="8s6pcD7hdIwbaALrBqtPp7WVAmVdHtls1ORij1BcOkuIdxpCXrKA5O2tejKmHkaZ"
|
||||
export userdeploy_password="8s6pcD7hdIwbaALrBqtPp7WVAmVdHtls1ORij1BcOkuIdxpCXrKA5O2tejKmHkaZ"
|
||||
|
||||
export vm_keys=$(echo "$(cat ~/.ssh/id_ed25519.pub)")
|
||||
#export vm_keys=$(echo "$(cat ./KeyDEPLOY.id_rsa.pub)\n$(cat ./KeyINFRA.id_rsa.pub)\n$(cat ~/.ssh/id_rsa.pub)")
|
||||
|
||||
# set variables
|
||||
python3 << 'EOF'
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
import os
|
||||
|
||||
env = Environment(loader=FileSystemLoader('.'))
|
||||
template = env.get_template('http/preseed.cfg.j2')
|
||||
output = template.render(os.environ)
|
||||
|
||||
with open('http/preseed.cfg', 'w') as f:
|
||||
f.write(output)
|
||||
EOF
|
||||
|
||||
#PACKER_LOG=1 packer build $packerfile
|
||||
packer init $packerfile
|
||||
packer build $packerfile
|
||||
|
||||
rm -f http/preseed.cfg
|
||||
|
||||
153
debian-amd64-proxmox.pkr.hcl
Normal file
153
debian-amd64-proxmox.pkr.hcl
Normal file
@@ -0,0 +1,153 @@
|
||||
packer {
|
||||
required_plugins {
|
||||
proxmox = {
|
||||
version = ">= 1.1.2"
|
||||
source = "github.com/hashicorp/proxmox"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
variable "proxmox_iso_checksum" {
|
||||
type = string
|
||||
default = "${env("proxmox_iso_checksum")}"
|
||||
}
|
||||
|
||||
variable "proxmox_iso_storage" {
|
||||
type = string
|
||||
default = "${env("proxmox_iso_storage")}"
|
||||
}
|
||||
|
||||
variable "proxmox_iso_url" {
|
||||
type = string
|
||||
default = "${env("proxmox_iso_url")}"
|
||||
}
|
||||
|
||||
variable "proxmox_network" {
|
||||
type = string
|
||||
default = "${env("proxmox_network")}"
|
||||
}
|
||||
|
||||
variable "proxmox_node" {
|
||||
type = string
|
||||
default = "${env("proxmox_node")}"
|
||||
}
|
||||
|
||||
variable "proxmox_password" {
|
||||
type = string
|
||||
default = "${env("proxmox_password")}"
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "proxmox_storage" {
|
||||
type = string
|
||||
default = "${env("proxmox_storage")}"
|
||||
}
|
||||
|
||||
variable "proxmox_url" {
|
||||
type = string
|
||||
default = "${env("proxmox_url")}"
|
||||
}
|
||||
|
||||
variable "proxmox_username" {
|
||||
type = string
|
||||
default = "${env("proxmox_username")}"
|
||||
}
|
||||
|
||||
variable "proxmox_vm_storage" {
|
||||
type = string
|
||||
default = "${env("proxmox_vm_storage")}"
|
||||
}
|
||||
|
||||
variable "ssh_password" {
|
||||
type = string
|
||||
default = "${env("ssh_password")}"
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "ssh_username" {
|
||||
type = string
|
||||
default = "root"
|
||||
}
|
||||
|
||||
variable "template_description" {
|
||||
type = string
|
||||
default = "${env("template_description")}"
|
||||
}
|
||||
|
||||
variable "vm_default_user" {
|
||||
type = string
|
||||
default = "${env("vm_default_user")}"
|
||||
}
|
||||
|
||||
variable "vm_disk" {
|
||||
type = string
|
||||
default = "${env("vm_disk")}"
|
||||
}
|
||||
|
||||
variable "vm_id" {
|
||||
type = number
|
||||
default = 9000
|
||||
}
|
||||
|
||||
variable "vm_memory" {
|
||||
type = number
|
||||
default = 2048
|
||||
}
|
||||
|
||||
variable "vm_cpu" {
|
||||
type = number
|
||||
default = 4
|
||||
}
|
||||
|
||||
variable "vm_name" {
|
||||
type = string
|
||||
default = "${env("vm_name")}"
|
||||
}
|
||||
|
||||
source "proxmox" "build-template" {
|
||||
boot_command = ["<esc><wait>", "auto <wait>", "console-keymaps-at/keymap=fr <wait>", "console-setup/ask_detect=false <wait>", "debconf/frontend=noninteractive <wait>", "debian-installer=fr_FR <wait>", "fb=false <wait>", "install <wait>", "packer_host={{ .HTTPIP }} <wait>", "packer_port={{ .HTTPPort }} <wait>", "kbd-chooser/method=fr <wait>", "keyboard-configuration/xkb-keymap=fr <wait>", "locale=fr_FR <wait>", "netcfg/get_hostname=${var.vm_name} <wait>", "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg <wait>", "<enter><wait>"]
|
||||
boot_wait = "10s"
|
||||
disks {
|
||||
disk_size = "${var.vm_disk}"
|
||||
format = "raw"
|
||||
storage_pool = "${var.proxmox_vm_storage}"
|
||||
storage_pool_type = "directory"
|
||||
type = "virtio"
|
||||
}
|
||||
http_directory = "http"
|
||||
insecure_skip_tls_verify = true
|
||||
iso_checksum = "${var.proxmox_iso_checksum}"
|
||||
iso_storage_pool = "${var.proxmox_iso_storage}"
|
||||
iso_url = "${var.proxmox_iso_url}"
|
||||
network_adapters {
|
||||
bridge = "${var.proxmox_network}"
|
||||
model = "virtio"
|
||||
}
|
||||
node = "${var.proxmox_node}"
|
||||
os = "l26"
|
||||
password = "${var.proxmox_password}"
|
||||
proxmox_url = "${var.proxmox_url}"
|
||||
qemu_agent = "true"
|
||||
ssh_password = "${var.ssh_password}"
|
||||
ssh_timeout = "30m"
|
||||
ssh_username = "${var.ssh_username}"
|
||||
template_description = "${var.template_description}"
|
||||
unmount_iso = true
|
||||
username = "${var.proxmox_username}"
|
||||
vm_name = "${var.vm_name}"
|
||||
cores = var.vm_cpu
|
||||
memory = var.vm_memory
|
||||
vm_id = var.vm_id
|
||||
}
|
||||
|
||||
build {
|
||||
description = "Debian 13 (Bookworm)"
|
||||
|
||||
sources = ["source.proxmox.build-template"]
|
||||
|
||||
provisioner "ansible" {
|
||||
ansible_env_vars = ["ANSIBLE_FORCE_COLOR=1", "ANSIBLE_HOST_KEY_CHECKING=False"]
|
||||
playbook_file = "ansible/provisioning.yml"
|
||||
}
|
||||
|
||||
}
|
||||
89
http/preseed.cfg.j2
Executable file
89
http/preseed.cfg.j2
Executable file
@@ -0,0 +1,89 @@
|
||||
debconf debconf/language string fr
|
||||
d-i debconf/language string fr
|
||||
d-i debian-installer/language string fr
|
||||
d-i debian-installer/locale string fr_FR.UTF-8
|
||||
d-i debian-installer/splash boolean false
|
||||
d-i debian-installer/language string fr
|
||||
d-i debian-installer/country string FR
|
||||
d-i console-setup/ask_detect boolean false
|
||||
d-i console-setup/layoutcode string fr
|
||||
d-i keyboard-configuration/xkb-keymap select fr
|
||||
d-i keyboard-configuration/layoutcode string fr
|
||||
d-i preseed/early_command string anna-install parted-udeb cryptsetup-udeb crypto-dm-modules lvm2-udeb mdadm-udeb md-modules
|
||||
d-i mirror/country string manual
|
||||
d-i mirror/http/hostname string deb.debian.org
|
||||
d-i mirror/http/directory string /debian
|
||||
d-i mirror/http/proxy string
|
||||
d-i netcfg/get_hostname string {{ vm_name }}
|
||||
d-i netcfg/choose_interface select auto
|
||||
d-i netcfg/get_ipaddress string 192.168.1.90
|
||||
d-i netcfg/get_netmask string 255.255.255.0
|
||||
d-i netcfg/get_gateway string 192.168.1.254
|
||||
d-i netcfg/get_nameservers string 192.168.1.25 9.9.9.9
|
||||
d-i netcfg/confirm_static boolean true
|
||||
d-i netcfg/get_hostname string debian-13-tf
|
||||
d-i netcfg/get_domain string local
|
||||
d-i netcfg/wireless_wep string
|
||||
d-i apt-setup/non-free boolean true
|
||||
d-i apt-setup/contrib boolean true
|
||||
d-i apt-setup/use_mirror boolean true
|
||||
d-i partman-auto/disk string /dev/{{ prefix_disk }}a
|
||||
d-i partman-auto/method string lvm
|
||||
d-i partman-lvm/device_remove_lvm boolean true
|
||||
d-i partman-lvm/device_remove_lvm_span boolean true
|
||||
d-i partman-auto/purge_lvm_from_device boolean true
|
||||
d-i partman-auto-lvm/new_vg_name string vg00
|
||||
d-i partman-auto/choose_recipe select boot-root
|
||||
d-i partman-lvm/confirm boolean true
|
||||
d-i partman-lvm/confirm_nooverwrite boolean true
|
||||
d-i partman/confirm_write_new_label boolean true
|
||||
d-i partman/choose_partition select Finish partitioning and write changes to disk
|
||||
d-i partman/confirm boolean true
|
||||
d-i partman/confirm_nooverwrite boolean true
|
||||
d-i partman/mount_style select uuid
|
||||
d-i clock-setup/utc boolean true
|
||||
d-i clock-setup/ntp boolean true
|
||||
d-i clock-setup/ntp-server string ntp.ubuntu.com
|
||||
d-i time/zone string Europe/Paris
|
||||
d-i passwd/root-login boolean true
|
||||
d-i passwd/root-password password {{ ssh_password }}
|
||||
d-i passwd/root-password-again password {{ ssh_password }}
|
||||
d-i passwd/make-user boolean true
|
||||
d-i passwd/user-fullname string ansible deploy
|
||||
d-i passwd/username string deploy
|
||||
d-i passwd/user-password password {{ userdeploy_password }}
|
||||
d-i passwd/user-password-again password {{ userdeploy_password }}
|
||||
d-i grub-installer/only_debian boolean true
|
||||
d-i grub-installer/with_other_os boolean false
|
||||
d-i grub-installer/choose_bootdev string /dev/{{ prefix_disk }}a
|
||||
d-i partman/mount_style select uuid
|
||||
d-i clock-setup/utc boolean true
|
||||
d-i clock-setup/ntp boolean true
|
||||
d-i clock-setup/ntp-server string ntp.ubuntu.com
|
||||
d-i time/zone string Europe/Paris
|
||||
d-i pkgsel/upgrade select safe-upgrade
|
||||
d-i pkgsel/language-packs multiselect
|
||||
d-i pkgsel/update-policy select none
|
||||
d-i pkgsel/updatedb boolean true
|
||||
tasksel tasksel/first multiselect standard, openssh-server
|
||||
d-i grub-installer/only_debian boolean true
|
||||
d-i finish-install/keep-consoles boolean true
|
||||
d-i finish-install/reboot_in_progress note
|
||||
d-i cdrom-detect/eject boolean true
|
||||
d-i debian-installer/exit/halt boolean false
|
||||
d-i debian-installer/exit/poweroff boolean false
|
||||
|
||||
d-i ebian-installer/add-kernel-opts string net.ifnames=0 biosdevname=0
|
||||
|
||||
d-i pkgsel/include string vim openssh-server sudo htop iotop rsync mc curl python3 python3-pip python3-apt dnsutils net-tools net-tools gnupg2 wget hostname ansible qemu-guest-agent parted
|
||||
|
||||
d-i preseed/late_command string \
|
||||
in-target sed -i '/^#PermitRootLogin/c\PermitRootLogin yes' /etc/ssh/sshd_config; \
|
||||
in-target mkdir -p /root/.ssh; \
|
||||
in-target /bin/sh -c "echo '{{ vm_keys }}' > /root/.ssh/authorized_keys"; \
|
||||
in-target chmod -R go-rwx /root/.ssh/authorized_keys; \
|
||||
in-target sed -i 's/# alias ll/alias ll/g' /root/.bashrc; \
|
||||
in-target sed -i 's/# alias ls/alias ls/g' /root/.bashrc; \
|
||||
in-target sed -i 's/# alias l/alias l/g' /root/.bashrc; \
|
||||
in-target sed -i 's/# export LS_OPTIONS/export LS_OPTIONS/g' /root/.bashrc; \
|
||||
in-target sed -i 's/# eval/eval/g' /root/.bashrc;
|
||||
Reference in New Issue
Block a user