当前位置:   article > 正文

IT打工人利器:推荐两款开源的公司固定资产管理工具_snipe-it

snipe-it

64b1b49053cf4111f30ba7db3339a21a.jpeg

1d486948a28bf195ec2c38fd3cfb1857.gif

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路。]

微信改版了,现在看到我们全凭缘分,为了不错过【全栈工程师修炼指南】重要内容及福利,大家记得按照上方步骤设置「接收文章推送」哦~

0x00 前言简介

描述:最近接手了公司的固定资产的管理工作, 一看到用Excl记录的固定资产信息我就产生了一种想法, 手工(上/下帐)管理太麻烦了于是找一款开源的固定资产管理进行管理。

通过开源的IT资产管理项目选型对比,最终在 Snipe-IT 与 CLPI 间选择了 Snipe-IT ,以下是简单的安装部署流程。

温馨提示:作者最近开通的知识星球,全栈系列从门到实践教程将会逐步同步到星球内(实时更新),加入星球将获得作者在安全、运维、开发(Sec、Ops、Dev)中的所有学习实践笔记,和问题答疑以及远程技术支持,希望大家多多支持!

c19b0701277e00fc351f8c74271ef2db.jpeg

原文链接: https://mp.weixin.qq.com/s/oSreNADn8R07FZZZtMk2vg

 

0x01 Snipe-IT

1.简单介绍

描述:Snipe IT是一个基于Laravel的免费开源(FOSS)项目,Snipe IT是为IT资产管理而设计的,使IT部门能够跟踪谁拥有哪台笔记本电脑,何时购买,哪些软件许可证和配件可用,等等。在实际工作中,完全替代EXECL表格的资产管理。支持多语言,方便公司全球化扩张。

426c0ba27acb4a7d6423d55c5ce37fca.png

weiyigeek.top-Snipe-IT设备管理图

官网: https://snipeitapp.com/ 安装文档: https://snipe-it.readme.io/docs/introduction

 

2.搭建流程

 

环境构建:

  • CentOS7

  • Snipe-Mysql

  • Snipe-IT  目前版本已经到达 V6.3.3 版本

安装版本系统信息

  1. Snipe-IT version  v4.7.8 build 4170 (g4fe689dc5)
  2. 软件许可证  AGPL3
  3. PHP版本  7.1.33-1+ubuntu16.04.1+deb.sury.org+1
  4. Laravel版本  5.5.47

1.安装步骤如下图所示,基本是傻瓜式的很简单。

c7fea8c300aa89dc561f4fd6c9c85ccd.png

weiyigeek.top-Snipe-it 安装步骤

下面我们采用最简单的Docker部署的方式进行安装:

  1. #1.宿主机上面建立相应的持久化目录
  2. sudo mkdir -p /app/Snipe-mysql /app/Snipe-conf
  3. sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
  4. [dockerrepo]
  5. name=Docker Repository
  6. baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
  7. enabled=1
  8. gpgcheck=1
  9. gpgkey=https://yum.dockerproject.org/gpg
  10. EOF
  11. yum install docker-ce docker-compose -y
  12. #2.生成APP_KEY并利用其来修改yml配置文件
  13. php artisan key:generate
  14. # Please re-run this container with an environment variable $APP_KEY
  15. # An example APP_KEY you could use is: 
  16. # base64:D5oGA+zhFSVA3VwuoZoQ21RAcwBtJv/RGiqOcZ7BUvI=
  17. #3.修改env环境变量
  18. #参考;https://snipe-it.readme.io/docs/configuration
  19. #参考: https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=87421#
  20. # Mysql Parameters
  21. MYSQL_ROOT_PASSWORD=#SnipeIT#Root
  22. MYSQL_DATABASE=snipeit
  23. MYSQL_USER=snipeit
  24. MYSQL_PASSWORD=#SnipeIT#SnipeIT
  25. # Email Parameters
  26. # - the hostname/IP address of your mailserver
  27. # MAIL_PORT_587_TCP_ADDR=smtp.whatever.com
  28. # #the port for the mailserver (probably 587, could be another)
  29. # MAIL_PORT_587_TCP_PORT=587
  30. # # the default from address, and from name for emails
  31. # MAIL_ENV_FROM_ADDR=youremail@yourdomain.com
  32. # MAIL_ENV_FROM_NAME=Your Full Email Name
  33. # # - pick 'tls' for SMTP-over-SSL, 'tcp' for unencrypted
  34. # MAIL_ENV_ENCRYPTION=tcp
  35. # # SMTP username and password
  36. # MAIL_ENV_USERNAME=your_email_username
  37. # MAIL_ENV_PASSWORD=your_email_password
  38. # Snipe-IT Settings
  39. APP_ENV=production
  40. APP_DEBUG=false
  41. APP_KEY=base64:5U/KPKw1GN/Rz0fWYO/4FsSOqjmjvDAQzMCqwcAqstc=
  42. #注意构建时候修改成为外网地址
  43. APP_URL=http://127.0.0.1:80 
  44. APP_TIMEZONE=Asia/Shanghai
  45. APP_LOCALE=zh-CN
  46. # user
  47. PUID=1000
  48. PGID=1000
  49. # SNIPEIT CONNECT MYSQL (这里直接可以实用docker-compose.yml)
  50. DB_HOST=db
  51. DB_DATABASE=snipeit
  52. DB_USERNAME=snipeit
  53. DB_PASSWORD=#SnipeIT#SnipeIT
  54. DB_DUMP_PATH='/usr/bin'
  55. # OPTIONAL: LOGIN THROTTLING
  56. LOGIN_MAX_ATTEMPTS=5
  57. LOGIN_LOCKOUT_DURATION=60

