Razor

知识点

  • Razor
  • microkernel
  • repository
  • tags
  • broker
  • policy
  • winPE

Razor安装

  • Database安置
  • Razor Server安置
  • Razor Client安置

自动化部署centos7

  • 安装配置dnsmasq DHCP/TFTP/iPXE
  • 导入iPXE软件
  • 通过microkernel注册裸机节点
  • 创建镜像文件repository
  • 创建节点tags
  • 创建broker
  • 创建policy

自动化部署win7(失败)

  • 配置samba
  • 通过microkernel注册裸机节点(方法同上)
  • 创建镜像文件repository
  • 创建win7PE(失败)
  • 创建节点tags
  • 创建broker
  • 创建policy


知识点


  • Razor
    Razor is a provisioning application that deploys bare-metal systems. Policy-based provisioning lets you use characteristics of the hardware as well as user-provided data to make provisioning decisions. You can automatically discover bare-metal hardware, dynamically configure operating systems and hypervisors, and hand off nodes to Puppet for workload configuration.

Whenever a new node gets added, Razor discovers its characteristics by booting it with the Razor microkernel and inventorying its facts. The node is tagged based on its characteristics. Tags contain a match condition — a Boolean expression that has access to the node’s facts and determines whether the tag should be applied to the node or not. Node tags are compared to tags in the policy table. The first policy with tags that match the node’s tags is applied to the node.

  • microkernel
    razor定制的小型linux,用于启动裸机节点并收集信息

  • repository
    用于存放系统安装文件的库

  • 可通过以下三种参数创建不同类型的库

        url           – Points to content available on another server, for example, on a mirror that you maintain.
        iso-url       – Downloads and unpacks an ISO on the Razor server.
        no_content    – Creates a stub directory on the Razor server that you can manually fill with content.
    
  • 创建库的语法:
    razor create-repo --name=<repo name> --task <task name> --iso-url <URL>

  • 获取帮助:
    razor create-repo --help

  • tags
    由唯一的名称和匹配规则组成,用于归类满足匹配规则的裸机节点。

  • 将内存小于2G的节点归类为OldPC
    razor create-tag --name OldPC --rule '["<", ["num", ["fact", "memorysize_mb"]], 2048]'

  • 大于4个cpu(以上规则还可以这样写)
    [">", ["num", ["fact", "processorcount"]], 4]

  • 包含相关mac地址(也可以这样写)
    ["has_macaddress", "00:1a:4a:16:01:54", "00:1a:4a:16:01:55"]

  • 获取帮助
    razor create-tag --help

  • broker

  • 默认三种类型

       puppet-pe  – Hands off node management to Puppet Enterprise. This broker specifies the address of the Puppet server, the Puppet Enterprise version, and for Windows, the location of the Windows agent installer.
       puppet   – Hands off management to open source Puppet. This broker specifies the address of the Puppet server, the node certname, and the environment.
       noop  – Doesn’t hand off management. A no-op broker can be useful for getting started quickly or doing a basic installation without configuration management.
    
  • 可以自行创建类型
    参考:https://docs.puppet.com/pe/latest/razor_brokers.html

    • policy
      告诉Razor该装什么系统(软件),哪里获取安装文件以及如何配置此系统。
  • 创建方法
    razor create-policy --name centos-for-OldPC --repo centos-6 --broker noop --tag OldPC --root-password secret --max-count 20

  • winPE

Razor安装


Database安置

主机centos7对应库的postgresql版本太低,从postgresql官方站点安装最新版postgresql
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
查看相关postgresql包名称
yum list postgresql*
安装新版postgresql
yum install postgresql96-server
初始化postgresql-9.6
/usr/pgsql-9.6/bin/postgresql96-setup initdb
设置postgresql-9.6开机自启动
systemctl enable postgresql-9.6.service
启动postgresql-9.6服务
systemctl start postgresql-9.6.service

