Linux Workstation autodeploy script (скрипт автоматического развертывания рабочих станций)


Администрирование операционных систем на базе Linux (Debian/Ubuntu и Centos/RedHat) Мониторинг серверов и сетевой инфраструктуры при помощи Zabbix Настройка рабочих станций под управлением Ubuntu Linux Мое портфолио, сертификаты и разработки
apt aptitude debian etc linux linux workstation main smtputf8 ssh zabbix
 
 

* В этом блоге я описываю свою повседневную рабочую практику, поэтому все статьи в блоге написаны лично мной и при копировании их на свой сайт пожалуйста указывайте ссылку на страницу откуда вы скопировали.
* Если какая-то статья вам помогла, то вы можете дать мне немного денег вместо простого спасибо (ссылка на форму поддержки проекта внизу страницы), если вы что-то не поняли или у вас что-то не получается, то вы можете нанять меня и я вам все подробно расскажу (расценки и ссылки в конце статьи).


(последние правки 3 недели, 4 дня)

Наверное каждого системного администратора рано или поздно посещает идея написать скрипт автоматической настройки рабочих станций и серверов, причем вне зависимости от того какой вы администратор Windows или Linux и если такая идея вам пришла в голову, то значит вы дозрели. Без шуток, идея просто отличная и требует обязательного воплощения! Давайте сразу же начнем его и разрабатывать.

1. Устанавливаем базовый набор софта

# apt-get update
# apt-get upgrade
# apt-get install -y aptitude mc software-properties-common ssh

2. Отключаем вход пользователя root по паролю, но оставляем авторизацию по ключу и естественно устанавливаем наш открытый ключ. Часть функционала отключаемая и настройки управляются параметрами конфигурационного файла.

# Авторизация по SSH
RSA_PUBLIC_KEY="ssh-rsa AAAPPP...3SafNV root@workstation"
DISABLE_ROOT_SSH_LOGIN=True
DEFINE_ROOT_DESCRIPTION_AS_HOSTNAME=True

# Обработка настроек SSH
key_exist=`cat /root/.ssh/authorized_keys | grep "$RSA_PUBLIC_KEY"`
if [ -z "$key_exist" ];
then
    # Устанавливаем публичный ключ (если он не установлен)
    mkdir -p /root/.ssh
    echo "$RSA_PUBLIC_KEY" >> /root/.ssh/authorized_keys
    chmod 600 /root/.ssh/authorized_keys
fi

# Запрещаем парольный вход пользователя root
if [ "$DISABLE_ROOT_SSH_LOGIN" = "True" ];
then
    # Delete PermitRootLogin
    sed -i '/PermitRootLogin/d' /etc/ssh/sshd_config
    # Define PermitRootLogin
    echo "PermitRootLogin prohibit-password" >> /etc/ssh/sshd_config
fi

# Устанавливаем HOSTNAME в качестве описания пользователя root
if [ "$DEFINE_ROOT_DESCRIPTION_AS_HOSTNAME" = "True" ];
then
    sed -i '/root:x:0:0:/d' /etc/passwd
    sed -i "1s/^/root:x:0:0:root-${HOSTNAME}:\/root:\/bin\/bash\n/" /etc/passwd
fi

3. Настройка локального MTA для отправки отчетов через Yandex-почту.

Это нам потребуется для отправки ежедневных отчетов Logwatch

# Настройка локального MTA
SETUP_LOCAL_MTA=True
AUTH_LOGIN="robot-report@dvi.net"
AUTH_PASSWORD="xxxSecretPasswordxxx"
SMTP_HOST="smtp.yandex.ru"
AUTH_DOMAIN=`echo "$AUTH_LOGIN" | awk -F"@" '{print $2}'`