然后编写Docker-compose.yml方便进行一键部署

  1. version: '3'
  2. services:
  3.   snipe-mysql:
  4.     container_name: snipe-mysql
  5.     image: mysql:5.6
  6.     env_file:
  7.       - ./.env
  8.     volumes:
  9.       - /app/Snipe-IT/data:/var/lib/mysql
  10.     command: --default-authentication-plugin=mysql_native_password
  11.     ports:
  12.       - "3366:3306"
  13.   snipe-it:
  14.     image: snipe/snipe-it
  15.     container_name: snipe-it
  16.     env_file:
  17.       - ./.env
  18.     ports:
  19.       - "8080:80"
  20.     depends_on:
  21.       - snipe-mysql
  22.     volumes:
  23.       - /app/Snipe-IT/web:/config
  24.     links:
  25.       - snipe-mysql:db
  26. #4.验证是否yml有误
  27. [root@192 app]# docker-compose config

449da8c41af065b980af43fd29081454.png

weiyigeek.top-验证部署的资源清单

运行并且构建环境(这里我们不后台运行)

  1. docker-compose up
  2. # Creating network "app_default" with the default driver
  3. # Pulling snipe-mysql (mysql:5.6)...
  4. # 其他方式运行该环境
  5. #5.建立数据库容器
  6. # docker run \
  7. # --name snipe-mysql \
  8. # -d \
  9. # -e MYSQL_ROOT_PASSWORD="3yyDOLC6VPFG&5gk#yNl" \
  10. # -e MYSQL_DATABASE=snipe \
  11. # -e MYSQL_USER=snipe \
  12. # -e MYSQL_PASSWORD="29fMXli8ZRQCXnxnUEG" \
  13. # -e TZ=America/Chicago \
  14. # -p 127.0.0.1:3306:3306 \
  15. # -v /media/snipe-mysql:/var/lib/mysql \
  16. # mysql:5.6 --sql-mode=""
  17. # #6.建立Web容器
  18. # docker create \
  19. #   --name=snipe-it \
  20. #   --link snipe-mysql:db \
  21. #   -e PUID=1000 \
  22. #   -e PGID=1000 \
  23. #   -e DB_CONNECTION=mysql \
  24. #   -e DB_HOST=snipe-mysql \
  25. #   -e DB_DATABASE=snipe \
  26. #   -e DB_USERNAME=snipe \
  27. #   -e DB_PASSWORD="29fMXli8ZRQCXnxnUEG" \
  28. #   -e APP_KEY=base64:5U/KPKw1GN/Rz0fWYO/4FsSOqjmjvDAQzMCqwcAqstc= \
  29. #   -p 8082:80 \
  30. #   -v /media/snipe-conf:/config \
  31. #   --restart unless-stopped \
  32. #   snipe/snipe-it

a7f3f5eadc2663738f851cf953ca9f7f.png

weiyigeek.top-构建运行容器

  1. 打开浏览器访问设置好的站点 http://10.10.10.10:8082/setup 并且检测相关条件是否符合(Create Database Tables)

81a35e58fa3d267914f99512ff674276.png

weiyigeek.top-Snipe-IT Pre-Flight Setup

  1. 创建用户信息完成保存后即可完成并登陆到仪表台

045c3fc2392defe0a4461e59bad87f00.png

weiyigeek.top-创建用户信息

 

5.基础使用

 

(1) 二维码显示设置

点击设置 -> Barcodes(Barcode & QR settings) ->  显示二维码26c760f43b450464ea8727b0f20474e1.png

 

