Added building Ubuntu 20.04 template

This commit is contained in:
2024-09-22 20:13:32 +03:00
parent 36aa9106ea
commit 09aa511791
35 changed files with 629 additions and 123 deletions

View File

@ -0,0 +1 @@
---

View File

@ -0,0 +1,116 @@
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# by me
shopt -s cdspell
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=2000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
#alias fgrep='fgrep --color=auto'
#alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi

View File

@ -0,0 +1,143 @@
[Midnight-Commander]
verbose=true
shell_patterns=true
auto_save_setup=false
preallocate_space=false
auto_menu=false
use_internal_view=true
use_internal_edit=true
clear_before_exec=true
confirm_delete=true
confirm_overwrite=true
confirm_execute=false
confirm_history_cleanup=true
confirm_exit=false
confirm_directory_hotlist_delete=false
confirm_view_dir=false
safe_delete=false
safe_overwrite=false
use_8th_bit_as_meta=false
mouse_move_pages_viewer=true
mouse_close_dialog=false
fast_refresh=false
drop_menus=false
wrap_mode=true
old_esc_mode=true
cd_symlinks=true
show_all_if_ambiguous=false
use_file_to_guess_type=true
alternate_plus_minus=false
only_leading_plus_minus=true
show_output_starts_shell=false
xtree_mode=false
file_op_compute_totals=true
classic_progressbar=true
use_netrc=true
ftpfs_always_use_proxy=false
ftpfs_use_passive_connections=true
ftpfs_use_passive_connections_over_proxy=false
ftpfs_use_unix_list_options=true
ftpfs_first_cd_then_ls=true
ignore_ftp_chattr_errors=true
editor_fill_tabs_with_spaces=false
editor_return_does_auto_indent=false
editor_backspace_through_tabs=false
editor_fake_half_tabs=true
editor_option_save_position=true
editor_option_auto_para_formatting=false
editor_option_typewriter_wrap=false
editor_edit_confirm_save=true
editor_syntax_highlighting=true
editor_persistent_selections=true
editor_drop_selection_on_copy=true
editor_cursor_beyond_eol=false
editor_cursor_after_inserted_block=false
editor_visible_tabs=true
editor_visible_spaces=true
editor_line_state=false
editor_simple_statusbar=false
editor_check_new_line=false
editor_show_right_margin=false
editor_group_undo=true
editor_state_full_filename=true
editor_ask_filename_before_edit=false
nice_rotating_dash=true
mcview_remember_file_position=false
auto_fill_mkdir_name=true
copymove_persistent_attr=true
pause_after_run=0
mouse_repeat_rate=100
double_click_speed=250
old_esc_mode_timeout=1000000
max_dirt_limit=10
num_history_items_recorded=60
vfs_timeout=60
ftpfs_directory_timeout=900
ftpfs_retry_seconds=30
fish_directory_timeout=900
editor_tab_spacing=8
editor_word_wrap_line_length=72
editor_option_save_mode=0
editor_backup_extension=~
editor_filesize_threshold=64M
editor_stop_format_chars=-+*\\,.;:&>
mcview_eof=
skin=default
[Layout]
message_visible=0
keybar_visible=1
xterm_title=1
output_lines=0
command_prompt=1
menubar_visible=1
free_space=1
horizontal_split=0
vertical_equal=1
left_panel_size=66
horizontal_equal=1
top_panel_size=1
[Misc]
timeformat_recent=%b %e %H:%M
timeformat_old=%b %e %Y
ftp_proxy_host=gate
ftpfs_password=anonymous@
display_codepage=UTF-8
source_codepage=Other_8_bit
autodetect_codeset=
spell_language=en
clipboard_store=
clipboard_paste=
[Colors]
base_color=
xterm=
color_terminals=
[Panels]
show_mini_info=true
kilobyte_si=false
mix_all_files=false
show_backups=true
show_dot_files=true
fast_reload=false
fast_reload_msg_shown=false
mark_moves_down=true
reverse_files_only=true
auto_save_setup_panels=false
navigate_with_arrows=false
panel_scroll_pages=true
panel_scroll_center=false
mouse_move_pages=true
filetype_mode=true
permission_mode=false
torben_fj_mode=false
quick_search_mode=2
select_flags=7
[Panelize]
Find *.orig after patching=find . -name \\*.orig -print
Find SUID and SGID programs=find . \\( \\( -perm -04000 -a -perm /011 \\) -o \\( -perm -02000 -a -perm /01 \\) \\) -print
Find rejects after patching=find . -name \\*.rej -print
Modified git files=git ls-files --modified

