Установка OCS Inventory на CentOS 7 довольно простая, если использовать собственный репозиторий OCS Inventory NG. Если Вы не в курсе, что это, то коротко скажу: OCS Inventory — это система инвентаризации компьютеров по сети, установленного на них оборудования и программного обеспечения. OCS Inventory использует программу агента, которая устанавливается на инвентаризируемом компьютере и передает информацию на сервер.
Итак, у нас есть стандартная чистая установка CentOS 7 Minimal. Пройдемся по всем шагам установки и отметим возможные проблемы, а также их решения.
Начнём, как обычно, с установки нужных репозиториев и вспомогательных пакетов. Программа скачивания wget, ntp для синхронизации точного времени и EPEL репозиторий.
yum -y install wget ntp epel-release
Скачаем официальный репозиторий с сайта OCS Inventory NG.
wget https://rpm.ocsinventory-ng.org/ocsinventory-release-latest.el7.ocs.noarch.rpm
И установим его.
yum install ocsinventory-release-latest.el7.ocs.noarch.rpm
Проверим, что нужные нам репозитории подключены
yum repolist
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Loaded plugins: fastestmirror Determining fastest mirrors * base: centos-mirror.rbc.ru * epel: mirror.logol.ru * extras: mirror.logol.ru * updates: centos-mirror.rbc.ru repo id repo name status base/7/x86_64 CentOS-7 - Base 9,591 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 12,491 extras/7/x86_64 CentOS-7 - Extras 448 ocsinventory/x86_64 OCS Inventory NG repository for Enterprise Linux 7 - x86_64 18 updates/7/x86_64 CentOS-7 - Updates 2,416 repolist: 24,964 |
Обновим всю систему
yum -y update
Если будете использовать iptables, то установите его сразу, так как в установке CentOS 7 Minimal его тоже нет.
yum -y install iptables iptables-services
Пришло время установить OCS Inventory
yum install ocsinventory
Подтянутся еще примерно 120 пакетов зависимостей, среди которых нужные нам Apache, MariaDB, PHP и другие. У меня установились 118 пакетов.
1 |
Install 1 Package (+118 Dependent packages) |
Теперь настроим нужные для работы OCS Inventory сервисы. Запустим iptables и разрешим соединение для Apache и ntp.
systemctl enable iptables
systemctl start iptables
iptables -nvL --line-number
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 25350 69M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 4 128 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 4735 203K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 5 packets, 744 bytes) num pkts bytes target prot opt in out source destination |
Вставим 5-ой и 6-ой строками разрешающие правила в цепочку INPUT
iptables -I INPUT 5 -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 6 -m state --state NEW -p udp --dport 123 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
Запустим ntp для синхронизации точного времени.
systemctl enable ntpd
systemctl start ntpd
Запускаем MariaDB
systemctl enable mariadb
systemctl start mariadb
Пройдемся по первоначальной настройке
mysql_secure_installation
Так как это первый запуск, пароль пустой, жмем Enter
1 2 |
Enter current password for root (enter for none): OK, successfully used password, moving on... |
Установим собственный пароль для пользователя root базы данных (не путать с пользователем root самой системы)
1 2 3 4 5 6 |
Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! |
На все вопросы отвечаем «у»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Remove anonymous users? [Y/n] y ... Success! Disallow root login remotely? [Y/n] y ... Success! Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reload privilege tables now? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! |
В следующей команде иcпользуем пАрОлЬ пользователя root, установленный ранее. Войдем в консоль MariaDB.
mysql -uroot -pпАрОлЬ
1 |
MariaDB [(none)]> |
CREATE DATABASE ocsweb;
GRANT ALL ON ocsweb.* to 'ocs'@'localhost' identified by 'ocs_pass';
FLUSH PRIVILEGES;
quit
Итак, у нас созданы база данных ocsweb и юзер ocs с паролем ocs_pass. Не забудьте заменить ocs_pass во второй команде в консоли MariaDB на нормальный пароль! Теперь изменяем значения переменных в конфигурационном файле /etc/httpd/conf.d/ocsinventory-server.conf в секции Master Database settings
1 2 3 |
PerlSetEnv OCS_DB_NAME ocsweb PerlSetEnv OCS_DB_USER ocs PerlSetVar OCS_DB_PWD ocs_pass |
Еще раз напомню, не забудьте заменить ocs_pass на нормальный пароль!
В файле /etc/httpd/conf.d/ocsinventory-reports.conf можно изменить максимальный размер, загружаемого на сервер, файла-отчета.
php_value post_max_size 301m
php_value upload_max_filesize 300m
Для разных версий PHP есть свои секции.
<IfModule mod_php5.c>
<IfModule mod_php7.c>
Изменяйте параметры в соответствии с Вашей версией PHP. По умолчанию в CentOS 7 Minimal версия PHP 5.4.16. (
php -v).
Далее редактируем файл /etc/php.ini для установки правильной временной зоны.
date.timezone = Europe/Moscow
Здесь же можно поменять и переменные
post_max_size = 301M
upload_max_filesize = 300M,
так как работоспособность параметров в файле ocsinventory-reports.conf в различных дистрибутивах не гарантируется, о чём предупреждается там же.
Теперь запустим Apache
systemctl enable httpd
systemctl start httpd
Если Вы делали апгрейд или переустановку сервера OCS Inventory, то самое время восстановить базу данных. Вы же делаете бекапы? 🙂
mysql -uroot -p ocsweb < dump_you_backup_file.sql
Итак, основная часть установки выполнена. Можно набрать в адресной строке браузера http://localhost/ocsreports/ либо http://Ваш IP-адрес/ocsreports/, или, если есть, http://Ваш домен/ocsreports/.
Вводим наши параметры: юзер ocs с паролем ocs_pass и имя базы данных ocsweb. Не обращаем внимание на второе красное предупреждение, жмем «Send».
Установка закончена. Опять не обращаем внимание на предупреждение. Такого файла в версии 2.4.х не существует. Конфигурирование осуществляется через /etc/httpd/conf.d/ocsinventory-server.conf. Как и было описано выше. Теперь в целях безопасности нужно удалить файл /usr/share/ocsinventory-reports/ocsreports/install.php или переименовать его. Теперь можно пройти по ссылке, используя логин/пароль — admin/admin и первым делом изменить пароль администратора! Если Вы восстанавливали базу данных, то используйте логин/пароль из Вашей старой установки, он перенесся вместе с общей базой данных.
Кстати, обновлять OCS Inventory можно также, как и любой пакет в CentOS
yum update ocsinventory
Теперь поговорим о подводных камнях, которые в основном возникают при обновлении и переустановке сервера OCS Inventory. Так как я писал статью в процессе новой установки с последущим восстановлением базы данных, то отмечу возникшие проблемы и пути их решения.
База данных прекрасно восстановилась, но агенты с компьютеров не обновляют информацию в базе данных о себе, даже если их запускать принудительно. Такая ошибка была обнаружена в /var/log/httpd/error_log Apache.
[Wed Apr 11 11:14:15.747069 2018] [perl:error] [pid 20619] [client 11.111.111.1:51051] Can't call method "do" on an undefined value at /usr/share/perl5/vendor_perl/Apache/Ocsinventory/Server/System.pm line 189.\n
Проблема в том, что в результате обновления конфигурационные файлы перезаписываются. Проверьте правильность обращения к базе данных в файлах /etc/httpd/conf.d/ocsinventory-server.conf и /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php, там должны быть Ваши база данных ocsweb и юзер ocs с паролем ocs_pass, как в этом примере.
Следующую ошибку пришлось отлавливать дольше. Старые компьютеры с различными версиями агентов отлично обновляют информацию о себе, а новые — нет. При этом в /var/log/httpd/access_log Apache видим следующее:
1 2 |
11.111.111.1 - - [24/Apr/2018:17:09:31 +0300] "POST /ocsinventory HTTP/1.1" 200 234 "-" "OCS-NG_WINDOWS_AGENT_v2.3.1.1" 11.111.111.1 - - [24/Apr/2018:17:09:35 +0300] "POST /ocsinventory HTTP/1.1" 500 527 "-" "OCS-NG_WINDOWS_AGENT_v2.3.1.1" |
Вроде агент открыл сеанс передачи информации серверу, но через 4 секунды завершил с ошибкой 500. Это внутренние ошибки сервера. Поскольку база данных не создавалась с нуля, а была восстановлена, то, первым делом, подозрение пало на нее. В конфигурационном файле /etc/httpd/conf.d/ocsinventory-server.conf меняем значение параметра OCS_OPT_DBI_PRINT_ERROR на 1 и перезапускаем Apache.
systemctl restart httpd
Теперь в /var/log/httpd/error_log видим следующее:
DBD::mysql::st execute failed: Unknown column 'MTU' in 'field list' at /usr/share/perl5/vendor_perl/Apache/Ocsinventory/Server/Inventory/Update.pm line 159.
Остается только создать поле MTU. Войдем в консоль MariaDB.
mysql -p ocsweb, введя root пароль базы данных
1 |
MariaDB [ocsweb]> |
ALTER TABLE `networks` ADD `MTU` VARCHAR(255) NULL DEFAULT NULL ;
FLUSH PRIVILEGES;
quit
Теперь все агенты верно обновляют информацию о своих компьтерах.
В качестве итога:
Не забывайте прописывать параметры соединения с базой данных после обновления в файлах
/etc/httpd/conf.d/ocsinventory-server.conf
/usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php.
Просматривайте логи web-сервера Apache
/var/log/httpd/access_log
/var/log/httpd/error_log,
а также лог самого сервера OCS Inventory
/var/log/ocsinventory-server/activity.log.
Также можно смотреть логи агентов инвентаризируемых компьютеров, которые располагаются для Windows 2000, XP, 2003 тут
C:\Documents and Settings\All Users\Application Data\OCS Inventory NG\Agent,
для Windows Vista, 2008, 7, 8, 10 тут
C:\ProgramData\OCS Inventory NG\Agent.
Ну и на официальном сайте OCS Inventory NG есть много разной информации, в том числе ссылки на скачивание агентов для различных операционных систем.
Удачной инвентаризации!
Добрый день!
Работает ли OCS с разными подсетями через VPN?
Например, OCS лежит в сети 192.168.0.0 а к этой сети через VPN подключаются удаленные пользователи (сеть у них 192.168.2.0).
Думаю, проблем не будет. Вопрос в правильной настройке маршрутизации и VPN
2.8 OCS не пробовали?
К сожалению, нет. Руки не доходят обновить.