(2)LDAP同步设置

 

  1. #LDAP过滤器完整格式
  2. &(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2))
  3. #然后设置定时任务
  4. vim /etc/crontab
  5. 0 */3 * * * /usr/local/php/bin/php /data/http/html/snipeit/artisan snipeit:ldap-sync >> /dev/null 2>&1  //每三个小时执行一次

81d213b3f0d33fb6dd1b916ddd15f71e.png

weiyigeek.top-LDAP同步设置

 

(3)数据库备份

 

  1. root@44dc40312522:/var/www/html/storage/app# chown -R docker:root /var/www/html/storage/app/
  2. total 4.0K
  3. drwxr-xr-x 1 docker root 39 Nov  9 01:15 .
  4. drwxr-xr-x 1 docker root 46 Nov  9 01:15 ..
  5. -rwxr-xr-x 1 docker root 23 Nov  9 01:04 .gitignore
  6. lrwxrwxrwx 1 docker root 22 Nov  9 01:15 backups -> /var/lib/snipeit/dumps
  7. root@44dc40312522:/var/www/html/storage/app# chown -R docker:root /var/lib/snipeit/dumps/

 

4.进阶配置

 

OpenLDAP登录Snipe-IT配置

环境说明:

  1. Snipe-IT version  v4.9.0 build 4210 (g8b2f8ef3c) 
  2. PHP版本  7.1.33-12+ubuntu16.04.1+deb.sury.org+1
  3. Laravel版本  5.5.48

 

Setting -> LDAP/Active Directory 配置如下,官网ldap-sync-login配置参考:https://snipe-it.readme.io/docs/ldap-sync-login

 

  1. LDAP集成:  启用LDAP验证
  2. LDAP密码同步: 可选
  3. LDAP 服务器: ldap://127.0.0.1
  4. LDAP 用户名: cn=weiyi,geek,dc=com,dc=cn
  5. LDAP 密码: password
  6. Base Bind DN: ou=People,dc=geek,dc=com,dc=cn
  7. LDAP 过滤器: &(objectclass=inetOrgPerson)(memberof=cn=snipeit,ou=Group,dc=geek,dc=com,dc=cn) #此处采用GroupOfUniqueNames用户组属性(过滤是唯一)
  8. 用户名字段: uid
  9. 姓氏: sn
  10. LDAP用户名字字段:cn
  11. LDAP认证请求:uid=  #注意openladp默认是cn 您需要进行设置RDN
  12. LDAP 版本: 3
  13. LDAP Email: mail

openldap 服务创建配置如下:

1add0193817c86a4f4d2d993373e06b3.png

weiyigeek.top-openldap 服务

补充由于版本适用于AD的LDAP,此时需要对ldap.php文件进行修改

  1. #Index: app/Models/Ldap.php
  2. @@ -98,8 +98,10 @@
  3. if (!$ldapbind = @ldap_bind($connection, $userDn, $password)) {
  4.   return false;
  5. else {
  6.   if(!$ldapbind = Ldap::bindAdminToLdap($connection)){
  7.     return false;
  8.   }
  9. }
  10. @@ -148,7 +150,7 @@
  11.   if (!$ldapbind = @ldap_bind($connection, $ldap_username, $ldap_pass)) {
  12.       throw new Exception('Could not bind to LDAP: '.ldap_error($connection));
  13.   }
  14.   return $ldapbind;
  15. }

然后重启snipeit容器测试LDAP登录连接:

eb58daaeefa4d13759b303b6f9694612.png

weiyigeek.top-测试LDAP登录连接

  1. #开启同步密码(可以手动或者自动)
  2. docker exec -it snipe-it1 php artisan snipeit:ldap-sync --location="LDAP" --summary
  3. #禁用LDAP登录
  4. docker exec -it snipe-it1 php artisan snipeit:disable

9eb351dc0d18e7afd991b4784cd3fcd6.png

weiyigeek.top-LDAP登录

补充知识:

  • (1) Windows AD 域 LDAP过滤器完整格式 &(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2))

  • (2) SnipeIT 定时同步 0 */3 * * * /usr/local/php/bin/php /data/http/html/snipeit/artisan snipeit:ldap-sync >> /dev/null 2>&1 //每三个小时执行一次

67f030db15dc2b65740a61ef207e5612.png

weiyigeek.top-AD-LDAP

  • (3) Snipe-IT BackUP 可以在页面上进行备份也可以采用命令行工具进行备份,实际上是创建数据库的SQL转储以及任何图像以及文件附件;

php artisan snipeit:backup

 

5.后续升级

 

常规安装升级