View File

@ -0,0 +1,35 @@
[New Left Panel]
display=listing
reverse=false
case_sensitive=false
exec_first=false
sort_order=name
list_mode=full
brief_cols=2
user_format=half type name | size | perm
user_status0=half type name | size | perm
user_status1=half type name | size | perm
user_status2=half type name | size | perm
user_status3=half type name | size | perm
user_mini_status=false
list_format=full
[New Right Panel]
display=listing
reverse=false
case_sensitive=false
exec_first=false
sort_order=name
list_mode=full
brief_cols=2
user_format=half type name | size | perm
user_status0=half type name | size | perm
user_status1=half type name | size | perm
user_status2=half type name | size | perm
user_status3=half type name | size | perm
user_mini_status=false
list_format=full
[Dirs]
current_is_left=false
other_dir=/

View File

@ -0,0 +1,85 @@
#!/bin/bash
echo "First start VM"
echo "Resize root partition..."
parted /dev/sda resizepart 2 100%
pvresize /dev/sda2
lvextend -y -f -l +100%FREE /dev/vg01/root
resize2fs /dev/vg01/root
echo "Generete new machine-id"
rm /etc/machine-id
systemd-machine-id-setup
echo "Recreate new SSHd keys"
rm -f /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server --force -f noninteractive
echo "Make right /etc/network/interfaces"
if [ -z "$(cat /etc/network/interfaces | grep "inet dhcp")" ]; then
# No DHCP
iface=$(cat /etc/network/interfaces | grep "iface" | sed '/loopback/d' | awk '{print $2}')
ip_add=$(cat /etc/network/interfaces | grep "address" | awk '{print $2}')
ip_netm=$(cat /etc/network/interfaces | grep "netmask" | awk '{print $2}')
ip_gw=$(cat /etc/network/interfaces | grep "gateway" | awk '{print $2}')
echo "
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto $iface
allow-hotplug $iface
iface $iface inet static
address $ip_add
netmask $ip_netm
gateway $ip_gw
" > /etc/network/interfaces
echo "Create hostname and hosts"
ipaddr=$(ip a | grep "scope global" | awk '{print $2}' | sed -r 's/\/.+//')
host_name=$(hostname -f)
host_shot_name=$(hostname -s)
echo $host_name > /etc/hostname
echo "127.0.0.1 localhost" > /etc/hosts
echo "$ipaddr $host_name $host_shot_name" >> /etc/hosts
else
# Yes DHCP
iface=$(cat /etc/network/interfaces | grep "iface" | sed '/loopback/d' | awk '{print $2}')
echo "
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto $iface
allow-hotplug $iface
iface $iface inet dhcp
" > /etc/network/interfaces
fi
rm -f /etc/network/*.BeforeVMwareCustomization
sed '/^\/root\/first_start.sh &/d' -i /etc/rc.local
rm /root/first_start.sh
sleep 5
echo "Clean all logs"
find /var/log -type f,l | xargs rm -f
reboot

View File

@ -0,0 +1,85 @@
#!/bin/bash
echo "First start VM"
echo "Resize root partition..."
parted /dev/sda resizepart 2 100%
pvresize /dev/sda2
lvextend -y -f -l +100%FREE /dev/vg01/root
resize2fs /dev/vg01/root
echo "Generete new machine-id"
rm /etc/machine-id
systemd-machine-id-setup
echo "Recreate new SSHd keys"
rm -f /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server --force -f noninteractive
echo "Make right /etc/network/interfaces"
rm -rf /etc/netplan/*
iface=`ip a | grep 'global' | awk {'print $7'}`
ip_add=`ifconfig | grep -E "inet(.*)broadcast" | awk {'print $2'}`
ip_netm=`ifconfig | grep -E "inet(.*)broadcast" | awk {'print $4'}`
ip_gw=`ip r l | grep 'default' | awk {'print $3'}`
echo "
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto $iface
allow-hotplug $iface
iface $iface inet static
address $ip_add
netmask $ip_netm
gateway $ip_gw
" > /etc/network/interfaces
echo "Create hostname and hosts"
ipaddr=$(ip a | grep "scope global" | awk '{print $2}' | sed -r 's/\/.+//')
host_name=$(hostname -f)
host_shot_name=$(hostname -s)
echo $host_name > /etc/hostname
echo "127.0.0.1 localhost" > /etc/hosts
echo "$ipaddr $host_name $host_shot_name" >> /etc/hosts
systemctl enable networking.service
systemctl disable systemd-networkd-wait-online.service
systemctl disable systemd-networkd.service
systemctl disable multipathd.service
systemctl disable ModemManager.service
apt -y purge cloud-init unattended-upgrades systemd-resolved snapd netplan.io
rm -rf /etc/netplan/
rm -rf /usr/share/netplan/
rm -rf ~/snap
rm -rf /var/snap
rm -rf /var/lib/snapd
rm -f /etc/network/*.BeforeVMwareCustomization
sed '/^#/d' -i /etc/resolv.conf
sed '/^\/root\/first_start.sh &/d' -i /etc/rc.local
rm /root/first_start.sh
sleep 5
echo "Clean all logs"
find /var/log -type f,l | xargs rm -f
reboot

View File

@ -0,0 +1,11 @@
---
- name: Update config grub on Debian like
shell: "update-grub"
when: ansible_os_family == "Debian"
- name: Reboot the server from shell
shell: 'shutdown -r now "Reboot the server by Ansible"'
# ignore_errors: true
async: 30
poll: 0

View File

@ -0,0 +1,50 @@
---
- include_vars: vars/os-creds-admins.yml
- name: Set host facts group for use sudo
set_fact: os_group_for_sudo="sudo"
when: ansible_os_family == "Debian"
- name: Set host facts group for use sudo
set_fact: os_group_for_sudo="wheel"
when: ansible_os_family == "RedHat"
- name: Add admins users
user:
name: "{{ item.username }}"
shell: /bin/bash
groups: "{{ os_group_for_sudo }}"
password: "{{ item.password }}"
comment: "{{ item.comment }}"
append: yes
loop: "{{ os_creds_sysadmins }}"
no_log: true
- name: Change perm for home dir 0700
file:
path: /home/{{ item.username }}
state: directory
mode: '0700'
loop: "{{ os_creds_sysadmins }}"
no_log: true
- name: Add SSH keys for admins users
authorized_key:
user: "{{ item.username }}"
state: present
key: "{{ item.ssh_key }}"
loop: "{{ os_creds_sysadmins }}"
no_log: true
- name: Add admins users to /etc/sudoers.d/
copy:
dest: "/etc/sudoers.d/{{ item.username }}"
content: |
{{ item.username }} ALL=(ALL) NOPASSWD:ALL
owner: root
group: root
mode: '0444'
loop: "{{ os_creds_sysadmins }}"
no_log: true

View File

@ -0,0 +1,12 @@
---
- name: Disable IPv6
block:
- name: Add to /etc/default/grub option ipv6.disable=1
ansible.builtin.lineinfile:
path: /etc/default/grub
regexp: '^GRUB_CMDLINE_LINUX="'
line: GRUB_CMDLINE_LINUX="ipv6.disable=1"
notify:
- Update config grub on Debian like
when: ansible_os_family == "Debian"

View File

@ -0,0 +1,19 @@
---
#- name: Ping
# import_tasks: ping.yml
- name: Upload sctipts for first starting system
import_tasks: scripts-first-start.yml
- name: IPv6 disable
import_tasks: ipv6-disable.yml
- name: OS basic config
import_tasks: os-config.yml
- name: Add admins users
import_tasks: add-users-admins.yml
- name: Install basic pkg
import_tasks: pkg-install.yml

View File

@ -0,0 +1,50 @@
---
- name: Change default for add user create params perm 755 to 700 (Debian 12)
block:
- name: Edit options in /etc/login.defs (Debian 12)
lineinfile:
regexp: "(^#HOME_MODE)|(^HOME_MODE)"
path: /etc/login.defs
line: "HOME_MODE 0700"
when: (ansible_os_family == "Debian" and ansible_distribution_major_version == "12") or ( ansible_distribution == "Ubuntu" and ansible_distribution_major_version == "24")
- name: Make dir for mc in /etc/skel dir
file:
path: "{{ item }}"
state: directory
owner: root
group: root
mode: '0700'
loop:
- /etc/skel/.config/mc
- /root/.config/mc
- name: Copy default files for skeleton
copy:
src: "files/{{ item }}"
dest: "/etc/skel/{{ item }}"
loop:
- .bashrc
- .config/mc/ini
- .config/mc/panels.ini
- name: Copy default config file for root
copy:
src: "files/{{ item }}"
dest: "/root/{{ item }}"
loop:
- .bashrc
- .config/mc/ini
- .config/mc/panels.ini
- name: Make welcome massage
copy:
dest: /etc/update-motd.d/99-custom
mode: '0755'
content: |
#!/bin/bash
#
echo; hostname -f | sed 's/.*/\U&/' | sed 's/^/=> /' | sed 's/$/ <=/' | toilet -f term -F border --gay