# Настройка локального MTA
if [ "$SETUP_LOCAL_MTA" = "True" ];
then
    #DEBIAN_FRONTEND=noninteractive apt-get -yq install postfix
    #apt-get install -y mailutils
    rm -R /etc/postfix/private
    mkdir /etc/postfix/private
    echo "@$AUTH_DOMAIN $AUTH_LOGIN" > /etc/postfix/private/canonical
    echo "@$AUTH_DOMAIN $SMTP_HOST" > /etc/postfix/private/sender_relay
    echo "[$SMTP_HOST]  $AUTH_LOGIN:$AUTH_PASSWORD" > /etc/postfix/private/sasl_passwd
    postmap /etc/postfix/private/*
    echo "relayhost =" > /etc/postfix/main.cf
    echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf
    echo "smtp_sasl_password_maps = hash:/etc/postfix/private/sasl_passwd" >> /etc/postfix/main.cf
    echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf
    echo "smtp_sasl_type = cyrus" >> /etc/postfix/main.cf
    echo "smtp_sasl_mechanism_filter = login" >> /etc/postfix/main.cf
    echo "smtp_sender_dependent_authentication = yes" >> /etc/postfix/main.cf
    echo "sender_dependent_relayhost_maps = hash:/etc/postfix/private/sender_relay" >> /etc/postfix/main.cf
    echo "sender_canonical_maps = hash:/etc/postfix/private/canonical" >> /etc/postfix/main.cf
    echo "compatibility_level=2" >> /etc/postfix/main.cf
    echo "append_dot_mydomain=yes" >> /etc/postfix/main.cf
    echo "smtputf8_enable = no" >> /etc/postfix/main.cf
    /etc/init.d/postfix restart
fi

4. Настройка мониторинга датчиков температуры и поверхности жесткого диска (для ежедневных отчетов LogWatch):

# Мониторинг поверхности HDD и датчиков lm-sensors и отправка отчетов 
INSTALL_HARDWARE_MONITORING_TOOLS=True

# Настройка мониторинга оборудования 
if [ "$INSTALL_HARDWARE_MONITORING_TOOLS" = "True" ]; 
then 
   apt-get install -y lm-sensors 
   apt-get install -y smartmontools 
   (while :; do echo ""; done ) | sensors-detect 
fi

5. Автоматическая отправка ежедневных отчетов Logwatch

# Отправка ежедневных отчетов Logwatch 
REPORT_EMAIL="reports@giga.net" 
ENABLE_LOGWATCH=True

# Настройка отправки отчетов Logwatch 
if [ "$ENABLE_LOGWATCH" = "True" ]; 
then 
   apt-get install -y logwatch 
   echo "#!/bin/bash" > /etc/cron.daily/00logwatch 
   echo "test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0" >> /etc/cron.daily/00logwatch 
   echo "/usr/sbin/logwatch --mailto $REPORT_EMAIL" >> /etc/cron.daily/00logwatch 
fi

6. Установка проприетарного ПО

Скачиваем бинарные пакеты с официальных сайтов 

# Установка проприетарного ПО
INSTALL_SKYPE=True
INSTALL_TEAM_VIEWER=True
INSTALL_CHROME=True

# Установка проприетарного ПО
if [ "$INSTALL_SKYPE" = "True" ];
then
  apt-get install gconf-service gconf-service-backend gconf2-common libgconf-2-4
  wget https://repo.skype.com/latest/skypeforlinux-64.deb -O /tmp/skypeforlinux-64.deb
  dpkg -i /tmp/skypeforlinux-64.deb
fi

if [ "$INSTALL_TEAM_VIEWER" = "True" ];
then
  wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb -O /tmp/teamviewer_amd64.deb
  dpkg -i /tmp/teamviewer_amd64.deb
fi

if [ "$INSTALL_CHROME" = "True" ];
then
  wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O /tmp/google-chrome-stable_current_amd64.deb
  dpkg -i /tmp/google-chrome-stable_current_amd64.deb
fi

7. Отправка сообщений при обнаружении ошибок в SMART

Хоть это и простые рабочие станции, но прозевать сбой HDD с потерей данных пользователя сильно не хочется

ENABLE_SMARTMON=True

if [ "$ENABLE_SMARTMON" = "True" ]; 
then 
   echo "DEVICESCAN -d removable -n standby -m $REPORT_EMAIL -M exec /usr/share/smartmontools/smartd-runner" > /etc/smartd.conf 
   systemctl restart smartd 
fi

8. Автоматическая установка настройка Zabbix

# Установка и конфигурация Zabbix-агента 
INSTALL_ZABBIX=True 
ZABBIX_SERVER="10.54.254.88"

if [ "$INSTALL_ZABBIX" = "True" ]; 
then 
   wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb -O /tmp/zabbix.deb 
   dpkg -i /tmp/zabbix.deb 
   apt-get update 
   apt-get install zabbix-agent zabbix-get 
 
   echo "PidFile=/var/run/zabbix/zabbix_agentd.pid" > /etc/zabbix/zabbix_agentd.conf 
   echo "LogFile=/var/log/zabbix/zabbix_agentd.log" >> /etc/zabbix/zabbix_agentd.conf 
   echo "LogFileSize=0" >> /etc/zabbix/zabbix_agentd.conf 
   echo "Server=$ZABBIX_SERVER, 127.0.0.1" >> /etc/zabbix/zabbix_agentd.conf 
   echo "ServerActive=$ZABBIX_SERVER" >> /etc/zabbix/zabbix_agentd.conf 
   echo "Hostname=${HOSTNAME}" >> /etc/zabbix/zabbix_agentd.conf 
   echo "Include=/etc/zabbix/zabbix_agentd.d/*.conf" >> /etc/zabbix/zabbix_agentd.conf 
 
   systemctl restart zabbix-agent 
fi

9. Финальные штрихи

# Fix broken 
apt --fix-broken install 
# Remove old packages 
apt autoremove

В общих чертах это так и выглядит и вам конечно надо кастомить этот скрипт для конкретно своего случая.

Моя официальная страница на FaceBook
Мой микроблог в твиттер

Сброс пароля Zabbix-пользователя без использования графического интерфейса

Сброс пароля Zabbix-пользователя без использования графического интерфейса

Если у вас есть доступ к консоли управления базой данных, то для сброса пароля пользователя вам потребуется выполнить только один SQL-запрос, а получить список зарегистрированных пользователей, вы можете при помощи другого SQL-запроса.


Устранение проблем с запуском Zabbix в Centos 7.1 (проблема с правилами SeLinux)

Устранение проблем с запуском Zabbix в Centos 7.1 (проблема с правилами SeLinux)

Наверное каждый системный администратор при работе с Linux дистрибутивами Centos и RedHat рано или поздно сталкивается с его дополнительно системой аудита уровня ядра под названием SeLinux. Первое знакомство с этой системой безопасности вызвало у меня желание просто отключить ее, что кстати в большинстве случаев и советуют на разного рода форумах, но как показывает практика делать этого не стоит. И хотя вы можете столкнуться с ограничением доступа в самых не очевидных местах, я рекомендовал бы вам просто проверять лог аудита и на основе его надстраивать исключения из схемы модели безопасности. Именно это я сейчас и продемонстрирую на примере Zabbix-агента.


Установка и базовая настройка Zabbix-сервера (сборка из SVN-репозитария)

Установка и базовая настройка Zabbix-сервера (сборка из SVN-репозитария)

В этой статье я попробую описать пошагово, установку последней версии Zabbix-сервера из SVN-репозитария в LXC-контейнер. Ранее, в наших статьях мы уже рассматривали некоторые аспекты установки и настройки Zabbix-сервера и данная статья является скорее компиляцией прошлых заметок для реального внедрения.


Установка Zabbix-Agent версии 3.4 в Ubuntu Linux 16.04

Установка Zabbix-Agent версии 3.4 в Ubuntu Linux 16.04

Небольшая инструкция по подключению репозитария и установке zabbix-агента версии 3.4 в Ubuntu Linux 16.04


Настройка отправки оповещений Zabbix в чат Rocket.Chat

Настройка отправки оповещений Zabbix в чат Rocket.Chat

В своей статье, - использование Rocket.Chat для создания чата оперативных оповещений, я не описал как именно можно при помощи моей утилиты для работы с Rocket.Chat, отправить Zabbix-оповещение. Я так понимаю, что тема заинтересовала несколько человек и придется немного заострить на этом внимание.


Подробный мониторинг состояния дисковой подсистемы Linux при помощи Zabbix

Подробный мониторинг состояния дисковой подсистемы Linux при помощи Zabbix

Для серверов виртуализации необходимо постоянно следить за состоянием дисковой подсистемы, и это не ограничивается банальным iowait, гораздо более важным параметром является например длина дисковой очереди. Так же не забываем мониторить состояние SMART и статус программных дисковых массивов.


Установка Zabbix версии 3.4 в Linux-дистрибутив Debian 9

Установка Zabbix версии 3.4 в Linux-дистрибутив Debian 9

Это небольшая шпаргалка для меня, я вообще предпочитаю записывать типовые операции которые выполняю достаточно часто, для того чтобы не искать потом на просторах интернета эти инструкции.


Как вы наверное понимаете, бесплатно сейчас работать никто не будет и если ответ на ваш вопрос потребует больше трех минут времени и вам требуется полноценная консультация, то расценки на мои услуги представленны ниже.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .