Loda Doc

1 系统功能模块

系统各个功能模块如下:

Server模块:提供API服务,包括数据录入查询等,对接UI模块和agent模块
BootOS模块:提供一个临时内存的OS,便于完成硬件配置
Agent模块: 内置在bootOS中,完成与server的数据交互,配置初始化机器,数据上报

说明:本系统基于开源项目idcos演化而来( Apache License ),感谢他们对社区的贡献。

Loda与原有系统对比:

  • 精简架构和代码
  • 支持LDAP
  • 抛弃以rpm下发配置的方式,基于git进行版本管理,易于维护
  • 完善log上报
  • 部分bug逻辑优化

2 服务部署安装

本文以CentOS 6.7 为例进行部署。

2.1 安装DHCP服务


执行下列命令进行安装,并设置成开机启动

yum install dhcp

chkconfig dhcpd on

配置dhcp服务,请用户根据自己的实际情况修改网段:

vim /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 1800;
max-lease-time 3600;
next-server 192.168.0.1;
filename "gpxelinux.0";
option domain-name-servers 192.168.0.1;
option domain-search "idcos.net";
option root-path "192.168.0.1:/";

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.101 192.168.0.200;
    option routers 192.168.0.1;
}

说明:

  1. next-server 指向tftp服务器,默认是本机ip
  2. domain-name-servers 指向dns服务器,默认是本机ip
  3. domain-search dns搜索域,请根据实际情况修改
  4. root-path 指向客户端的根路径,默认是本机ip
  5. subnet 分配的dhcp网段,请根据实际情况修改

2.2 安装tftp服务


执行下列命令进行安装,并设置成开机启动

yum install tftp-server syslinux-tftpboot

chkconfig xinetd on

配置tftp服务,设定tftp根目录为/var/lib/tftpboot,设置 disable = no

vim /etc/xinetd.d/tftp

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}


修改default文件,默认引导bootOS文件

2.3 安装http服务


HTTP服务主要是用来拉取系统镜像,如果已经有现成的HTTP服务,可以跳过这一步。只要把解压的iso镜像文件能通过http访问到就行。

安装nginx服务并设置为开机启动

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

yum install nginx

chkconfig nginx on

下载系统安装介质,以centos 6.7为例,需要下载ISO文件并导入http目录。

mkdir -p /home/www/iso /home/www/centos/6.7/os/x86_64/

wget -c -P /home/www/iso http://mirrors.aliyun.com/centos/6.7/isos/x86_64/CentOS-6.7-x86_64-bin-DVD1.iso

mount -o loop /home/www/iso/CentOS-6.7-x86_64-bin-DVD1.iso /media

rsync -az /media/ /home/www/centos/6.7/os/x86_64/

umount /media

将bootOS的两个文件也放置在web目录中,确定能通过HTTP访问到,确保这里访问bootOS的地址和前面配置的default文件的位置是一样的。

2.4 安装mongoDB服务


mongoDB用于存储server端的所有数据,大家可以安装epel的repo或则10gen的repo通过yum缘进行安装。

rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm```

yum install mongodb-server -y

安装完了,记得根据自己的情况修改下配置文件,监听地址和端口什么的,配置文件默认位置:/etc/mongodb.conf, 最后启动mongoDB服务: /etc/init.d/mongod start

2.5 部署server程序


server程序包含一个二进制的可执行程序和一个配置文件。

将配置文件复制到 /etc/ 下:

mv loda-server.conf.sample /etc/loda-server.conf

server会默认读取/etc/loda-server.conf这个配置文件,-f 可以指定配置文件。

配置文件:


[common]
	//监听地址和端口
    listen                = "0.0.0.0:9999" 
    //获取配置脚本的git仓库
    gitaddr               = "https://git.baidu.com/loda-tools/%s.git"
    //tftp pxe目录
    pxeconfigdir          = "/var/lib/tftpboot/pxelinux.cfg"

[ldap]
    server                = "172.30.123.234:389"
    binddn                = "ldap_dn"
    password              = "password"
    uid                   = "sAMAccountName"
    base                  = "OU=技术部,DC=staff,DC=baidu,DC=com"

    //数据库配置
[db]
    host                 = "127.0.0.1"
    port                 = "27017"
    name                 = "loda"
    user                 = ""
    pass                 = ""
                     
    //log设置
[log]
    logdir                = "/var/logs/loda-server"
    # 日志级别支持(从低到高) DEBUG INFO WARNING ERROR FATAL , 日志输出会输出>= 配置级别内容
    loglevel              = "DEBUG"
    logrotatenum          = 3
    logrotatesize         = 104857600

启动server程序: ./loda-server start &

检查log和系统监听端口,查看是否启动成功:

2016/03/10 16:51:23 listening on 0.0.0.0:9999 (development)

tcp   0    0 :::9999    :::*     LISTEN     28910/./src/loda-server 

OK,服务启动成功!

停止服务 执行下面命令

./loda-server stop