View File

@ -0,0 +1,8 @@
---
- name: Prepare default config for OS type of Debian
block:
- name: Debug
debug:
msg: '{{ role_path }}'
when: ansible_os_family == "Debian"

View File

@ -0,0 +1,25 @@
---
- include_vars: os-pkg-list.yml
- name: Install of packages for Debian
block:
- name: Install from list of packages for Debian
apt:
state: latest
pkg: "{{ debian_install_pkg_list }}"
- name: Run "apt-get clean" for Debian
apt:
clean: yes
when: ansible_distribution == "Debian"
- name: Install of packages for Ubuntu
block:
- name: Install from list of packages for Ubuntu
apt:
state: latest
pkg: "{{ ubuntu_install_pkg_list }}"
- name: Run "apt-get clean" for Ubuntu
apt:
clean: yes
when: ansible_distribution == "Ubuntu"

View File

@ -0,0 +1,40 @@
---
- name: Prepare scripts for custom VMs (First start)
block:
- name: Copy files to remote system Debian
copy:
src: files/first_start_debian.sh
dest: /root/first_start.sh
owner: root
group: root
mode: '0644'
- name: Edit /etc/rc.local
lineinfile:
path: /etc/rc.local
regexp: '^(exit 0.*)$'
line: |
chmod 755 /root/first_start.sh | sed 's/^chmod 755 \/root\/first_start.sh.*/\/root\/first_start.sh \&/' -i /etc/rc.local &
exit 0
when: ansible_distribution == "Debian"
- name: Prepare scripts for custom VMs (First start)
block:
- name: Copy files to remote system Ubuntu
copy:
src: files/first_start_ubuntu.sh
dest: /root/first_start.sh
owner: root
group: root
mode: '0644'
- name: Edit /etc/rc.local
lineinfile:
path: /etc/rc.local
regexp: '^(exit 0.*)$'
line: |
chmod 755 /root/first_start.sh | sed 's/^chmod 755 \/root\/first_start.sh.*/\/root\/first_start.sh \&/' -i /etc/rc.local &
exit 0
when: ansible_distribution == "Ubuntu"

View File

@ -0,0 +1,2 @@
---

View File

@ -0,0 +1,5 @@
---
os_creds_sysadmins:
- { username: "user", password: "*", comment: "mr. User", ssh_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC21HOAhC6o25M1oKxKsZxIoxUUeIpb4oqtAdPRNGU4PhJL1g1Cnro+YeF36YnvTKHRzDxS211y/zZBkt7BxOM7qj6dTQSH23jRwGLyfcYv7VyrK1YoxUAXumOJYnhfjVhXoznKnY9++GO9a/1gxQCzjGFMoxAQxFiBMbR/3Ic92ix2SM5aftXl1Mvu3mv45iZimyVIOH5cXdC0XtDSC7EEsdp1Ex6H/GfYabS+cJ55Uyct3orVBSf1LYFLaBNpIx7evXe+bXl81pvW8k/JhYTizoYNEA9rCi+1zaLQMb5LviHM3QqiYjkJbdt2Bd6TVmAfXrJKkj5XXnaMcDqXg8VUKqBenWOSugwagjYYjPRN/pyOeucL+pW1+iv8rAsVxn/0/eliNMn4rExN+Bj6kOmmdrsfqfierffW4DGDJtZlZhfXeZTX8XhdwMt7QUsUdK/Mr14uaEGjhWywX7uqSTnySV1mG4f6vJOyJksZKNSDzK8zH4k3u3onBFbut6NRG+cW4DaScmDbxAkUyurpesPlQkZzcKit6LLscJWZqCrd09zUvHuktnLuhlcicPQPD0B3VhbqVjTvjTDqZX8ZdxrHaRFwfKtv+gqo5Xb2ziS9MxsslxrSe9Ss4w4XkfbZ3BMnyfJWgxHuuyp4Y9gVRE4pFmsoR3v1zpTTHzMGKJKXWw== user@user" }
- { username: "usr2", password: "*", comment: "mr. User", ssh_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC21HOAhC6o25M1oKxKsZxIoxUUeIpb4oqtAdPRNGU4PhJL1g1Cnro+YeF36YnvTKHRzDxS211y/zZBkt7BxOM7qj6dTQSH23jRwGLyfcYv7VyrK1YoxUAXumOJYnhfjVhXoznKnY9++GO9a/1gxQCzjGFMoxAQxFiBMbR/3Ic92ix2SM5aftXl1Mvu3mv45iZimyVIOH5cXdC0XtDSC7EEsdp1Ex6H/GfYabS+cJ55Uyct3orVBSf1LYFLaBNpIx7evXe+bXl81pvW8k/JhYTizoYNEA9rCi+1zaLQMb5LviHM3QqiYjkJbdt2Bd6TVmAfXrJKkj5XXnaMcDqXg8VUKqBenWOSugwagjYYjPRN/pyOeucL+pW1+iv8rAsVxn/0/eliNMn4rExN+Bj6kOmmdrsfqfierffW4DGDJtZlZhfXeZTX8XhdwMt7QUsUdK/Mr14uaEGjhWywX7uqSTnySV1mG4f6vJOyJksZKNSDzK8zH4k3u3onBFbut6NRG+cW4DaScmDbxAkUyurpesPlQkZzcKit6LLscJWZqCrd09zUvHuktnLuhlcicPQPD0B3VhbqVjTvjTDqZX8ZdxrHaRFwfKtv+gqo5Xb2ziS9MxsslxrSe9Ss4w4XkfbZ3BMnyfJWgxHuuyp4Y9gVRE4pFmsoR3v1zpTTHzMGKJKXWw== user@user" }

View File

@ -0,0 +1,90 @@
---
debian_install_pkg_list:
- net-tools
- mc
- htop
- bash-completion
- iotop
- iftop
- bwm-ng
- sysstat
- iptraf-ng
- iperf3
- tcpdump
- scsitools
- lsscsi
- kpartx
- toilet
- figlet
- git
- apt-transport-https
- sysfsutils
- curl
- gpg
- secure-delete
- dnsutils
- rpm2cpio
- dos2unix
- telnet
- rsync
- sudo
- whois
- pv
- lsof
- tmux
- hping3
- nload
- parted
- netcat-openbsd
- wget
- ftp
- vim
- rsyslog
- iptables
- man
ubuntu_install_pkg_list:
- net-tools
- ifupdown
- mc
- htop
- bash-completion
- iotop
- iftop
- bwm-ng
- sysstat
- iptraf-ng
- iperf3
- tcpdump
- scsitools
- lsscsi
- kpartx
- toilet
- figlet
- git
- apt-transport-https
- sysfsutils
- curl
- gpg
- secure-delete
- dnsutils
- rpm2cpio
- dos2unix
- telnet
- rsync
- sudo
- whois
- pv
- lsof
- tmux
- hping3
- nload
- parted
- netcat-openbsd
- wget
- ftp
- vim
- rsyslog
- iptables
- man