From b5c4a90c6a5b8bc02ef8087a265590484c83c071 Mon Sep 17 00:00:00 2001 From: 1xtier Date: Mon, 12 Jan 2026 01:03:54 +0400 Subject: [PATCH] first commit --- service/docker/install-docker | 79 +++++++++++++++++++++++++++++++++ service/nginx/ins_repo-nginx.sh | 22 +++++++++ 2 files changed, 101 insertions(+) create mode 100755 service/docker/install-docker create mode 100755 service/nginx/ins_repo-nginx.sh diff --git a/service/docker/install-docker b/service/docker/install-docker new file mode 100755 index 0000000..8a43970 --- /dev/null +++ b/service/docker/install-docker @@ -0,0 +1,79 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use autodie; + +print "Установка Docker...\n"; + +# Функция для выполнения системных команд +sub run_cmd { + my $cmd = shift; + print "Выполняется: $cmd\n"; + system($cmd) == 0 or die "Ошибка выполнения команды: $cmd\n"; +} + +# Функция для получения версии Ubuntu +sub get_ubuntu_codename { + my $codename; + + # Читаем файл /etc/os-release + if (open my $fh, '<', '/etc/os-release') { + while (my $line = <$fh>) { + if ($line =~ /^UBUNTU_CODENAME=([^\s]+)/) { + $codename = $1; + last; + } elsif ($line =~ /^VERSION_CODENAME=([^\s]+)/ && !defined $codename) { + $codename = $1; + } + } + close $fh; + } + + die "Не удалось определить версию Ubuntu\n" unless defined $codename; + return $codename; +} + +# Обновление пакетов и установка зависимостей +run_cmd('sudo apt update'); +run_cmd('sudo apt install -y ca-certificates curl'); + +# Создание директории для ключей +run_cmd('sudo install -m 0755 -d /etc/apt/keyrings'); + +# Загрузка GPG ключа Docker +run_cmd('sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc'); +run_cmd('sudo chmod a+r /etc/apt/keyrings/docker.asc'); + +# Добавление репозитория Docker +my $ubuntu_codename = get_ubuntu_codename(); +print "Определена версия Ubuntu: $ubuntu_codename\n"; + +my $sources_content = <<"EOF"; +Types: deb +URIs: https://download.docker.com/linux/ubuntu +Suites: $ubuntu_codename +Components: stable +Signed-By: /etc/apt/keyrings/docker.asc +EOF + +# Записываем содержимое в файл +open my $fh, '>', '/tmp/docker.sources'; +print $fh $sources_content; +close $fh; + +run_cmd('sudo cp /tmp/docker.sources /etc/apt/sources.list.d/docker.sources'); +run_cmd('sudo rm -f /tmp/docker.sources'); + +# Обновление списка пакетов +run_cmd('sudo apt update'); + +# Установка Docker +run_cmd('sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin'); + +print "\nУстановка Docker завершена успешно!\n"; +print "Проверка версии Docker:\n"; +system('sudo docker --version'); + +print "\nПроверка работы Docker:\n"; +system('sudo docker run hello-world'); diff --git a/service/nginx/ins_repo-nginx.sh b/service/nginx/ins_repo-nginx.sh new file mode 100755 index 0000000..d754473 --- /dev/null +++ b/service/nginx/ins_repo-nginx.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + + + +function system_update() { + apt update + apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y +} + +function add_reponginx() { + curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ + | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null + gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg + echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ + | sudo tee /etc/apt/sources.list.d/nginx.list + echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ + | sudo tee /etc/apt/preferences.d/99nginx + apt update +} + +system_update +add_reponginx