注意:升级之前请备份数据库及程序(即snipe-it目录),因在国内Github被qiang,所以无法通过GIT自动升级,所以只能自己手动升级了。

1.备份程序目录

mv /data/http/html/snipe-it/ /data/http/html/snipe-it_bakxxxxxxxx/#此处因后面需要重新解压程序目录,所以在此处直接重命名

2.解压新版本到/data/http/html/snipe-it目录

  1. tar -zxvf snipe-it-4.5.0.tar.gz -C /data/http/html/
  2. cd /data/http/html/
  3. mv snipe-it-4.5.0/ snipe-it

3.拷贝旧程序的配置文件至新目录并授权

  1. #如提示是否要覆盖.gitignore或者.gitkeep,请输入no。
  2. cp -R snipe-it-backup/public/uploads/* snipe-it/public/uploads
  3. cp -R snipe-it-backup/storage/private_uploads/* snipe-it/storage/private_uploads
  4. cp -R snipe-it-backup/storage/app/backups/* snipe-it/storage/app/backups
  5. cp -R snipe-it-backup/.env snipe-it/
  6. cp -R snipe-it-backup/storage/oauth-private.key snipe-it/storage/oauth-private.key
  7. cp -R snipe-it-backup/storage/oauth-public.key snipe-it/storage/oauth-public.key
  8. chown -R apache:apaches snipe-it/
  9. chmod -R 775 snipe-it/

4.重新执行Composer安装

  1. cd snipe-it/
  2. curl -sS https://getcomposer.org/installer | php
  3. php composer.phar install --prefer-source
  4. php composer.phar dump-autoloa
  5. php artisan migrate
  6. #如提示Do you really wish to run this command? (yes/no),请输入yes

5.清除缓存

  1. php artisan config:clear
  2. php artisan config:cache

到此升级完成,请访问你的网页查看页面及数据是否正常。

 

Docker安装升级官方文档:https://snipe-it.readme.io/docs/docker

 

数据库迁移:

  1. CREATE DATABASE snipeit;
  2. CREATE USER 'snipeit'@'%' IDENDIFIED BY '123456';
  3. GRANT all ON snipeit.* TO 'snipeit'@'%' WITH GRANT OPTION;  # GRANT OPTION 则是管理员权限;

0x02 CLPI

安装流程

描述:GLPI是一款基于开源技术的令人难以置信的服务管理软件,它可以帮助您以简单的方式规划和管理IT资产更改,高效地解决问题,自动化业务流程,并获得对IT基础架构的控制权。

678600ccd6c3896f28dafe9364080702.png

weiyigeek.top-CLPI主页图

官网地址: https://glpi-project.org/

CMDB 系统: abbr. 配置管理数据库(Configuration Management Database)

  1. git clone https://github.com/luckman666/deploy_glpi.git
  2. cd deploy_glpi
  3. docker-compose up -d

访问进行:http://10.10.10.10:8081/install/install.php 进行安装CLPI流程

5fa9d76cb0aedff9067a7db3c2c6932d.png

weiyigeek.top-安装CLPI流程1

04bf3f06d3ebbb23b1e8757f38617415.png

weiyigeek.top-安装CLPI流程2

数据库设置(注意这里采用低权限的用户):60c0446b727860ab64a8903d3cfb6214.png

选择我们创建的数据库(glpi):

a4d519f475dcd30f6dcb2151775f9d6a.png

weiyigeek.top-选择数据库

直接下一步,直到显示 缺省 登录名/密码是:

  1. 管理员帐号是 glpi/glpi
  2. 技术员帐号是 tech/tech
  3. 普通帐号是 normal/normal
  4. 只能发布的帐号是 post-only/postonly

b96076f70b8fd129c0aa35f21b9313b2.png

weiyigeek.top-登录验证

亲,文章就要看完了,不关注一下【全栈工程师修炼指南】吗?

登录后主界面:f46d04d7be7d35f2aa784dbeb5051765.png

注意事项:

  • 为了安全,请更改默认用户glpi post-only tech normal 的密码

  • 为了安全,请删除文件:install/install.php

帮助文档:https://glpi-project.org/documentation/

至此完毕,更多技术文章,请关注我获取及时文章推送!

原文地址: https://blog.weiyigeek.top/2019/11-22-110.html

如果此篇文章对你有帮助,请你将它分享给更多的人! 

6e38e8cda91ab0e3b5059a36cb99c4f5.gif

f5783f0bbb46f41c7896033691ea459a.png 学习书籍推荐 往期发布文章 2d46a82d7a0ed93248d72a04ac734331.png

 专栏推荐  

推荐阅读
相关标签