diff --git a/ansible/inventories/hosts b/ansible/inventories/hosts
index 396fff5..811d137 100644
--- a/ansible/inventories/hosts
+++ b/ansible/inventories/hosts
@@ -9,7 +9,9 @@ aaa ansible_host=10.8.221.200
## Do not edit and delete it ##
## It need for packer templetes ##
-packer-templ
+packer-templ-debian-11-x64
+packer-templ-debian-12-x64
+packer-templ-ubuntu-24-04-x64
## Do not edit and delete it ##
## It need for packer templetes ##
diff --git a/ansible/inventories/vmware_vm_inventory.yml b/ansible/inventories/vmware_vm_inventory.yml
index af7ea18..5050815 100644
--- a/ansible/inventories/vmware_vm_inventory.yml
+++ b/ansible/inventories/vmware_vm_inventory.yml
@@ -1,7 +1,7 @@
---
#
# For use:
-# ansible-inventory -i /root/ansible/inventories/vmware_vm_inventory.yml --list -y --output zzz.yml
+# ansible-inventory -i ~/ansible/inventories/vmware_vm_inventory.yml --list -y --output zzz.yml
# cat zzz.yml | grep -i "guestid" | sed 's/^ config.guestId: //' | sed 's/$.*//' | sort | uniq
#
plugin: community.vmware.vmware_vm_inventory
diff --git a/ansible/roles/os-ipxe-vmware-deploy.sh b/ansible/os-ipxe-vmware-deploy.sh
similarity index 90%
rename from ansible/roles/os-ipxe-vmware-deploy.sh
rename to ansible/os-ipxe-vmware-deploy.sh
index a20e4c5..029ab4f 100755
--- a/ansible/roles/os-ipxe-vmware-deploy.sh
+++ b/ansible/os-ipxe-vmware-deploy.sh
@@ -21,7 +21,7 @@ vm_ip_search="lab.loc"
# ***********
-/usr/bin/ansible-playbook /root/ansible/playbooks/os-ipxe-vmware-deploy.yml \
+/usr/bin/ansible-playbook ~/ansible/playbooks/os-ipxe-vmware-deploy.yml \
-e "ipxe_target=$ipxe_target ipxe_net_name=$ipxe_net_name \
vm_name=$vm_name vm_folder=$vm_folder vm_guest_id=$vm_guest_id vm_datastore=$vm_datastore vm_net_name=$vm_net_name \
vm_ip_addr=$vm_ip_addr vm_ip_mask=$vm_ip_mask vm_ip_gw=$vm_ip_gw vm_ip_dns=$vm_ip_dns vm_ip_domain=$vm_ip_domain \
diff --git a/ansible/playbooks/os-linux-prep-default.yml b/ansible/playbooks/os-linux-prep-templ.yml
similarity index 82%
rename from ansible/playbooks/os-linux-prep-default.yml
rename to ansible/playbooks/os-linux-prep-templ.yml
index 5890337..44da9af 100644
--- a/ansible/playbooks/os-linux-prep-default.yml
+++ b/ansible/playbooks/os-linux-prep-templ.yml
@@ -6,4 +6,4 @@
vars_files:
- ~/.secret/.ansible/vars_creds.yml
roles:
- - os-linux-prep-default
+ - os-linux-prep-templ
diff --git a/ansible/roles/os-linux-prep-default/tasks/pkg-install.yml b/ansible/roles/os-linux-prep-default/tasks/pkg-install.yml
deleted file mode 100644
index 44dd9fa..0000000
--- a/ansible/roles/os-linux-prep-default/tasks/pkg-install.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-
-- include_vars: os-pkg-list.yml
-
-- name: Install from list 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"
- apt:
- clean: yes
- when: ansible_distribution == "Debian"
diff --git a/ansible/roles/os-linux-prep-default/tasks/scripts-first-start.yml b/ansible/roles/os-linux-prep-default/tasks/scripts-first-start.yml
deleted file mode 100644
index 2b43ea0..0000000
--- a/ansible/roles/os-linux-prep-default/tasks/scripts-first-start.yml
+++ /dev/null
@@ -1,21 +0,0 @@
----
-
-- name: Prepare scripts for custom VMs (First start)
- block:
- - name: Copy files to remote system
- ansible.builtin.copy:
- src: files/first_start.sh
- dest: /root/first_start.sh
- owner: root
- group: root
- mode: '0644'
- - name: Edit /etc/rc.local
- ansible.builtin.lineinfile:
- path: /etc/rc.local
- regexp: '^(exit 0.*)$'
- line: |
- /root/first_start.sh &
- $(sleep 2; chmod 755 /root/first_start.sh | sed '/chmod 755 \/root\/first_start.sh/d' -i /etc/rc.local) &
- exit 0
-
- when: ansible_os_family == "Debian"
diff --git a/ansible/roles/os-linux-prep-default/vars/os-pkg-list.yml b/ansible/roles/os-linux-prep-default/vars/os-pkg-list.yml
deleted file mode 100644
index 0a91058..0000000
--- a/ansible/roles/os-linux-prep-default/vars/os-pkg-list.yml
+++ /dev/null
@@ -1,45 +0,0 @@
----
-
-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
\ No newline at end of file
diff --git a/ansible/roles/os-linux-prep-default/defaults/main.yml b/ansible/roles/os-linux-prep-templ/defaults/main.yml
similarity index 100%
rename from ansible/roles/os-linux-prep-default/defaults/main.yml
rename to ansible/roles/os-linux-prep-templ/defaults/main.yml
diff --git a/ansible/roles/os-linux-prep-templ/files/.bashrc b/ansible/roles/os-linux-prep-templ/files/.bashrc
new file mode 100644
index 0000000..1bb1d17
--- /dev/null
+++ b/ansible/roles/os-linux-prep-templ/files/.bashrc
@@ -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
diff --git a/ansible/roles/os-linux-prep-templ/files/.config/mc/ini b/ansible/roles/os-linux-prep-templ/files/.config/mc/ini
new file mode 100644
index 0000000..b914dd0
--- /dev/null
+++ b/ansible/roles/os-linux-prep-templ/files/.config/mc/ini
@@ -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
diff --git a/ansible/roles/os-linux-prep-templ/files/.config/mc/panels.ini b/ansible/roles/os-linux-prep-templ/files/.config/mc/panels.ini
new file mode 100644
index 0000000..67583ba
--- /dev/null
+++ b/ansible/roles/os-linux-prep-templ/files/.config/mc/panels.ini
@@ -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=/
diff --git a/ansible/roles/os-linux-prep-default/files/first_start.sh b/ansible/roles/os-linux-prep-templ/files/first_start_debian.sh
similarity index 99%
rename from ansible/roles/os-linux-prep-default/files/first_start.sh
rename to ansible/roles/os-linux-prep-templ/files/first_start_debian.sh
index 77cab36..105cabb 100644
--- a/ansible/roles/os-linux-prep-default/files/first_start.sh
+++ b/ansible/roles/os-linux-prep-templ/files/first_start_debian.sh
@@ -10,8 +10,6 @@ resize2fs /dev/vg01/root
echo "Generete new machine-id"
rm /etc/machine-id
systemd-machine-id-setup
-echo "Clean all logs"
-find /var/log -type f,l | xargs rm -f
echo "Recreate new SSHd keys"
rm -f /etc/ssh/ssh_host_*
@@ -81,4 +79,7 @@ rm /root/first_start.sh
sleep 5
+echo "Clean all logs"
+find /var/log -type f,l | xargs rm -f
+
reboot
diff --git a/ansible/roles/os-linux-prep-templ/files/first_start_ubuntu.sh b/ansible/roles/os-linux-prep-templ/files/first_start_ubuntu.sh
new file mode 100644
index 0000000..201c1a1
--- /dev/null
+++ b/ansible/roles/os-linux-prep-templ/files/first_start_ubuntu.sh
@@ -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
diff --git a/ansible/roles/os-linux-prep-default/handlers/main.yml b/ansible/roles/os-linux-prep-templ/handlers/main.yml
similarity index 100%
rename from ansible/roles/os-linux-prep-default/handlers/main.yml
rename to ansible/roles/os-linux-prep-templ/handlers/main.yml
diff --git a/ansible/roles/os-linux-prep-default/tasks/add-users-admins.yml b/ansible/roles/os-linux-prep-templ/tasks/add-users-admins.yml
similarity index 66%
rename from ansible/roles/os-linux-prep-default/tasks/add-users-admins.yml
rename to ansible/roles/os-linux-prep-templ/tasks/add-users-admins.yml
index c1ac72c..01c972c 100644
--- a/ansible/roles/os-linux-prep-default/tasks/add-users-admins.yml
+++ b/ansible/roles/os-linux-prep-templ/tasks/add-users-admins.yml
@@ -10,24 +10,6 @@
set_fact: os_group_for_sudo="wheel"
when: ansible_os_family == "RedHat"
-- name: Change default for add user create params perm 755 to 700 (Debian)
- block:
- - name: Edit options in /etc/adduser.conf
- lineinfile:
- path: /etc/adduser.conf
- line: "{{ item }}"
- loop:
- - DIR_MODE=0700
- - SYS_DIR_MODE=0700
- when: ansible_os_family == "Debian"
- - name: Edit options in /etc/login.defs
- lineinfile:
- path: /etc/login.defs
- line: "{{ item }}"
- loop:
- - HOME_MODE 0700
- when: ansible_os_family == "Debian"
-
- name: Add admins users
user:
name: "{{ item.username }}"
@@ -39,6 +21,14 @@
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 }}"
diff --git a/ansible/roles/os-linux-prep-default/tasks/ipv6-disable.yml b/ansible/roles/os-linux-prep-templ/tasks/ipv6-disable.yml
similarity index 100%
rename from ansible/roles/os-linux-prep-default/tasks/ipv6-disable.yml
rename to ansible/roles/os-linux-prep-templ/tasks/ipv6-disable.yml
diff --git a/ansible/roles/os-linux-prep-default/tasks/main.yml b/ansible/roles/os-linux-prep-templ/tasks/main.yml
similarity index 85%
rename from ansible/roles/os-linux-prep-default/tasks/main.yml
rename to ansible/roles/os-linux-prep-templ/tasks/main.yml
index 1a56aed..3978e37 100644
--- a/ansible/roles/os-linux-prep-default/tasks/main.yml
+++ b/ansible/roles/os-linux-prep-templ/tasks/main.yml
@@ -9,6 +9,9 @@
- 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
diff --git a/ansible/roles/os-linux-prep-templ/tasks/os-config.yml b/ansible/roles/os-linux-prep-templ/tasks/os-config.yml
new file mode 100644
index 0000000..daf259b
--- /dev/null
+++ b/ansible/roles/os-linux-prep-templ/tasks/os-config.yml
@@ -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
+
diff --git a/ansible/roles/os-linux-prep-default/tasks/ping.yml b/ansible/roles/os-linux-prep-templ/tasks/ping.yml
similarity index 100%
rename from ansible/roles/os-linux-prep-default/tasks/ping.yml
rename to ansible/roles/os-linux-prep-templ/tasks/ping.yml
diff --git a/ansible/roles/os-linux-prep-templ/tasks/pkg-install.yml b/ansible/roles/os-linux-prep-templ/tasks/pkg-install.yml
new file mode 100644
index 0000000..242c1e8
--- /dev/null
+++ b/ansible/roles/os-linux-prep-templ/tasks/pkg-install.yml
@@ -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"
diff --git a/ansible/roles/os-linux-prep-templ/tasks/scripts-first-start.yml b/ansible/roles/os-linux-prep-templ/tasks/scripts-first-start.yml
new file mode 100644
index 0000000..7b9b747
--- /dev/null
+++ b/ansible/roles/os-linux-prep-templ/tasks/scripts-first-start.yml
@@ -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"
diff --git a/ansible/roles/os-linux-prep-default/vars/main.yml b/ansible/roles/os-linux-prep-templ/vars/main.yml
similarity index 100%
rename from ansible/roles/os-linux-prep-default/vars/main.yml
rename to ansible/roles/os-linux-prep-templ/vars/main.yml
diff --git a/ansible/roles/os-linux-prep-default/vars/os-creds-admins.yml b/ansible/roles/os-linux-prep-templ/vars/os-creds-admins.yml
similarity index 50%
rename from ansible/roles/os-linux-prep-default/vars/os-creds-admins.yml
rename to ansible/roles/os-linux-prep-templ/vars/os-creds-admins.yml
index 2260eb6..bfae745 100644
--- a/ansible/roles/os-linux-prep-default/vars/os-creds-admins.yml
+++ b/ansible/roles/os-linux-prep-templ/vars/os-creds-admins.yml
@@ -2,3 +2,4 @@
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" }
diff --git a/ansible/roles/os-linux-prep-templ/vars/os-pkg-list.yml b/ansible/roles/os-linux-prep-templ/vars/os-pkg-list.yml
new file mode 100644
index 0000000..9d8d69b
--- /dev/null
+++ b/ansible/roles/os-linux-prep-templ/vars/os-pkg-list.yml
@@ -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
diff --git a/packer/linux/README.md b/packer/linux/README.md
index e6ff782..7530be1 100644
--- a/packer/linux/README.md
+++ b/packer/linux/README.md
@@ -9,5 +9,5 @@ For secrets and cred vars create $HOME/.secret/.packer/vcsrv-creds.pkrvars.hcl
`connection_password = "XXXXXXXX"`
-`ssh_private_key_file = "/root/.ssh/XXXXXXX_ansible"`
+`ssh_private_key_file = "~/.ssh/XXXXXXX_ansible"`
diff --git a/packer/linux/build-debian-12-x64.sh b/packer/linux/build-debian-12-x64.sh
index a50c361..0676d63 100755
--- a/packer/linux/build-debian-12-x64.sh
+++ b/packer/linux/build-debian-12-x64.sh
@@ -2,10 +2,10 @@
packer="/usr/bin/packer"
-vm_name="x-debian-packer-vm"
+vm_name="x-debian12-packer-vm"
# => For logs:
-#export PACKER_LOG_PATH=./build-debian-12-amd64.log
+#export PACKER_LOG_PATH=./build-debian-12-x64.log
export PACKER_LOG=0
creds_vars_file="$HOME/.secret/.packer/vcsrv-creds.pkrvars.hcl"
diff --git a/packer/linux/build-ubuntu-24.04-x64.sh b/packer/linux/build-ubuntu-24.04-x64.sh
old mode 100644
new mode 100755
index 1fdf22c..9bbded8
--- a/packer/linux/build-ubuntu-24.04-x64.sh
+++ b/packer/linux/build-ubuntu-24.04-x64.sh
@@ -2,10 +2,10 @@
packer="/usr/bin/packer"
-vm_name="x-ubuntu-packer-vm"
+vm_name="x-ubuntu24-packer-vm"
# => For logs:
-#export PACKER_LOG_PATH=./build-debian-12-amd64.log
+#export PACKER_LOG_PATH=./build-ubuntu-24.04-x64.log
export PACKER_LOG=0
creds_vars_file="$HOME/.secret/.packer/vcsrv-creds.pkrvars.hcl"
@@ -17,4 +17,3 @@ $packer build -force \
-var-file="$HOME/packer/linux/ubuntu-24.04-x64/conf.pkrvars.hcl" \
-var vm_name=$vm_name \
$HOME/packer/linux/ubuntu-24.04-x64/
-
diff --git a/packer/linux/debian-12-x64/conf.pkrvars.hcl b/packer/linux/debian-12-x64/conf.pkrvars.hcl
index 7936535..a1b64d3 100644
--- a/packer/linux/debian-12-x64/conf.pkrvars.hcl
+++ b/packer/linux/debian-12-x64/conf.pkrvars.hcl
@@ -1,7 +1,7 @@
vcenter_datacenter = "DC01"
vcenter_cluster = "Cluster01"
-vcenter_host = "esxi8-01.lab.loc"
-vcenter_folder = "VLAN-0221"
+vcenter_host = "esxi8-02.lab.loc"
+vcenter_folder = "z-Templates"
vcenter_datastore = "Cluster01-LUN02"
//vm_name = "z-debian-packer-vm"
diff --git a/packer/linux/debian-12-x64/data/prep-script.sh b/packer/linux/debian-12-x64/data/prep-script.sh
index ef6870d..af0689d 100644
--- a/packer/linux/debian-12-x64/data/prep-script.sh
+++ b/packer/linux/debian-12-x64/data/prep-script.sh
@@ -27,6 +27,7 @@ sudo echo "#!/bin/sh -e
#
# By default this script does nothing.
+
exit 0
" > /etc/rc.local
diff --git a/packer/linux/debian-12-x64/debian-12-x64.pkr.hcl b/packer/linux/debian-12-x64/debian-12-x64.pkr.hcl
index 1d981a6..f28ba47 100644
--- a/packer/linux/debian-12-x64/debian-12-x64.pkr.hcl
+++ b/packer/linux/debian-12-x64/debian-12-x64.pkr.hcl
@@ -87,7 +87,7 @@ build {
provisioner "shell-local" {
inline = [
- "ansible-playbook ~/ansible/playbooks/os-linux-prep-default.yml -l packer-templ -e hosts_target=packer-templ -e ansible_host=${build.Host} -e connection_username=${var.connection_username} -e connection_ssh_private_key_file=${var.connection_ssh_private_key_file}"
+ "ansible-playbook ~/ansible/playbooks/os-linux-prep-templ.yml -l packer-templ-debian-12-x64 -e hosts_target=packer-templ-debian-12-x64 -e ansible_host=${build.Host} -e connection_username=${var.connection_username} -e connection_ssh_private_key_file=${var.connection_ssh_private_key_file}"
]
}
diff --git a/packer/linux/debian-12-x64/http/preseed.cfg b/packer/linux/debian-12-x64/http/preseed.cfg
index f141f1c..ec0b013 100644
--- a/packer/linux/debian-12-x64/http/preseed.cfg
+++ b/packer/linux/debian-12-x64/http/preseed.cfg
@@ -85,12 +85,12 @@ d-i partman/mount_style select uuid
# mkpasswd -s -m sha-512
#
d-i passwd/root-login boolean true
-d-i passwd/root-password-crypted password $6$Lij5f1fxeWVCjFbJ$GiWa3/zslkXwE4OfHeQrx/AlDPqhZR9pxSMxAvEZX8twF8ti7L6KM8wQWARzH.nQ99/BEmrjfDM/hwuczDJxY1
+d-i passwd/root-password-crypted password $6$5nLO9zRvoiQP7DdR$DYRibWnOQncB0qR9ugRSqAxWwVCPMfeRUBDdTuYxjh2FSZyRKtf57CG8ybGbFjVCAzJdcQg9qtJYhI.LhWhhe1
# Create [ ansb-srv-it ] user account.
d-i passwd/make-user boolean true
d-i passwd/user-fullname string ansb-srv-it
d-i passwd/username string ansb-srv-it
-d-i passwd/user-password-crypted password $6$Lij5f1fxeWVCjFbJ$GiWa3/zslkXwE4OfHeQrx/AlDPqhZR9pxSMxAvEZX8twF8ti7L6KM8wQWARzH.nQ99/BEmrjfDM/hwuczDJxY1
+d-i passwd/user-password-crypted password $6$5nLO9zRvoiQP7DdR$DYRibWnOQncB0qR9ugRSqAxWwVCPMfeRUBDdTuYxjh2FSZyRKtf57CG8ybGbFjVCAzJdcQg9qtJYhI.LhWhhe1
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
diff --git a/packer/linux/ubuntu-24.04-x64/conf.pkrvars.hcl b/packer/linux/ubuntu-24.04-x64/conf.pkrvars.hcl
index c4a6b6c..f297a66 100644
--- a/packer/linux/ubuntu-24.04-x64/conf.pkrvars.hcl
+++ b/packer/linux/ubuntu-24.04-x64/conf.pkrvars.hcl
@@ -1,7 +1,7 @@
vcenter_datacenter = "DC01"
vcenter_cluster = "Cluster01"
vcenter_host = "esxi8-01.lab.loc"
-vcenter_folder = "VLAN-0221"
+vcenter_folder = "z-Templates"
vcenter_datastore = "Cluster01-LUN02"
//vm_name = "z-ubuntu-packer-vm"
diff --git a/packer/linux/ubuntu-24.04-x64/data/prep-script.sh b/packer/linux/ubuntu-24.04-x64/data/prep-script.sh
index ef6870d..af0689d 100644
--- a/packer/linux/ubuntu-24.04-x64/data/prep-script.sh
+++ b/packer/linux/ubuntu-24.04-x64/data/prep-script.sh
@@ -27,6 +27,7 @@ sudo echo "#!/bin/sh -e
#
# By default this script does nothing.
+
exit 0
" > /etc/rc.local
diff --git a/packer/linux/ubuntu-24.04-x64/http/user-data b/packer/linux/ubuntu-24.04-x64/http/user-data
index 6c31690..81dec9d 100644
--- a/packer/linux/ubuntu-24.04-x64/http/user-data
+++ b/packer/linux/ubuntu-24.04-x64/http/user-data
@@ -7,7 +7,7 @@ autoinstall:
identity:
hostname: ubuntu-24-04-auto-tmpl
username: ansb-srv-it
- password: '$6$R789K/T7lS27KICW$2i5f/sP6nXniEMbjnTyswKMdStGVQdbz8jqIyrXxrhYxJLD0JrWTZjnlFpWkEOlJ2Oa9WvEcANu9iLY3mg5mw.'
+ password: '$6$5nLO9zRvoiQP7DdR$DYRibWnOQncB0qR9ugRSqAxWwVCPMfeRUBDdTuYxjh2FSZyRKtf57CG8ybGbFjVCAzJdcQg9qtJYhI.LhWhhe1'
storage:
config:
- {ptable: gpt, path: /dev/sda, wipe: superblock, preserve: false, name: '', grub_device: true, type: disk, id: disk-sda}
@@ -36,6 +36,10 @@ autoinstall:
updates: all
packages:
- open-vm-tools
+ - ifupdown
+ - perl-modules-*
+ - net-tools
+ - util-linux-extra
- sudo
late-commands:
- echo 'ansb-srv-it ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ansb-srv-it
diff --git a/packer/linux/ubuntu-24.04-x64/ubuntu-24.04-x64.pkr.hcl b/packer/linux/ubuntu-24.04-x64/ubuntu-24.04-x64.pkr.hcl
index 1f531ab..86d329f 100644
--- a/packer/linux/ubuntu-24.04-x64/ubuntu-24.04-x64.pkr.hcl
+++ b/packer/linux/ubuntu-24.04-x64/ubuntu-24.04-x64.pkr.hcl
@@ -32,7 +32,7 @@ source "vsphere-iso" "ubuntu-24-04-x64" {
host = var.vcenter_host
datastore = var.vcenter_datastore
folder = var.vcenter_folder
-# convert_to_template = true
+ convert_to_template = true
// ****************
vm_name = var.vm_name
CPUs = var.vm_num_cpu
@@ -85,10 +85,10 @@ build {
]
}
-// provisioner "shell-local" {
-// inline = [
-// "ansible-playbook ~/ansible/playbooks/os-linux-prep-default.yml -l packer-templ -e hosts_target=packer-templ -e ansible_host=${build.Host} -e connection_username=${var.connection_username} -e connection_ssh_private_key_file=${var.connection_ssh_private_key_file}"
-// ]
-// }
+ provisioner "shell-local" {
+ inline = [
+ "ansible-playbook ~/ansible/playbooks/os-linux-prep-templ.yml -l packer-templ-ubuntu-24-04-x64 -e hosts_target=packer-templ-ubuntu-24-04-x64 -e ansible_host=${build.Host} -e connection_username=${var.connection_username} -e connection_ssh_private_key_file=${var.connection_ssh_private_key_file}"
+ ]
+ }
}