OpenDevOps 安裝 文檔 6.12號版本 修改域名篇

http://docs.opendevops.cn/zh/latest/index.html

因爲我的是在virtualbox上做的實驗
而公司對網卡還有mac地址還有綁定
所以我的測試機網卡有2個,一個是和本機通信的192.168.56.103(手動配置IP地址,沒有網關),一個上網用的10.0.2.0網段的(上網的dns:218.85.152.99)
我的域名::xmlgrg.com,你要修改爲你自己的

首先確保服務器可以聯網

然後 運行下面的youhua.sh命令

#/bin/bash
function epel(){
    yum install epel-release -y >/dev/null 2>&1
    sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/epel.repo
    sed -i 's/#baseurl/baseurl/g' /etc/yum.repos.d/epel.repo
    sed -i '6s/enabled=0/enabled=1/g' /etc/yum.repos.d/epel.repo
    sed -i '7s/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/epel.repo
    yum clean all >/dev/null 2>&1
    #阿里雲機器用aliyun epel
    echo "[EPEL 配置] ==> OK"
}
function ulimits(){
cat > /etc/security/limits.conf <<EOF
* soft noproc 20480
* hard noproc 20480
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
EOF
ulimit -n 65535
ulimit -u 20480
echo "[ulimits 配置] ==> OK"
}
function ssh(){
    [ -f /etc/ssh/sshd_config ]  && sed -ir '13 iUseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config && /etc/init.d/sshd restart >/dev/null 2>&1
echo "[SSH 優化] ==> OK"
}

function kernel(){
cat > /etc/sysctl.conf <<EOF
fs.file-max = 65535
net.ipv4.tcp_max_tw_buckets = 1000000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
net.ipv4.tcp_mem = 786432 1048576 1572864
net.core.wmem_max = 873200
net.core.rmem_max = 873200
net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
net.core.somaxconn = 10240
net.core.netdev_max_backlog = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.ipv4.tcp_retries2 = 5
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.all.arp_ignore = 0
EOF
sysctl -p >/dev/null 2>&1
echo "[內核 優化] ==> OK"
}

function history(){
    if ! grep "HISTTIMEFORMAT" /etc/profile >/dev/null 2>&1
    then echo '
    UserIP=$(who -u am i | cut -d"("  -f 2 | sed -e "s/[()]//g")
    export HISTTIMEFORMAT="[%F %T] [`whoami`] [${UserIP}] " ' >> /etc/profile;
    fi
echo "[history 優化] ==> OK"
}

function security(){
    > /etc/issue
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
    setenforce 0 >/dev/null 2>&1
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    yum install -y openssl openssh bash >/dev/null 2>&1
    echo "[安全配置] ==> OK"
}

function other(){
    yum groupinstall Development tools -y >/dev/null 2>&1
    yum install -y vim wget lrzsz telnet traceroute iotop tree >/dev/null 2>&1
    yum install -y ncftp axel git zlib-devel openssl-devel unzip xz libxslt-devel libxml2-devel libcurl-devel >/dev/null 2>&1
    echo "[安裝常用工具] ==> OK"
    echo "export HOME=/root" >> /etc/profile
    source /etc/profile
    useradd -M -s /sbin/nologin nginx >/dev/null 2>&1
    mkdir -p /root/ops_scripts /data1/www
    mkdir -p /opt/codo/
}

function quanxian(){
chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow && chmod 0644 /etc/group && chmod 0644 /etc/passwd && chmod 0400 /etc/shadow && chmod 0400 /etc/gshadow
}
export -f epel
export -f ulimits
export -f ssh
export -f kernel
export -f history
export -f security
export -f other
export -f quanxian

##格式必須是: bash script 函數名1#函數2
## 例如: bash system_init_v1.sh epel#ulimits#ssh
#echo $1 | awk -F "#" '{for(i=1;i<=NF;++i) system($i)}'
epel
ulimits
ssh
kernel
history
security
other
quanxian
echo '[Success]System Init OK'

運行命令
# sh +x youhua.sh

設置靜態IP地址

重啓服務器

創建項目目錄

# mkdir -p /opt/codo/ && cd /opt/codo/

環境變量

以下內容貼入到vim /opt/codo/env.sh文件,剛開始接觸這裏可能會稍微有點難理解,
後面文檔將會說明每個環境變量的用途,主要修改域名/地址和密碼信息

#/bin/bash
echo -e "\033[31m token_secret一定要做修改,防止網站被***!!!!!!! \033[0m"

#本機的IP地址
export LOCALHOST_IP="192.168.56.103"

#設置你的MYSQL密碼
export MYSQL_PASSWORD="xmlgrg163"

### 設置你的redis密碼
export REDIS_PASSWORD="xmlgrg163"

### RabbitMQ用戶密碼信息
export MQ_USER="ss"
export MQ_PASSWORD="xmlgrg163"

##這部分是模塊化部署,微服務,每個服務都有一個單獨的域名
### 管理後端地址
export mg_domain="mg.xmlgrg.com"

### 定時任務地址,目前只啓動一個進程,ip  
export cron_domain="192.168.56.103"

### 任務系統地址
export task_domain="task.xmlgrg.com"

### CMDB系統地址
export cmdb_domain="cmdb2.xmlgrg.com"

### 運維工具地址
export tools_domain="tools.xmlgrg.com"

### 域名管理地址
export dns_domain="dns.xmlgrg.com"

### 配置中心域名
export kerrigan_domain="kerrigan.xmlgrg.com"

### 前端地址,也就是你的訪問地址
export front_domain="demo-ss.xmlgrg.com"

### api網關地址
export api_gw_url="gw.xmlgrg.com"

#codo-admin用到的cookie和token,可留默認
export cookie_secret="nJ2oZis0V/xlArY2rzpIE6ioC9/KlqR2fd59sD=UXZJ=3OeROB"
# 這裏codo-admin和gw網關都會用到,一定要修改。可生成隨意字符
export token_secret="pXFb4i%*834gfdh963df718iodGq4dsafsdadg7yI6ImF1999aaG7"

##一般情況下都是隻用一個數據庫就可以了
# 寫數據庫
export DEFAULT_DB_DBHOST="192.168.56.103"
export DEFAULT_DB_DBPORT='3306'
export DEFAULT_DB_DBUSER='root'
export DEFAULT_DB_DBPWD=${MYSQL_PASSWORD}

# 讀數據庫
export READONLY_DB_DBHOST='192.168.56.103'
export READONLY_DB_DBPORT='3306'
export READONLY_DB_DBUSER='root'
export READONLY_DB_DBPWD=${MYSQL_PASSWORD}
#export READONLY_DB_DBNAME=${MYSQL_PASSWORD}

# 消息隊列
export DEFAULT_MQ_ADDR='192.168.56.103'
export DEFAULT_MQ_USER=${MQ_USER}
export DEFAULT_MQ_PWD=${MQ_PASSWORD}

# 緩存
export DEFAULT_REDIS_HOST='192.168.56.103'
export DEFAULT_REDIS_PORT=6379
export DEFAULT_REDIS_PASSWORD=${REDIS_PASSWORD}

最後
# source /opt/codo/env.sh

安裝Python3

建議使用Python36,若你的系統裏面已經存在Python36可以跳過此步驟。
vim python36.sh 新建python安裝的腳本

#/bin/bash
echo -e "\033[32m [INFO]: Start install python3 \033[0m"
yum groupinstall Development tools -y
yum install -y  zlib-devel openssl-devel libxslt-devel libxml2-devel libcurl-devel
cd /usr/local/src/
wget -q -c https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
tar xf  Python-3.6.4.tar.xz >/dev/null 2>&1 && cd Python-3.6.4
./configure >/dev/null 2>&1
make >/dev/null 2>&1 && make install >/dev/null 2>&1
if [ $? == 0 ];then
    echo -e "\033[32m [INFO]: python3 install success. \033[0m"
else
    echo -e "\033[31m [ERROR]: python3 install faild \033[0m"
    exit -1
fi

執行
# sh -x python36.sh 

安裝Docker-compose

若已安裝docker-compose可跳過
vim docker-compose.sh 新建docker-compose安裝的腳本

#/bin/bash
echo -e "\033[32m [INFO]: Start install docker,docker-compose \033[0m"
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum install -y docker-ce
###啓動
/bin/systemctl start docker.service
### 開機自啓
/bin/systemctl enable docker.service
#安裝docker-compose編排工具
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
pip3 install docker-compose
if [ $? == 0 ];then
    echo -e "\033[32m [INFO]: docker-compose install success. \033[0m"
else
    echo -e "\033[31m [ERROR]: docker-compose install faild \033[0m"
    exit -2
fi

執行
# sh -x  docker-compose.sh

設置docker加速

#mkdir -p /etc/docker
#vim /etc/docker/daemon.json 
{
     "registry-mirrors": ["https://f2bv707v.mirror.aliyuncs.com"]
}

#systemctl daemon-reload
#systemctl restart docker   

安裝MySQL

# source /opt/codo/env.sh

一般來說 一個MySQL實例即可,如果有需求可以自行搭建主從,每個服務都可以有自己的數據庫

我們這裏示例是用Docker部署的MySQL,你也可以使用你自己的MySQL
vim MySQL.sh 新建MySQL安裝的腳本

#/bin/bash
yum install mysql -y
echo -e "\033[32m [INFO]: Start install mysql5.7 \033[0m"
cat >docker-compose.yml <<EOF
mysql:
  restart: unless-stopped
  image: mysql:5.7
  volumes:
    - /data/mysql:/var/lib/mysql
    - /data/mysql_conf:/etc/mysql/conf.d
  ports:
    - "3306:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
EOF
docker-compose up -d   #啓動
if [ $? == 0 ];then
    echo -e "\033[32m [INFO]: mysql install success. \033[0m"
    echo -e "\033[32m [INFO]: 本機mysql客戶端的已經安裝. \033[0m"
    echo -e "\033[32m [INFO]: mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD} \033[0m"
else
    echo -e "\033[31m [ERROR]: mysql57 install faild \033[0m"
    exit -3
fi

執行
sh +x MySQL.sh

安裝Redis
vim Redis.sh 新建Redis安裝的腳本

#/bin/bash
echo -e "\033[32m [INFO]: Start install redis3.2 \033[0m"
yum -y install redis-3.2.*

echo "[INFO]: start init redis"
### 開啓AOF
sed -i 's#appendonly no$#appendonly yes#g' /etc/redis.conf
### 操作系統決定
sed -i 's#appendfsync .*$$#appendfsync everysec$#g' /etc/redis.conf
### 修改綁定IP
sed -i 's/^bind 127.0.0.1$/#bind 127.0.0.1/g' /etc/redis.conf
### 是否以守護進程方式啓動
sed -i 's#daemonize no$#daemonize yes#g' /etc/redis.conf
### 當時間間隔超過60秒,或存儲超過1000條記錄時,進行持久化
sed -i 's#^save 60 .*$#save 60 1000#g' /etc/redis.conf
### 快照壓縮
sed -i 's#rdbcompression no$#rdbcompression yes#g' /etc/redis.conf
### 添加密碼
sed -i "s#.*requirepass .*#requirepass ${REDIS_PASSWORD}#g" /etc/redis.conf
systemctl start redis
systemctl status redis
systemctl enable redis

if [ $? == 0 ];then
    echo -e "\033[32m [INFO]: redis install success. \033[0m"
    echo -e "\033[32m [INFO]: redis-cli -h 127.0.0.1 -p 6379 -a ${REDIS_PASSWORD}"
else
    echo -e "\033[31m [ERROR]: redis install faild \033[0m"
    exit -4
fi

執行
# sh +x  Redis.sh

設置redis的庫
# redis-cli -h 127.0.0.1 -p 6379 -a xmlgrg163
keys *
select 8
exit

安裝RabbitMQ

注意安裝完MQ後不要修改主機名,否則MQ可能會崩掉
vim RabbitMQ.sh 新建RabbitMQ安裝的腳本

#/bin/bash
echo -e "\033[32m [INFO]: Start install rabbitmq \033[0m"
# echo $LOCALHOST_IP opendevops >> /etc/hosts
# echo opendevops > /etc/hostname
# export HOSTNAME=opendevops
yum install  -y rabbitmq-server
rabbitmq-plugins enable rabbitmq_management
systemctl start rabbitmq-server
rabbitmqctl add_user ${MQ_USER} ${MQ_PASSWORD}
rabbitmqctl set_user_tags ${MQ_USER} administrator
rabbitmqctl  set_permissions  -p  '/'  ${MQ_USER} '.' '.' '.'
systemctl restart rabbitmq-server
systemctl enable rabbitmq-server
systemctl status rabbitmq-server

# rabbitmq-server -detached
status=`systemctl status rabbitmq-server | grep "running" | wc -l`
if [ $status == 1 ];then
    echo -e "\033[32m [INFO]: rabbitmq install success. \033[0m"
else
    echo -e "\033[31m [ERROR]: rabbitmq install faild \033[0m"
    exit -5
fi

執行
# sh +x RabbitMQ.sh 

安裝DNS

部署內部DNS dnsmasq 主要用於內部通信,API網關要用到。

vim dnsmasq.sh 新建dnsmasq安裝的腳本

#/bin/bash
echo -e "\033[32m [INFO]: Start install dnsmasq \033[0m"
#install dnsmasq
yum install dnsmasq -y

# 設置上游DNS,畢竟你的Dns只是個代理   實際的DNS 
cat >/etc/resolv.dnsmasq <<EOF
nameserver 8.8.8.8
EOF

#設置host解析
cat >/etc/dnsmasqhosts <<EOF
$LOCALHOST_IP $front_domain
$LOCALHOST_IP $mg_domain
$LOCALHOST_IP $task_domain
$LOCALHOST_IP $api_gw_url
$LOCALHOST_IP $cmdb_domain
$LOCALHOST_IP $kerrigan_domain
$LOCALHOST_IP $tools_domain
$LOCALHOST_IP $dns_domain
EOF

#添加配置
#注意:
   # 剛裝完DNS可以先不用改本機的DNS,有一部分人反應Docker Build時候會報連不上mirrors,裝不了依賴。
   # 部署到API網關的時候,需要將本機DNS改成自己,不然沒辦法訪問以上mg.cron,cmdb等內網域名
#echo "nameserver $LOCALHOST_IP" > /etc/resolv.conf   
echo "resolv-file=/etc/resolv.dnsmasq" >> /etc/dnsmasq.conf
echo "addn-hosts=/etc/dnsmasqhosts" >> /etc/dnsmasq.conf

## 啓動
/bin/systemctl start dnsmasq.service
systemctl status dnsmasq
/bin/systemctl enable dnsmasq.service

if [ $? == 0 ];then
    echo -e "\033[32m [INFO]: dnsmasq install success. \033[0m"
else
    echo -e "\033[31m [ERROR]: dnsmasq install faild \033[0m"
    exit -6
fi

執行
# sh +x dnsmasq.sh 
# cat /etc/resolv.conf
# Generated by NetworkManager
# nameserver 192.168.56.103
nameserver 218.85.152.99
nameserver 218.85.157.99

ping 域名
# ping cmdb2.xmlgrg.com
PING cmdb2.xmlgrg.com (192.168.56.103) 56(84) bytes of data.
64 bytes from demo-ss.xmlgrg.com (192.168.56.103): icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from demo-ss.xmlgrg.com (192.168.56.103): icmp_seq=2 ttl=64 time=0.038 ms

因爲我是在virtualbox上的虛擬機做的實驗,發現我的/etc/resolv.conf,註釋掉其他的就沒法上網了~,~

項目前端安裝
vim qianduan.sh

#/bin/bash
echo -e "\033[32m [INFO]: codo(項目前端) Start install. \033[0m"
CODO_VER="codo-beta-0.3.0"
if ! which wget &>/dev/null; then yum install -y wget >/dev/null 2>&1;fi
[ ! -d /var/www ] && mkdir -p /var/www
cd /var/www && wget https://github.com/opendevops-cn/codo/releases/download/${CODO_VER}/${CODO_VER}.tar.gz
tar zxf ${CODO_VER}.tar.gz
if [ $? == 0 ];then
    echo -e "\033[32m [INFO]: codo(項目前端) install success. \033[0m"
else
    echo -e "\033[31m [ERROR]: codo(項目前端) install faild \033[0m"
    exit -8
fi

執行
# sh +x qianduan.sh

前端的靜態文件會存放在/var/www/codo/目錄內
測試一下 ll /var/www/codo/* 看下文件是不是存在
後續訪問使用API網關中的vhosts,節省資源,這裏不單獨安裝配置nginx

管理後端
codo-admin是基於tornado框架 restful風格的API 實現後臺管理,codo詳細參考,搭配使用codo前端(iView+ vue)組成的一套後臺用戶 權限以及系統管理的解決方案(提供登錄,註冊 密碼修改 鑑權 用戶管理 角色管理 權限管理 前端組件管理 前端路由管理 通知服務API 系統基礎信息接口)

獲取代碼
vim dm.sh

#/bin/bash
if ! which wget &>/dev/null; then yum install -y wget >/dev/null 2>&1;fi
if ! which git &>/dev/null; then yum install -y git >/dev/null 2>&1;fi
[ ! -d /opt/codo/ ] && mkdir -p /opt/codo
cd /opt/codo && git clone https://github.com/opendevops-cn/codo-admin.git 

執行
# sh +x dm.sh
# cd /opt/codo/codo-admin

修改相關配置

修改settings.py配置

注意:這裏的cookie_secret和token_secret必須和你的env.sh裏面的保持一致,後續網關也要用到這個。若不保持一直登陸後校驗不通過回被自動踢回
注意:這裏的token_secret必須要和你的網關保持一致,這個值是從env.sh拿來的,一定要做修改,防止網站被***,如果secret包含正則符號會導致sed失敗,請仔細檢查
# pwd
/opt/codo/codo-admin

#導入環境變量文件,最開始準備的環境變量文件
source /opt/codo/env.sh

sed -i "s#cookie_secret = .*#cookie_secret = '${cookie_secret}'#g" settings.py  
sed -i "s#token_secret = .*#token_secret = '${token_secret}'#g" settings.py     

#mysql配置信息
##我們項目支持取env環境變量,但是還是建議修改下。
DEFAULT_DB_DBNAME='codo_admin'
sed -i "s#DEFAULT_DB_DBHOST = .*#DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '${DEFAULT_DB_DBHOST}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPORT = .*#DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '${DEFAULT_DB_DBPORT}')#g" settings.py
sed -i "s#DEFAULT_DB_DBUSER = .*#DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', '${DEFAULT_DB_DBUSER}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPWD = .*#DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', '${DEFAULT_DB_DBPWD}')#g" settings.py
sed -i "s#DEFAULT_DB_DBNAME = .*#DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', '${DEFAULT_DB_DBNAME}')#g" settings.py

#只讀MySQL配置,若是單臺也直接寫成Master地址即可
sed -i "s#READONLY_DB_DBHOST = .*#READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '${READONLY_DB_DBHOST}')#g" settings.py
sed -i "s#READONLY_DB_DBPORT = .*#READONLY_DB_DBPORT = os.getenv('READONLY_DB_DBPORT', '${READONLY_DB_DBPORT}')#g" settings.py
sed -i "s#READONLY_DB_DBUSER = .*#READONLY_DB_DBUSER = os.getenv('READONLY_DB_DBUSER', '${READONLY_DB_DBUSER}')#g" settings.py
sed -i "s#READONLY_DB_DBPWD = .*#READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', '${READONLY_DB_DBPWD}')#g" settings.py
sed -i "s#READONLY_DB_DBNAME = .*#READONLY_DB_DBNAME = os.getenv('READONLY_DB_DBNAME', '${DEFAULT_DB_DBNAME}')#g" settings.py

#redis配置
sed -i "s#DEFAULT_REDIS_HOST = .*#DEFAULT_REDIS_HOST = os.getenv('DEFAULT_REDIS_HOST', '${DEFAULT_REDIS_HOST}')#g" settings.py
sed -i "s#DEFAULT_REDIS_PORT = .*#DEFAULT_REDIS_PORT = os.getenv('DEFAULT_REDIS_PORT', '${DEFAULT_REDIS_PORT}')#g" settings.py
sed -i "s#DEFAULT_REDIS_PASSWORD = .*#DEFAULT_REDIS_PASSWORD = os.getenv('DEFAULT_REDIS_PASSWORD', '${DEFAULT_REDIS_PASSWORD}')#g" settings.py

修改域名需要注意的地方

# vim /opt/codo/codo-admin/doc/nginx_ops.conf
:%[email protected]@xmlgrg.com@g

 proxy_set_header Cookie $http_cookie;  注意這個

編譯,啓動

#pwd
/opt/codo/codo-admin

修改Dockerfile
#vim Dockerfile

FROM ss1917/codo_base:beta0.3
RUN pip3 install --upgrade pip
RUN pip3 install -U git+https://github.com/ss1917/ops_sdk.git
#複製代碼
RUN mkdir -p /var/www/
ADD . /var/www/codo-admin/
#安裝pip依賴
RUN pip3 install -r /var/www/codo-admin/doc/requirements.txt
#日誌
VOLUME /var/log/
#準備文件
COPY doc/nginx_ops.conf /etc/nginx/conf.d/default.conf
COPY doc/supervisor_ops.conf  /etc/supervisord.conf
EXPOSE 80
CMD ["/usr/bin/supervisord"]

#bulid 鏡像 

docker build . -t do_mg_image
#啓動
docker-compose up -d

創建數據庫

mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD}
MySQL [(none)]> create database codo_admin default character set utf8mb4 collate utf8mb4_unicode_ci;
MySQL [(none)]> flush privileges;    然後退出

初始化表結構
# docker exec -ti codo-admin_do_mg_1  /usr/local/bin/python3 /var/www/codo-admin/db_sync.py
導入數據

主要是菜單,組件,權限列表,內置的用戶等
#導入數據
# pwd
/opt/codo/codo-admin

# mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD} codo_admin < ./doc/codo_admin_beta0.3.sql

docker-compose  restart 

測試codo-admin
### 01.日誌
tailf  /var/log/supervisor/mg.log  #確認沒有報錯
codo-admin 部署完畢

任務系統
CODO任務系統,負責整個系統中任務調度,此功能是必須要安裝的
下載代碼

# pwd
/opt/codo

# vim  codo-task.sh

#!/bin/bash
echo -e "\033[32m [INFO]: codo-task(任務系統) Start install. \033[0m"
if ! which wget &>/dev/null; then yum install -y wget >/dev/null 2>&1;fi
if ! which git &>/dev/null; then yum install -y git >/dev/null 2>&1;fi
[ ! -d /opt/codo/ ] && mkdir -p /opt/codo
cd /opt/codo && git clone https://github.com/opendevops-cn/codo-task.git

執行
# sh +x codo-task.sh

修改配置

# cd /opt/codo/codo-task

#同樣,這裏codo-task也支持取env環境變量,建議還是修改下默認配置
#導入環境變量文件,最開始準備的環境變量文件
source /opt/codo/env.sh

#修改配置
TASK_DB_DBNAME='codo_task' 

#任務系統的域名
sed -i "s#cookie_secret = .*#cookie_secret = '${cookie_secret}'#g" settings.py

#mysql配置
sed -i "s#DEFAULT_DB_DBHOST = .*#DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '${DEFAULT_DB_DBHOST}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPORT = .*#DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '${DEFAULT_DB_DBPORT}')#g" settings.py
sed -i "s#DEFAULT_DB_DBUSER = .*#DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', '${DEFAULT_DB_DBUSER}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPWD = .*#DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', '${DEFAULT_DB_DBPWD}')#g" settings.py
sed -i "s#DEFAULT_DB_DBNAME = .*#DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', '${TASK_DB_DBNAME}')#g" settings.py

#只讀MySQL配置
sed -i "s#READONLY_DB_DBHOST = .*#READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '${READONLY_DB_DBHOST}')#g" settings.py
sed -i "s#READONLY_DB_DBPORT = .*#READONLY_DB_DBPORT = os.getenv('READONLY_DB_DBPORT', '${READONLY_DB_DBPORT}')#g" settings.py
sed -i "s#READONLY_DB_DBUSER = .*#READONLY_DB_DBUSER = os.getenv('READONLY_DB_DBUSER', '${READONLY_DB_DBUSER}')#g" settings.py
sed -i "s#READONLY_DB_DBPWD = .*#READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', '${READONLY_DB_DBPWD}')#g" settings.py
sed -i "s#READONLY_DB_DBNAME = .*#READONLY_DB_DBNAME = os.getenv('READONLY_DB_DBNAME', '${TASK_DB_DBNAME}')#g" settings.py

#redis配置
sed -i "s#DEFAULT_REDIS_HOST = .*#DEFAULT_REDIS_HOST = os.getenv('DEFAULT_REDIS_HOST', '${DEFAULT_REDIS_HOST}')#g" settings.py
sed -i "s#DEFAULT_REDIS_PORT = .*#DEFAULT_REDIS_PORT = os.getenv('DEFAULT_REDIS_PORT', '${DEFAULT_REDIS_PORT}')#g" settings.py
sed -i "s#DEFAULT_REDIS_PASSWORD = .*#DEFAULT_REDIS_PASSWORD = os.getenv('DEFAULT_REDIS_PASSWORD', '${DEFAULT_REDIS_PASSWORD}')#g" settings.py

#MQ配置
sed -i "s#DEFAULT_MQ_ADDR = .*#DEFAULT_MQ_ADDR = os.getenv('DEFAULT_MQ_ADDR', '${DEFAULT_MQ_ADDR}')#g" settings.py
sed -i "s#DEFAULT_MQ_USER = .*#DEFAULT_MQ_USER = os.getenv('DEFAULT_MQ_USER', '${DEFAULT_MQ_USER}')#g" settings.py
sed -i "s#DEFAULT_MQ_PWD = .*#DEFAULT_MQ_PWD = os.getenv('DEFAULT_MQ_PWD', '${DEFAULT_MQ_PWD}')#g" settings.py

修改域名需要注意的地方

 # vim /opt/codo/codo-task/doc/nginx_ops.conf
:%[email protected]@xmlgrg.com@g

修改Dockerfile

#vim Dockerfile

FROM ss1917/codo_base:beta0.3
RUN pip3 install --upgrade pip
RUN pip3 install -U git+https://github.com/ss1917/ops_sdk.git
# 複製代碼
RUN mkdir -p /var/www/
ADD . /var/www/codo-task/
# 安裝pip依賴
RUN pip3 install -r /var/www/codo-task/doc/requirements.txt
# 日誌
VOLUME /var/log/
# 準備文件
COPY doc/nginx_ops.conf /etc/nginx/conf.d/default.conf
COPY doc/supervisor_ops.conf  /etc/supervisord.conf
EXPOSE 80
CMD ["/usr/bin/supervisord"]

編譯,啓動

#編譯鏡像
docker build . -t codo_task_image
#啓動
docker-compose up -d

創建數據庫

mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD}
MySQL [(none)]> create database `codo_task` default character set utf8mb4 collate utf8mb4_unicode_ci;
MySQL [(none)]> flush privileges;
MySQL [(none)]> exit
Bye

初始化表結構

docker exec -ti codo-task_codo_task_1  /usr/local/bin/python3 /var/www/codo-task/db_sync.py
導入數據

重啓
docker-compose  restart 
測試

日誌文件位置統一:/var/log/supervisor/
01. 查看日誌
tailf /var/log/supervisor/task_scheduler.log  #確認沒報錯
tailf /var/log/supervisor/exec_task.log   #執行任務的日誌
# docker exec -it codo-cron_codo_cron_1 /bin/sh    進入容器中
sh-4.2# cd /usr/share/nginx/html/
sh-4.2# ls
404.html  50x.html  index.html  nginx-logo.png  poweredby.png
sh-4.2#

定時任務
CODO項目定時任務模塊,定時任務完全兼容crontab,支持到秒級
下載代碼

vim codo_cron.sh

#!/bin/bash
echo -e "\033[32m [INFO]: codo_cron(定時任務) Start install. \033[0m"
if ! which wget &>/dev/null; then yum install -y wget >/dev/null 2>&1;fi
if ! which git &>/dev/null; then yum install -y git >/dev/null 2>&1;fi
[ ! -d /opt/codo/ ] && mkdir -p /opt/codo
cd /opt/codo && git clone https://github.com/opendevops-cn/codo-cron.git

執行
# sh  +x codo_cron.sh
# cd /opt/codo/codo-cron
修改配置

#同樣,這裏codo-cron也支持取env環境變量,建議還是修改下默認配置
#導入環境變量文件,最開始準備的環境變量文件
source /opt/codo/env.sh
#後端數據庫名稱,建議不要修改,初始化data.sql已經指定了數據庫名字,若需改請一塊修改
CRON_DB_DBNAME='codo_cron' 

sed -i "s#cookie_secret = .*#cookie_secret = '${cookie_secret}'#g" settings.py

#mysql配置
sed -i "s#DEFAULT_DB_DBHOST = .*#DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '${DEFAULT_DB_DBHOST}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPORT = .*#DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '${DEFAULT_DB_DBPORT}')#g" settings.py
sed -i "s#DEFAULT_DB_DBUSER = .*#DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', '${DEFAULT_DB_DBUSER}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPWD = .*#DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', '${DEFAULT_DB_DBPWD}')#g" settings.py
sed -i "s#DEFAULT_DB_DBNAME = .*#DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', '${CRON_DB_DBNAME}')#g" settings.py

#只讀MySQL配置
sed -i "s#READONLY_DB_DBHOST = .*#READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '${READONLY_DB_DBHOST}')#g" settings.py
sed -i "s#READONLY_DB_DBPORT = .*#READONLY_DB_DBPORT = os.getenv('READONLY_DB_DBPORT', '${READONLY_DB_DBPORT}')#g" settings.py
sed -i "s#READONLY_DB_DBUSER = .*#READONLY_DB_DBUSER = os.getenv('READONLY_DB_DBUSER', '${READONLY_DB_DBUSER}')#g" settings.py
sed -i "s#READONLY_DB_DBPWD = .*#READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', '${READONLY_DB_DBPWD}')#g" settings.py
sed -i "s#READONLY_DB_DBNAME = .*#READONLY_DB_DBNAME = os.getenv('READONLY_DB_DBNAME', '${CRON_DB_DBNAME}')#g" settings.py

修改Dockerfile

#vim Dockerfile

FROM ss1917/codo_base:beta0.3
# 設置編碼
ENV LANG en_US.UTF-8
# 同步時間
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN pip3 install --upgrade pip
RUN pip3 install -U git+https://github.com/ss1917/ops_sdk.git
# 複製代碼
RUN mkdir -p /var/www/
ADD . /var/www/codo-cron/
# 安裝pip依賴
RUN pip3 install -r /var/www/codo-cron/doc/requirements.txt
# 日誌
VOLUME /var/log/
# 準備文件
COPY doc/supervisor_ops.conf  /etc/supervisord.conf
EXPOSE 80
CMD ["/usr/bin/supervisord"]
#編譯鏡像
docker build . -t codo_cron_image
#啓動
docker-compose up -d

創建數據庫

mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD}
MySQL [(none)]> create database `codo_cron` default character set utf8mb4 collate utf8mb4_unicode_ci;
MySQL [(none)]> flush privileges;
MySQL [(none)]> exit
初始化表結構
# docker exec -ti codo-cron_codo_cron_1  /usr/local/bin/python3 /var/www/codo-cron/db_sync.py
重啓
docker-compose  restart 

測試

日誌文件位置統一:/var/log/supervisor/
01. 查看日誌
tailf /var/log/supervisor/cron.log   #確認沒報錯

配置中心
獲取代碼

vim pz.sh

#!/bin/bash
if ! which wget &>/dev/null; then yum install -y wget >/dev/null 2>&1;fi
if ! which git &>/dev/null; then yum install -y git >/dev/null 2>&1;fi
[ ! -d /opt/codo/ ] && mkdir -p /opt/codo
cd /opt/codo && git clone https://github.com/opendevops-cn/kerrigan.git && cd kerrigan

執行、
# sh +x pz.sh

修改相關配置

# cd /opt/codo/kerrigan/

修改settings.py配置

#導入環境變量文件,最開始準備的環境變量文件
source /opt/codo/env.sh
#修改管理後端域名
sed -i "s#cookie_secret = .*#cookie_secret = '${cookie_secret}'#g" settings.py 

#mysql配置信息
##我們項目支持取env環境變量,但是還是建議修改下。
DEFAULT_DB_DBNAME='codo_kerrigan'
sed -i "s#DEFAULT_DB_DBHOST = .*#DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '${DEFAULT_DB_DBHOST}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPORT = .*#DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '${DEFAULT_DB_DBPORT}')#g" settings.py
sed -i "s#DEFAULT_DB_DBUSER = .*#DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', '${DEFAULT_DB_DBUSER}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPWD = .*#DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', '${DEFAULT_DB_DBPWD}')#g" settings.py
sed -i "s#DEFAULT_DB_DBNAME = .*#DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', '${DEFAULT_DB_DBNAME}')#g" settings.py

#只讀MySQL配置,若是單臺也直接寫成Master地址即可
sed -i "s#READONLY_DB_DBHOST = .*#READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '${READONLY_DB_DBHOST}')#g" settings.py
sed -i "s#READONLY_DB_DBPORT = .*#READONLY_DB_DBPORT = os.getenv('READONLY_DB_DBPORT', '${READONLY_DB_DBPORT}')#g" settings.py
sed -i "s#READONLY_DB_DBUSER = .*#READONLY_DB_DBUSER = os.getenv('READONLY_DB_DBUSER', '${READONLY_DB_DBUSER}')#g" settings.py
sed -i "s#READONLY_DB_DBPWD = .*#READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', '${READONLY_DB_DBPWD}')#g" settings.py
sed -i "s#READONLY_DB_DBNAME = .*#READONLY_DB_DBNAME = os.getenv('READONLY_DB_DBNAME', '${DEFAULT_DB_DBNAME}')#g" settings.py

修改域名需要注意的地方

# vim /opt/codo/kerrigan/doc/nginx_ops.conf
:%[email protected]@xmlgrg.com@g

修改Dockerfile

# vim Dockerfile

FROM ss1917/codo_base:beta0.3
RUN pip3 install --upgrade pip
RUN pip3 install -U git+https://github.com/ss1917/ops_sdk.git
# 複製代碼
RUN mkdir -p /var/www/
ADD . /var/www/kerrigan/
# 安裝pip依賴
RUN pip3 install -r /var/www/kerrigan/doc/requirements.txt
# 日誌
VOLUME /var/log/
# 準備文件
COPY doc/nginx_ops.conf /etc/nginx/conf.d/default.conf
COPY doc/supervisor_ops.conf  /etc/supervisord.conf
EXPOSE 80
CMD ["/usr/bin/supervisord"]

#編譯鏡像
docker build . -t kerrigan_image
#啓動
docker-compose up -d

創建數據庫

mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD}
MySQL [(none)]> create database `codo_kerrigan` default character set utf8mb4 collate utf8mb4_unicode_ci;
MySQL [(none)]> flush privileges;
MySQL [(none)]> exit

初始化表結構
docker exec -ti  kerrigan_codo-kerrigan_1  /usr/local/bin/python3 /var/www/kerrigan/db_sync.py 
測試kerrigan

重啓
docker-compose  restart 

### 01.日誌
tailf /var/log/supervisor/kerrigan.log  #確認沒有報錯

運維工具
CODO運維工具支持:告警管理、項目管理、事件管理、加密解密、隨機密碼、提醒管理等
獲取代碼

vim yw.sh

#!/bin/bash
if ! which wget &>/dev/null; then yum install -y wget >/dev/null 2>&1;fi
if ! which git &>/dev/null; then yum install -y git >/dev/null 2>&1;fi
[ ! -d /opt/codo/ ] && mkdir -p /opt/codo
cd /opt/codo && git clone https://github.com/opendevops-cn/codo-tools.git && cd codo-tools

執行
# sh +x yw.sh

修改相關配置

# cd /opt/codo/codo-tools/
修改settings.py 配置

#導入環境變量文件,最開始準備的環境變量文件
source /opt/codo/env.sh

sed -i "s#cookie_secret = .*#cookie_secret = '${cookie_secret}'#g" settings.py 

#mysql配置信息
##我們項目支持取env環境變量,但是還是建議修改下。
DEFAULT_DB_DBNAME='codo_tools'
sed -i "s#DEFAULT_DB_DBHOST = .*#DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '${DEFAULT_DB_DBHOST}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPORT = .*#DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '${DEFAULT_DB_DBPORT}')#g" settings.py
sed -i "s#DEFAULT_DB_DBUSER = .*#DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', '${DEFAULT_DB_DBUSER}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPWD = .*#DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', '${DEFAULT_DB_DBPWD}')#g" settings.py
sed -i "s#DEFAULT_DB_DBNAME = .*#DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', '${DEFAULT_DB_DBNAME}')#g" settings.py

#redis配置
sed -i "s#DEFAULT_REDIS_HOST = .*#DEFAULT_REDIS_HOST = os.getenv('DEFAULT_REDIS_HOST', '${DEFAULT_REDIS_HOST}')#g" settings.py
sed -i "s#DEFAULT_REDIS_PORT = .*#DEFAULT_REDIS_PORT = os.getenv('DEFAULT_REDIS_PORT', '${DEFAULT_REDIS_PORT}')#g" settings.py
sed -i "s#DEFAULT_REDIS_PASSWORD = .*#DEFAULT_REDIS_PASSWORD = os.getenv('DEFAULT_REDIS_PASSWORD', '${DEFAULT_REDIS_PASSWORD}')#g" settings.py

修改域名需要注意的地方

# vim /opt/codo/codo-tools/doc/nginx_ops.conf
:%[email protected]@xmlgrg.com@g

修改Dockerfile

# vim Dockerfile 

FROM ss1917/codo_base:beta0.3
RUN pip3 install --upgrade pip
RUN pip3 install -U git+https://github.com/ss1917/ops_sdk.git
# 複製代碼
RUN mkdir -p /var/www/
ADD . /var/www/codo-tools/
# 安裝pip依賴
RUN pip3 install -r /var/www/codo-tools/doc/requirements.txt
# 日誌
VOLUME /var/log/
# 準備文件
COPY doc/nginx_ops.conf /etc/nginx/conf.d/default.conf
COPY doc/supervisor_ops.conf  /etc/supervisord.conf

EXPOSE 80
CMD ["/usr/bin/supervisord"]

編譯,啓動
#編譯鏡像
docker build . -t codo_tools
#啓動
docker-compose up -d

創建數據庫

mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD}
MySQL [(none)]> create database `codo_tools` default character set utf8mb4 collate utf8mb4_unicode_ci;
MySQL [(none)]> flush privileges;
MySQL [(none)]> exit

初始化表結構
docker exec -ti  codo-tools_codo_tools_1  /usr/local/bin/python3 /var/www/codo-tools/db_sync.py 

重啓
docker-compose  restart 

測試codo-tools
### 01.日誌
tailf /var/log/supervisor/tools.log  #服務日誌,確認沒有報錯
tailf /var/log/supervisor/cron_jobs.log  #定時提醒日誌

域名管理
CODO域名管理模塊,管理BIND 支持智能解析,多域名多主。
vim codo_dns.sh

#!/bin/bash
echo -e "\033[32m [INFO]: codo_dns(域名管理) Start install. \033[0m"
if ! which wget &>/dev/null; then yum install -y wget >/dev/null 2>&1;fi
if ! which git &>/dev/null; then yum install -y git >/dev/null 2>&1;fi
[ ! -d /opt/codo/ ] && mkdir -p /opt/codo
cd /opt/codo && git clone https://github.com/opendevops-cn/codo-dns.git

執行
# sh +x codo_dns.sh

修改配置

# cd /opt/codo/codo-dns/

同樣,這裏codo-dns也支持取env環境變量,建議還是修改下默認配置

#導入環境變量文件,最開始準備的環境變量文件
source /opt/codo/env.sh
#後端數據庫名稱
CRON_DB_DBNAME='codo_dns' 

sed -i "s#cookie_secret = .*#cookie_secret = '${cookie_secret}'#g" settings.py

#mysql配置
sed -i "s#DEFAULT_DB_DBHOST = .*#DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '${DEFAULT_DB_DBHOST}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPORT = .*#DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '${DEFAULT_DB_DBPORT}')#g" settings.py
sed -i "s#DEFAULT_DB_DBUSER = .*#DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', '${DEFAULT_DB_DBUSER}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPWD = .*#DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', '${DEFAULT_DB_DBPWD}')#g" settings.py
sed -i "s#DEFAULT_DB_DBNAME = .*#DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', '${CRON_DB_DBNAME}')#g" settings.py

#只讀MySQL配置
sed -i "s#READONLY_DB_DBHOST = .*#READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '${READONLY_DB_DBHOST}')#g" settings.py
sed -i "s#READONLY_DB_DBPORT = .*#READONLY_DB_DBPORT = os.getenv('READONLY_DB_DBPORT', '${READONLY_DB_DBPORT}')#g" settings.py
sed -i "s#READONLY_DB_DBUSER = .*#READONLY_DB_DBUSER = os.getenv('READONLY_DB_DBUSER', '${READONLY_DB_DBUSER}')#g" settings.py
sed -i "s#READONLY_DB_DBPWD = .*#READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', '${READONLY_DB_DBPWD}')#g" settings.py
sed -i "s#READONLY_DB_DBNAME = .*#READONLY_DB_DBNAME = os.getenv('READONLY_DB_DBNAME', '${CRON_DB_DBNAME}')#g" settings.py

修改域名需要注意的地方

# vim /opt/codo/codo-dns/doc/nginx_ops.conf
:%[email protected]@xmlgrg.com@g

修改Dockerfile

# vim Dockerfile

FROM ss1917/codo_base:beta0.3

RUN pip3 install --upgrade pip
RUN pip3 install -U git+https://github.com/ss1917/ops_sdk.git
# 複製代碼
RUN mkdir -p /var/www/
ADD . /var/www/codo-dns/
# 安裝pip依賴
RUN pip3 install -r /var/www/codo-dns/doc/requirements.txt
# 日誌
VOLUME /var/log/
# 準備文件
COPY doc/nginx_ops.conf /etc/nginx/conf.d/default.conf
COPY doc/supervisor_ops.conf  /etc/supervisord.conf

EXPOSE 80
CMD ["/usr/bin/supervisord"]

編譯,啓動
#編譯鏡像
docker build . -t codo_dns_image
#啓動
docker-compose up -d

創建數據庫

mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD}
MySQL [(none)]> create database `codo_dns` default character set utf8mb4 collate utf8mb4_unicode_ci;
MySQL [(none)]> flush privileges;
MySQL [(none)]> exit

初始化表結構
docker exec -ti codo-dns_codo-dns_1  /usr/local/bin/python3 /var/www/codo-dns/db_sync.py

重啓
docker-compose  restart 
測試

日誌文件位置統一:/var/log/supervisor/
01. 查看日誌
tailf /var/log/supervisor/codo_dns.log   #確認沒報錯

資產管理

vim zichan.sh

#!/bin/bash
echo -e "\033[32m [INFO]: codo_cmdb(資產管理) Start install. \033[0m"
if ! which wget &>/dev/null; then yum install -y wget >/dev/null 2>&1;fi
if ! which git &>/dev/null; then yum install -y git >/dev/null 2>&1;fi
[ ! -d /opt/codo/ ] && mkdir -p /opt/codo
cd /opt/codo && git clone https://github.com/opendevops-cn/codo-cmdb.git

執行
# sh +x zichan.sh

修改配置

# cd /opt/codo/codo-cmdb

#修改settings.py配置信息
#導入環境變量文件,最開始準備的環境變量文件
source /opt/codo/env.sh

#修改配置
#後端數據庫名稱,建議不要修改,初始化data.sql已經指定了數據庫名字,若需改請一塊修改
CMDB_DB_DBNAME='codo_cmdb' 

#任務系統的域名
sed -i "s#cookie_secret = .*#cookie_secret = '${cookie_secret}'#g" settings.py

#mysql配置
sed -i "s#DEFAULT_DB_DBHOST = .*#DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '${DEFAULT_DB_DBHOST}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPORT = .*#DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '${DEFAULT_DB_DBPORT}')#g" settings.py
sed -i "s#DEFAULT_DB_DBUSER = .*#DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', '${DEFAULT_DB_DBUSER}')#g" settings.py
sed -i "s#DEFAULT_DB_DBPWD = .*#DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', '${DEFAULT_DB_DBPWD}')#g" settings.py
sed -i "s#DEFAULT_DB_DBNAME = .*#DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', '${CMDB_DB_DBNAME}')#g" settings.py

#只讀MySQL配置
sed -i "s#READONLY_DB_DBHOST = .*#READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '${READONLY_DB_DBHOST}')#g" settings.py
sed -i "s#READONLY_DB_DBPORT = .*#READONLY_DB_DBPORT = os.getenv('READONLY_DB_DBPORT', '${READONLY_DB_DBPORT}')#g" settings.py
sed -i "s#READONLY_DB_DBUSER = .*#READONLY_DB_DBUSER = os.getenv('READONLY_DB_DBUSER', '${READONLY_DB_DBUSER}')#g" settings.py
sed -i "s#READONLY_DB_DBPWD = .*#READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', '${READONLY_DB_DBPWD}')#g" settings.py
sed -i "s#READONLY_DB_DBNAME = .*#READONLY_DB_DBNAME = os.getenv('READONLY_DB_DBNAME', '${CMDB_DB_DBNAME}')#g" settings.py

#redis配置
sed -i "s#DEFAULT_REDIS_HOST = .*#DEFAULT_REDIS_HOST = os.getenv('DEFAULT_REDIS_HOST', '${DEFAULT_REDIS_HOST}')#g" settings.py
sed -i "s#DEFAULT_REDIS_PORT = .*#DEFAULT_REDIS_PORT = os.getenv('DEFAULT_REDIS_PORT', '${DEFAULT_REDIS_PORT}')#g" settings.py
sed -i "s#DEFAULT_REDIS_PASSWORD = .*#DEFAULT_REDIS_PASSWORD = os.getenv('DEFAULT_REDIS_PASSWORD', '${DEFAULT_REDIS_PASSWORD}')#g" settings.py
#另外,同步標籤樹配置

#這裏如果配置codo-task的數據庫地址,則將數據同步到作業配置--TagTree下面(非必填項),但是建議配置
TASK_DB_DBNAME='codo_task' 
sed -i "s#CODO_TASK_DB_HOST = .*#CODO_TASK_DB_HOST = os.getenv('CODO_TASK_DB_HOST', '${DEFAULT_DB_DBHOST}')#g" settings.py
sed -i "s#CODO_TASK_DB_PORT = .*#CODO_TASK_DB_PORT = os.getenv('CODO_TASK_DB_PORT', '${DEFAULT_DB_DBPORT}')#g" settings.py
sed -i "s#CODO_TASK_DB_USER = .*#CODO_TASK_DB_USER = os.getenv('CODO_TASK_DB_USER', '${DEFAULT_DB_DBUSER}')#g" settings.py
sed -i "s#CODO_TASK_DB_PWD = .*#CODO_TASK_DB_PWD = os.getenv('CODO_TASK_DB_PWD', '${DEFAULT_DB_DBPWD}')#g" settings.py
sed -i "s#CODO_TASK_DB_DBNAME = .*#CODO_TASK_DB_DBNAME = os.getenv('CODO_TASK_DB_DBNAME', '${TASK_DB_DBNAME}')#g" settings.py

修改域名需要注意的地方

# vim  /opt/codo/codo-cmdb/doc/nginx_ops.conf
:%[email protected]@xmlgrg.com@g

修改Dockerfile

# vim Dockerfile 

FROM ss1917/codo_base:beta0.3
#
RUN pip3 install --upgrade pip
RUN pip3 install -U git+https://github.com/ss1917/ops_sdk.git
# 複製代碼
RUN mkdir -p /var/www/
ADD . /var/www/codo-cmdb/
# 安裝pip依賴
RUN pip3 install -r /var/www/codo-cmdb/doc/requirements.txt
# 日誌
VOLUME /var/log/
# 準備文件
COPY doc/nginx_ops.conf /etc/nginx/conf.d/default.conf
COPY doc/supervisor_ops.conf  /etc/supervisord.conf

EXPOSE 80
CMD ["/usr/bin/supervisord"]

打包鏡像

#安裝依賴的時候根據網絡因素定,如果很慢建議更改pip源站爲阿里的
docker build . -t codo_cmdb  
啓動Docker

docker-compose up -d

創建數據庫

mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD}
MySQL [(none)]> create database `codo_cmdb` default character set utf8mb4 collate utf8mb4_unicode_ci;
MySQL [(none)]> flush privileges;

MySQL [(none)]> exit
Bye

初始化表結構

#cmdb_codo_cmdb_1:是你的容器名稱
docker exec -ti codo-cmdb_codo_cmdb_1 /usr/local/bin/python3 /var/www/codo-cmdb/db_sync.py

重啓
docker-compose  restart 

日誌文件
服務日誌:tailf /var/log/supervisor/cmdb.log #主程序日誌
定時日誌:tailf /var/log/supervisor/cmdb_cron.log #一些後端守護自動運行的日誌

接口測試

可查看日誌看是否有報錯
默認端口:8050,可直接測試
# ss -lntp| grep 8050
LISTEN     0      10240       :::8050                    :::*                   users:(("docker-proxy",pid=19843,fd=4))

API網關
由於此項目是模塊化、微服務化,因此需要在藉助API網關,需要在API網關注冊,此步驟是必須的。
安裝openresty

yum update
yum install yum-utils -y
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
yum install openresty  openresty-resty -y

部署網關

# cd /opt/codo/ && git clone https://github.com/ss1917/api-gateway.git
# \cp -arp api-gateway/* /usr/local/openresty/nginx/
修改配置

主要修改nginx.conf配置信息和config.lua配置,具體參考API網關塊:
API網關修改配置https://github.com/ss1917/api-gateway/blob/master/README.md#%E4%BA%8C-%E4%BF%AE%E6%94%B9%E9%85%8D%E7%BD%AE
接下來配置:

因爲我把前端靜態文件也使用 網關進行代理 所以配置文件如下
全局nginx配置

這裏主要修改resolver 內部DNS服務器地址
# vim  /usr/local/openresty/nginx/conf/nginx.conf
user root;
worker_processes auto;
worker_rlimit_nofile 51200;
error_log logs/error.log;
events {
    use epoll;
    worker_connections 51024;
}
http {
    #設置默認lua搜索路徑
    lua_package_path '$prefix/lua/?.lua;/blah/?.lua;;';
    lua_code_cache on;      #線上環境設置爲on, off時可以熱加載lua文件
    lua_shared_dict user_info 1m;
    lua_shared_dict my_limit_conn_store 100m;   #100M可以放1.6M個鍵值對
    include             mime.types;    #代理靜態文件

    client_header_buffer_size 128k;   ######
    large_client_header_buffers 4 128k;   #####

    init_by_lua_file lua/init_by_lua.lua;       # nginx啓動時就會執行
    include ./conf.d/*.conf;                    # lua生成upstream
    resolver 192.168.56.103;                    #### 內部DNS服務器地址####
}

網關配置

# vim  /usr/local/openresty/nginx/conf/conf.d/gw.conf
    server {
        listen 80;
        server_name gw.xmlgrg.com;   ######
        lua_need_request_body on;           # 開啓獲取body數據記錄日誌

        location / {
            ### ws 支持
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            ### 獲取真實IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            access_by_lua_file lua/access_check.lua;
            set $my_upstream $my_upstream;
            proxy_pass http://$my_upstream;

            ### 跨域
            add_header Access-Control-Allow-Methods *;
            add_header Access-Control-Max-Age 3600;
            add_header Access-Control-Allow-Credentials true;
            add_header Access-Control-Allow-Origin $http_origin;
            add_header Access-Control-Allow-Headers $http_access_control_request_headers;
            if ($request_method = OPTIONS){
                return 204;}
        }
    }

前端資源配置

這裏要修改server_name 爲你的真實訪問域名

前端vhosts

# mkdir -pv /usr/local/openresty/nginx/conf/conf.d/
# vim /usr/local/openresty/nginx/conf/conf.d/demo.conf
這裏是前端的訪問入口,如果不使用網關代理靜態的話,可以使用nginx代理,請根據自身情況修改配置。
server {
        listen       80;
        server_name demo-ss.xmlgrg.com;      ########
        access_log /var/log/nginx/f_access.log;
        error_log  /var/log/nginx/f_error.log;
        root /var/www/codo;

        location / {
                    root /var/www/codo;
                    index index.html index.htm;
                    try_files $uri $uri/ /index.html;
                    }

        location /api {
                ### ws 支持
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                add_header 'Access-Control-Allow-Origin' '*';
                proxy_pass http://gw.xmlgrg.com;    ######
        }

        location ~ /(.svn|.git|admin|manage|.sh|.bash)$ {
            return 403;
        }
}

註冊API網關

# vim /usr/local/openresty/nginx/lua/configs.lua 請仔細閱讀下面需要修改配置的地方

json = require("cjson")

--mysql_config = {
--    host = "127.0.0.1",
--    port = 3306,
--    database = "lua",
--    user = "root",
--    password = "",
--    max_packet_size = 1024 * 1024
--}

-- redis配置,一定要修改,並且和codo-admin保持一致
redis_config = {
    host = '192.168.56.103',
    port = 6379,
    auth_pwd = 'xmlgrg163',
    db = 8,
    alive_time = 3600 * 24 * 7,
    channel = 'gw'
}

-- 注意:這裏的token_secret必須要和codo-admin裏面的token_secret保持一致
token_secret = "pXFb4i%*834gfdh963df718iodGq4dsafsdadg7yI6ImF1999aaG7"  
logs_file = '/var/log/gw.log'

--刷新權限到redis接口 
rewrite_cache_url = 'http://mg.xmlgrg.com:8010/v2/accounts/verify/'       
-- 注意:rewrite_cache_token要和codo-admin裏面的secret_key = '8b888a62-3edb-4920-b446-697a472b4001'保持一致
-- # cat /opt/codo/codo-admin/settings.py | grep token_secret
rewrite_cache_token = '8b888a62-3edb-4920-b446-697a472b4001'   

--併發限流配置
limit_conf = {
    rate = 10, --限制ip每分鐘只能調用n*60次接口
    burst = 10, --桶容量,用於平滑處理,最大接收請求次數
}

--upstream匹配規則,API網關域名
gw_domain_name = 'gw.xmlgrg.com' 

--下面的轉發一定要修改,根據自己實際數據修改
rewrite_conf = {
    [gw_domain_name] = {
        rewrite_urls = {
            {
                uri = "/dns",
                rewrite_upstream = "dns.xmlgrg.com:8060"
            },
            {
                uri = "/cmdb2",
                rewrite_upstream = "cmdb2.xmlgrg.com:8050"
            },
            {
                uri = "/tools",
                rewrite_upstream = "tools.xmlgrg.com:8040"
            },
            {
                uri = "/kerrigan",
                rewrite_upstream = "kerrigan.xmlgrg.com:8030"
            },
            {
                uri = "/cmdb",
                rewrite_upstream = "cmdb.xmlgrg.com:8002"
            },
            {
                uri = "/k8s",
                rewrite_upstream = "k8s.xmlgrg.com:8001"
            },
            {
                uri = "/task",
                rewrite_upstream = "task.xmlgrg.com:8020"
            },
            {
                uri = "/cron",
                rewrite_upstream = "192.168.56.103:9900"
            },
            {
                uri = "/mg",
                rewrite_upstream = "mg.xmlgrg.com:8010"
            },
            {
                uri = "/accounts",
                rewrite_upstream = "mg.xmlgrg.com:8010"
            },
        }
    }
}

API網關啓動

提醒:openresty服務器DNS必須指向--->最起初部署的DNS服務器地址,另外若你本機ping 以上隨便一個域名都不通的話,
那你要確認下你本機DNS指向你最初部署了DNS服務器了?
修改vim /etc/resolv.conf

#OpenResty 是一個基於 Nginx 與 Lua 的高性能 Web 平臺,使用的也是80端口,若不能啓動請檢查你的80端口是否被佔用了
#日誌:

# mkdir -pv /var/log/nginx/ && touch /var/log/nginx/f_access.log

cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.56.103
#nameserver 218.85.152.99
#nameserver 218.85.157.99

# vim /opt/codo/api-gateway/conf/nginx.conf
 resolver 192.168.56.103;                       # 內部DNS

# vim /usr/local/openresty/nginx/conf/nginx.conf
 resolver 192.168.56.103;                       # 內部DNS

# openresty -t   #測試
# systemctl start openresty
# systemctl enable openresty

訪問

地址:demo-ss.xmlgrg.com
用戶:admin
密碼:admin@opendevops

日誌路徑
若這裏訪問有報錯,請看下日誌,一般都是配置錯誤。
日誌路徑:所有模塊日誌統一/var/log/supervisor/

# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                               NAMES
6f8ed2457437        codo_cmdb:latest    "/usr/bin/supervisord"   3 minutes ago       Up 3 minutes               0.0.0.0:8050->80/tcp                codo-cmdb_codo_cmdb_1
2ce4ce6b98ce        codo_dns_image      "/usr/bin/supervisord"   23 minutes ago      Up 23 minutes              0.0.0.0:8060->80/tcp                codo-dns_codo-dns_1
afb9bed1b721        codo_tools:latest   "/usr/bin/supervisord"   27 minutes ago      Up 26 minutes              0.0.0.0:8040->80/tcp                codo-tools_codo_tools_1
be65ed6fe5f5        kerrigan_image      "/usr/bin/supervisord"   33 minutes ago      Up 32 minutes              0.0.0.0:8030->80/tcp                kerrigan_codo-kerrigan_1
b7b26c9b58e3        codo_cron_image     "/usr/bin/supervisord"   37 minutes ago      Up 35 minutes              80/tcp, 0.0.0.0:9900->9900/tcp      codo-cron_codo_cron_1
82e64820e4a8        codo_task_image     "/usr/bin/supervisord"   2 hours ago         Up 2 hours                 0.0.0.0:8020->80/tcp                codo-task_codo_task_1
d1ed317f84a8        do_mg_image         "/usr/bin/supervisord"   2 hours ago         Up 2 hours                 0.0.0.0:8010->80/tcp                codo-admin_do_mg_1
7a0aca87eac0        mysql:5.7           "docker-entrypoint.s…"   2 hours ago         Up 2 hours                 0.0.0.0:3306->3306/tcp, 33060/tcp   data_mysql_1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章