允许本地通过用户名密码连接postgresql数据库
vim /var/lib/pgsql/9.6/data/pg_hba.conf

local   all             all                                     trust
host    all             all             127.0.0.1/32            trust

为razor服务器创建数据库razor_prd和用户razor
su - postgres
createuser -P razor #password:razor
createdb -O razor razor_prd

安装razor-server

将安装相关文件并创建用户razor来运行服务
yum install http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm
yum install razor-server

配置razor连接到razor_prd数据库的参数
vim /etc/razor/config.yaml

  production:
    database_url: 'jdbc:postgresql:razor_prd?user=razor&password=razor'

将数据导入到数据库
razor-admin -e production migrate-database

启动razor-server服务
service razor-server start

验证服务是否已正常启动
wget http://localhost:8150/api

安装razor-client

yum install -y gem
gem install razor-client
razor -u http://razor:8150/api --help #验证是否正确安装

导入microkernel到razor库
cd /var/lib/razor/repo-store
wget https://s3-us-west-2.amazonaws.com/razor-releases/microkernel-007.tar
tar xvf /root/microkernel-007.tar

自动化部署centos7


安装配置dnsmasq DHCP/TFTP/iPXE

yum install -y dnsmasq
vim /etc/dnsmasq.conf

conf-dir=/etc/dnsmasq.d
listen-address=192.168.122.217,127.0.0.1
dhcp-range=192.168.122.50,192.168.122.55,12h

mkdir /var/lib/tftpboot
chmod 655 /var/lib/tftpboot

vim /etc/dnsmasq.d/razor

# This works for dnsmasq 2.45
# iPXE sets option 175, mark it for network IPXEBOOT
dhcp-match=IPXEBOOT,175
dhcp-boot=net:IPXEBOOT,bootstrap.ipxe
dhcp-boot=undionly.kpxe

# TFTP setup
enable-tftp
tftp-root=/var/lib/tftpboot

导入iPXE软件

wget http://boot.ipxe.org/undionly.kpxe -O /var/lib/tftpboot/undionly.kpxe

wget http://razor:8150/api/microkernel/bootstrap?nic_max=1 -O /var/lib/tftpboot/bootstrap.ipxe

通过microkernel注册安装节点

将裸机节点以PXE启动

在Razor服务器上查看节点信息razor nodes
[root@razor repo-store]# razor nodes

From http://localhost:8150/api/collections/nodes:

+-------+-------------------+-------+------------------+----------------+
| name  | dhcp_mac          | tags  | policy           | metadata count |
+-------+-------------------+-------+------------------+----------------+
| node1 | 00:1a:4a:16:01:54 | small | centos-for-small | 0              |
+-------+-------------------+-------+------------------+----------------+
Query an entry by including its name, e.g. `razor nodes node1`

razor nodes <NODE_NAME> facts
输出裸机的相关信息,后续可以参考这些项目来定义tags
[root@razor repo-store]# razor nodes node1 facts

From http://localhost:8150/api/collections/nodes/node1:

                virtual: kvm
            is_virtual: true
            hardwareisa: x86_64
            processors: 
                                models: [Intel Celeron_4x0 (Conroe/Merom Class Core 2)]
                                    count: 1
                            physicalcount: 1
        system_uptime: 
                            seconds: 4348
                            hours: 1
                            days: 0
                            uptime: 1:12 hours
            dhcp_servers: 
                            system: 192.168.122.217
                            eth0: 192.168.122.217
            network_eth0: 192.168.122.0
            network_lo: 127.0.0.0
            macaddress: 00:1a:4a:16:01:54
            architecture: x86_64
        hardwaremodel: x86_64
                    os: 
                            name: CentOS
                            family: RedHat
                            release: 
                                    major: 7
                                    minor: 1
                                        full: 7.1.1503
        facterversion: 2.4.4
            bios_vendor: SeaBIOS
            bios_version: seabios-1.7.5-11.el7
    bios_release_date: 04/01/2014
            manufacturer: oVirt
            productname: oVirt Node
            serialnumber: 4C4C4544-004C-4710-8032-B3C04F373232
                    uuid: A4DBC573-34AE-4BD3-9626-739C68A0AD08
                    type: Other
physicalprocessorcount: 1
    blockdevice_sr0_size: 1073741312
blockdevice_sr0_vendor: QEMU
blockdevice_sr0_model: QEMU DVD-ROM
            blockdevices: sr0
            processor0: Intel Celeron_4x0 (Conroe/Merom Class Core 2)
        processorcount: 1
            ipaddress: 192.168.122.54
            rubyplatform: x86_64-linux
            interfaces: eth0,lo
        ipaddress_eth0: 192.168.122.54
        macaddress_eth0: 00:1a:4a:16:01:54
            netmask_eth0: 255.255.255.0
                mtu_eth0: 1500
            ipaddress_lo: 127.0.0.1
            netmask_lo: 255.0.0.0
                mtu_lo: 65536
                    gid: root
        memorysize_mb: 991.59
        memoryfree_mb: 903.64
                uniqueid: 007f0100
                netmask: 255.255.255.0

Query additional details via: `razor nodes node1 facts [dhcp_servers, os, processors, system_uptime]`

创建镜像文件repository

因为本地已有iso镜像文件,所以采用file协议传文件,但要注意razor用户是否有目录和文件的读权限。
razor create-repo --name centos-7.0 --task centos --iso-url file:///root/CentOS-7.0-1406-x86_64-Minimal.iso

可以通过命令 razor commands来查看以上操作的执行状态。

如果以上执行状态为fail,可以重建名为centos-7.0的库,并手动将iso文件挂载到razor的repository
razor create-repo --name centos-7.0 --no-content --task centos
cd /var/lib/razor/repo-store
mkdir centos-7.0
mount /root/CentOS-7.0-1406-x86_64-Minimal.iso centos-7.0

创建节点tags

通过tags可以将裸机归类,以便按不同机器类型来部署不同OS发行版
razor create-tag --name small --rule '["<",["num",["fact","memorysize_mb"]],2048]'

查看哪些机器被标记为small
razor tags small nodes

创建broker

因没有安装puppet,所有就将broker类型配置为noop
razor create-broker --name nobroker --broker-type noop

创建policy

razor create-policy --name centos-for-small --repo centos-7.0 --tag small --root-password centec --hostname 'node1_vm.ctcnet.com' --broker nobroker

再次pxe启动裸机节点,将自动部署centos-7.0-minimal系统

自动化部署win7(失败)


前提条件

   要先准备安装win7的机器,在这台主机上制作包含razor脚本的winPE盘。同时服务器上要部署samba,以便winPE能访问win7系统安装文件。

安装配置samba

yum install samba -y

vim /etc/samba/smb.conf

     security = user
 #   passdb backend = tdbsam
     map to guest = bad user

    [razor]
        comment   = Windows Installers
        path      = /var/lib/razor/repo-store
        guest ok  = yes
        writable  = no
        browsable = yes

重启samba服务: systemctl restart smb

创建镜像文件repository

razor create-repo --name win7 --no-content --task win7
yum install http://mirrors.kernel.org/fedora-epel/epel-release-latest-7.noarch.rpm
yum install p7zip p7zip-plugins -y
cd /var/lib/razor/repo-store
mkdir win7&&cd win7
7z x /root/cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso

进入准备好的win7主机

安装ADK

https://download.microsoft.com/download/6/A/E/6AEA92B0-A412-4622-983E-5B305D2EBE56/adk/adksetup.exe

制作win7PE(失败)

 从Razor服务器拷贝/opt/razor/build-winpe/下所有文件到win7中,使用命令调用powershell脚本来制作PE镜像(制作失败)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容