服務創(chuàng)造價值、存在造就未來
想要高效的完成日常運維工作,不論是代碼部署、應用管理還是資產信息錄入,都需要一個自動化運維平臺。
今天我們分享一個開源項目,它可以幫助運維人員完成日常工作,提高效率,降低成本,它就是:OpsManage
OpsManage是一個自動化運維平臺:,提供了代碼及應用部署CI/CD、資產管理CMDB、計劃任務管理平臺、SQL審核|回滾、任務調度、站內WIKI等功能。
開發(fā)語言與框架:
編程語言:Python3.6 + HTML + JScripts前端Web框架:Bootstrap后端Web框架:Django后端Task框架:Celery + RedisOpsManage開發(fā)語言主要是Python,Web框架是Django,還采用了Celery和Redis作為后端Task框架,以實現異步任務處理和分布式消息隊列服務。Celery是一個異步任務隊列/作業(yè)隊列,通過它能夠實現任務的分發(fā)和處理,而Redis則提供了持久化的數據存儲和緩存,為任務處理提供了必要的支持。
首先部署前請確認環(huán)境要求:
- 編程語言:Python 3.6 - 操作系統(tǒng):CentOS 6+ - Ansible版本:2.6 + - 部署平臺及節(jié)點服務器:Rsync 3+ - MySQL版本:5.1-5.6一、安裝Python
# yum install epel-release -y # yum install zlib zlib-devel readline-devel sqlite-devel bzip2-devel openssl-devel gdbm-devel libdbi-devel ncurses-libs kernel-devel libxslt-devel libffi-devel python-devel zlib-devel openldap-devel sshpass gcc git rabbitmq-server supervisor -y # yum localinstall <http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm> # yum install mysql-community-server mysql-devel -y # wget <https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz> #CentOS 7不用安裝python2.7 # tar -xzvf Python-3.6.6.tgz # cd Python-3.6.6 # ./configure --prefix=/usr/local/python3 # make all # make install # make clean # make distclean # ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3二、安裝模塊
# cd /mnt/ # git clone -b v3 <https://github.com/welliamcao/OpsManage.git> # cd /mnt/OpsManage/ # pip3 install -r requirements.txt #CentOS 7使用pip3三、安裝Redis
# wget <http://download.redis.io/releases/redis-3.2.8.tar.gz> # tar -xzvf redis-3.2.8.tar.gz # cd redis-3.2.8 # make # make install # vim redis.conf修改以下配置(不要配置認證)
daemonize yes loglevel warning logfile "/var/log/redis.log" bind 你的服務器ip地址 例如: bind 127.0.0.1 192.168.88.201 # cd ../ # mv redis-3.2.8 /usr/local/redis # /usr/local/redis/src/redis-server /usr/local/redis/redis.conf四、安裝MySQL
# vim /etc/my.cnf [mysqld] character_set_server = utf8 添加以上字段 # /etc/init.d/mysqld restart #centos 6 # systemctl start mysqld.service #centos 7 # mysql -uroot -p #初始密碼為空,直接回車就行 mysql> create database opsmanage DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; mysql> grant all privileges on opsmanage.* to root@% identified by password; mysql>\\q五、配置RabbitMQ
# systemctl start rabbitmq-server.service #啟動RabbitMQ # systemctl enable rabbitmq-server.service #設置開機自啟動RabbitMQ # rabbitmqctl add_user admin admin #添加RabbitMQ賬戶 # rabbitmqctl set_user_tags admin administrator # rabbitmqctl set_permissions -p / admin . . . # rabbitmqctl list_users # rabbitmqctl delete_user guest #刪除guest賬戶(可以不刪除) # rabbitmq-plugins enable rabbitmq_management #開啟Web UI,可以通過http://server_IP:15672/訪問六、配置OpsManage
# cd /mnt/OpsManage/conf # vim opsmanage.ini 根據自己的情況修改配置七、生成數據表與管理員賬戶
# cd /mnt/OpsManage/ # /usr/local/python3/bin/python3 manage.py makemigrations account # /usr/local/python3/bin/python3 manage.py makemigrations wiki # /usr/local/python3/bin/python3 manage.py makemigrations orders # /usr/local/python3/bin/python3 manage.py makemigrations navbar # /usr/local/python3/bin/python3 manage.py makemigrations databases # /usr/local/python3/bin/python3 manage.py makemigrations asset # /usr/local/python3/bin/python3 manage.py makemigrations deploy # /usr/local/python3/bin/python3 manage.py makemigrations cicd # /usr/local/python3/bin/python3 manage.py makemigrations sched # /usr/local/python3/bin/python3 manage.py makemigrations apply # /usr/local/python3/bin/python3 manage.py migrate # /usr/local/python3/bin/python3 manage.py createsuperuser #創(chuàng)建管理員賬戶與密碼 # 如果出現錯誤ImportError: cannot import name LDAPError pip3 uninstall python-ldap pip3 install --upgrade python-ldap八、啟動部署平臺
# echo_supervisord_conf > /etc/supervisord.conf # export PYTHONOPTIMIZE=1 # vim /etc/supervisord.conf 最后添加,/var/log/celery-*.log這些是日志文件,如果有錯誤請注意查看,directory的值是代碼路徑 [program:celery-worker-default] environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1 command=/usr/local/python3/bin/celery -A OpsManage worker --loglevel=info -E -Q default -n worker-default@%%h directory=/mnt/OpsManage stdout_logfile=/var/log/celery-worker-default.log autostart=true autorestart=true redirect_stderr=true stopsignal=QUIT numprocs=1 [program:celery-worker-ansible] environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1 command=/usr/local/python3/bin/celery -A OpsManage worker --loglevel=info -E -Q ansible -n worker-ansible@%%h directory=/mnt/OpsManage stdout_logfile=/var/log/celery-worker-ansible.log autostart=true autorestart=true redirect_stderr=true stopsignal=QUIT numprocs=1 [program:celery-beat] environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1 command=/usr/local/python3/bin/celery -A OpsManage beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler directory=/mnt/OpsManage stdout_logfile=/var/log/celery-beat.log autostart=true autorestart=true redirect_stderr=true stopsignal=QUIT numprocs=1 [program:apply-task] environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1 command=/usr/local/python3/bin/python3 manage.py apply_task directory=/mnt/OpsManage stdout_logfile=/var/log/apply-task.log autostart=true autorestart=true redirect_stderr=true stopsignal=QUIT numprocs=1 [program:opsmanage-web] command=/usr/local/python3/bin/python3 manage.py runserver 0.0.0.0:8000 --http_timeout 1200 directory=/mnt/OpsManage stdout_logfile=/var/log/opsmanage-web.log stderr_logfile=/var/log/opsmanage-web-error.log autostart=true autorestart=true redirect_stderr=true stopsignal=QUIT 啟動celery # supervisord -c /etc/supervisord.conf # supervisorctl status #要檢查是否都是running狀態(tài),uptime是不是遞增 配置nginx(請注意服務器上面是否安裝了Nginx): # vim /etc/nginx/conf.d/opsmanage.conf server { listen 80 ; server_name 192.168.1.233; access_log /var/log/nginx/opsmanage_access.log; error_log /var/log/nginx/opsmanage_error.log; location / { proxy_next_upstream off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://192.168.1.233:8000$request_uri; } location /static/ { expires 30d; autoindex on; add_header Cache-Control private; alias /mnt/OpsManage/static/; } location /media/navbar/ { expires 30d; autoindex on; add_header Cache-Control private; alias /mnt/OpsManage/upload/navbar/; } location /media/avatar/ { expires 30d; autoindex on; add_header Cache-Control private; alias /mnt/OpsManage/upload/avatar/; } location /media/apply/icon/ { expires 30d; autoindex on; add_header Cache-Control private; alias /mnt/OpsManage/upload/apply/icon/; } } # nginx -t #檢查配置文件 # service start nginx #CentOS 6 # systemctl start nginx.service #CentOS 7項目提供了一個在線的試用環(huán)境,可以直接去體驗下項目的功能。
demo地址:URL: <http://42.194.214.22:8000/> UserName:demo Password:demo1. 代碼部署
OpsManage提供了便捷的代碼部署功能,用戶可以將自己的代碼上傳至平臺,并通過簡單的配置實現自動化部署。這大大簡化了部署流程,減少了人為錯誤的發(fā)生,提高了部署的效率和準確性。
2. 應用部署
除了代碼部署外,OpsManage還支持應用部署。用戶可以通過平臺管理自己的應用程序,并對其進行部署和更新。這樣可以有效管理應用的版本,確保線上應用的穩(wěn)定性和安全性。
3. 計劃任務
平臺還提供了計劃任務的管理功能,用戶可以在OpsManage上設置定時任務,定期執(zhí)行一些重復性的工作,比如日志清理、備份等。這樣能夠避免因為遺漏或疏忽而導致的重要任務未執(zhí)行,保證系統(tǒng)的穩(wěn)定運行。
4. 設備資產管理
OpsManage還具備設備資產管理功能,用戶可以在平臺上記錄和管理各類設備的信息,比如服務器、網絡設備等。通過統(tǒng)一的管理,可以及時查找到設備的位置、配置信息,方便運維人員進行維護和故障排查。
OpsManage可以直接建立站內WIKI,功能比較實用。
OpsManage 是一個已經發(fā)布了有很長時間的項目,項目提供了比較實用的功能,整體的實現是比較完整的。并項目采用的技術棧比較容易上手,所以無論是對于想要解決實際工作的中的問題,還是希望通過項目學習如何進行開發(fā),都是還挺不錯的。
最后希望推薦大家的項目可以帶來一些價值,或者能夠激發(fā)一些靈感。