運維自動化工具 Cobbler

来源:http://www.cnblogs.com/wangxiaoqiangs/archive/2016/04/05/5354846.html
-Advertisement-
Play Games

簡介: 關於操作系統安裝方面的自動化,早前我們使用 RedHat 推出的 Kickstart 來批量安裝操作系統,近年來 RedHat 又推出一個 Cobbler 。 Cobbler 使用 Python 開發,小巧輕便,能夠完成系統安裝、甚至一些服務的管理。( 號稱是補鞋匠都能學會的工具 ) Cob ...



簡介:

關於操作系統安裝方面的自動化,早前我們使用 RedHat 推出的 Kickstart 來批量安裝操作系統,近年來 RedHat 又推出一個 Cobbler 。

Cobbler 使用 Python 開發,小巧輕便,能夠完成系統安裝、甚至一些服務的管理。( 號稱是補鞋匠都能學會的工具 )

Cobbler 支持命令行管理、web 界面管理、還提供了 API 介面,以便二次開法。

## 關閉 SELinux 、iptables !!!

一、支撐環境安裝

shell > yum -y install epel-release ## 安裝 epel 源

shell > yum -y install cobbler httpd rsync tftp-server xinetd dhcp pykickstart fence-agents

二、配置 Tftp 、Rsync

shell > vim /etc/xinetd.d/tftp

service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no ## 原為 yes
per_source = 11
cps = 100 2
flags = IPv4
}

shell > vim /etc/xinetd.d/rsync

service rsync
{
disable = no ## 原為 yes
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

shell > vim /etc/httpd/conf

ServerName 127.0.0.1:80

## 這個東西大家都知道。

二、配置 Cobbler

shell > openssl passwd -1 -salt 'random-phrase-here' '123456'
$1$random-p$mzxQ/Sx848sXgvfwJCoZM0

## 生成 root 密碼( 此密碼為新安裝的客戶機 root 密碼 )

shell > vim /etc/cobbler/settings

manage_dhcp: 1 ## 原為 0

manage_tftpd: 1

manage_rsync: 1 ## 原為 0

next_server: 192.168.214.10 ## 本機 IP

server: 192.168.214.10 ## 本機 IP

default_password_crypted: "$1$random-p$mzxQ/Sx848sXgvfwJCoZM0" ## 生成的 root 密碼

三、配置 DHCP

shell > vim /etc/cobbler/dhcp.template ## 直接修改這個文件即可

subnet 192.168.214.0 netmask 255.255.255.0 {
option routers 192.168.214.2;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.214.100 192.168.214.120;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;

## 只修改這個區域的 IP 為合適的 IP 即可

shell > chkconfig --add httpd
shell > chkconfig --add xinetd
shell > chkconfig --add dhcpd
shell > chkconfig --add cobblerd
shell > service httpd start
正在啟動 httpd:
shell > service xinetd start
正在啟動 xinetd: [確定]
shell > service dhcpd start
正在啟動 dhcpd: [失敗]
shell > service cobblerd start
Starting cobbler daemon: [確定]

shell > cobbler check ## 檢查配置
Traceback (most recent call last):
File "/usr/bin/cobbler", line 36, in <module>
sys.exit(app.main())
File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 655, in main
rc = cli.run(sys.argv)
File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 270, in run
self.token = self.remote.login("", self.shared_secret)
File "/usr/lib64/python2.6/xmlrpclib.py", line 1199, in __call__
return self.__send(self.__name, args)
File "/usr/lib64/python2.6/xmlrpclib.py", line 1489, in __request
verbose=self.__verbose
File "/usr/lib64/python2.6/xmlrpclib.py", line 1253, in request
return self._parse_response(h.getfile(), sock)
File "/usr/lib64/python2.6/xmlrpclib.py", line 1392, in _parse_response
return u.close()
File "/usr/lib64/python2.6/xmlrpclib.py", line 838, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">

shell > cobbler get-loaders ( 解決方法 )

[shell > cobbler check ## 再次檢查
The following are potential configuration items that you may want to fix:

1 : service dhcpd is not running
2 : debmirror package is not installed, it will be required to manage debian deployments and repositories

Restart cobblerd and then run 'cobbler sync' to apply changes.

## 1 :提示 dhcpd 沒有運行,先不管
## 2 :提示 debmirror 沒有安裝。如果不是安裝 debian 之類的系統,可以忽略此提示。
(如需安裝,下載地址為:http://rpmfind.net/linux/rpm2html/search.php?query=debmirror)

shell > cobbler sync ## 同步操作
task started: 2015-05-27_010456_sync
task started (id=Sync, time=Wed May 27 01:04:56 2015)
running pre-sync triggers
cleaning trees
mkdir: /var/lib/tftpboot/pxelinux.cfg
mkdir: /var/lib/tftpboot/grub
mkdir: /var/lib/tftpboot/s390x
mkdir: /var/lib/tftpboot/ppc
mkdir: /var/lib/tftpboot/etc
removing: /var/lib/tftpboot/grub/images
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
trying hardlink /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
copying distros to tftpboot
copying images
generating PXE configuration files
generating PXE menu structure
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
cleaning link caches
rendering Rsync files
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout: 正在啟動 dhcpd:[確定]

received on stderr:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***

shell > service xinetd restart
停止 xinetd: [確定]
正在啟動 xinetd: [確定]
shell > service cobblerd restart
Stopping cobbler daemon: [確定]
Starting cobbler daemon: [確定]

三、導入安裝源

shell > mount /dev/cdrom /mnt/

shell > cobbler import --path=/mnt/ --arch=x86_64 --name=Centos-6.6-minimal

## 輸出信息略(Cobbler 將鏡像拷貝一份放在 /var/www/cobbler/ks_mirror/Centos-6.6-minimal-x86_64 目錄下)
(同時會創建一個名為 Centos-6.6-minimal-x86_64 的發佈版本及 profile 文件)

shell > cobbler list
distros:
Centos-6.6-minimal-x86_64

profiles:
Centos-6.6-minimal-x86_64

systems:

repos:

images:

mgmtclasses:

packages:

files:

四、創建 ks 文件

shell > vim /var/lib/cobbler/kickstarts/Centos-6.6_minimal-x86_64.ks

# platform=x86, AMD64, 或 Intel EM64T
# version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.214.10/cobbler/ks_mirror/Centos-6.6-minimal-x84_64/"
# Root password
rootpw --iscrypted $1$hk0MvN4A$Dz.sYvyDjac1.cMVTk9270
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
# System keyboard
keyboard us
# System language
lang zh_CN
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=1024
part / --fstype="ext4" --grow --size=1

## 這是我安裝了 system-config-kickstart 在圖形界面生成的 ks 文件。
## 看到第一行註釋行中有一個漢字了嗎?就是這個漢字讓我卡了兩天...( 文件中不要有漢字 )

五、關聯 ks 文件

shell > cobbler distro list
Centos-6.6-minimal-x86_64

## 有一個鏡像

shell > cobbler profile report --name Centos-6.6-minimal-x86_64
Name : Centos-6.6-minimal-x86_64
TFTP Boot Files : {}
Comment :
DHCP Tag : default
Distribution : Centos-6.6-minimal-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {}
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/sample_end.ks
Kickstart Metadata : {}
Management Classes : []
Management Parameters : <<inherit>>
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Proxy :
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Repos : []
Server Override : <<inherit>>
Template Files : {}
Virt Auto Boot : 1
Virt Bridge : xenbr0
Virt CPUs : 1
Virt Disk Driver Type : raw
Virt File Size(GB) : 5
Virt Path :
Virt RAM (MB) : 512
Virt Type : kvm

## 看到這個鏡像預設使用的 ks 文件為 /var/lib/cobbler/kickstarts/sample_end.ks

shell > cobbler profile add --name=Centos-6.6-minimal --distro=Centos-6.6-minimal-x86_64 --kickstart=/var/lib/cobbler/kickstarts/Centos-6.6_minimal-x86_64.ks

## 關聯後,再次查看是否關聯成功

shell > cobbler profile report --name Centos-6.6-minimal
Name : Centos-6.6-minimal
TFTP Boot Files : {}
Comment :
DHCP Tag : default
Distribution : Centos-6.6-minimal-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {}
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/Centos-6.6_minimal-x86_64.ks
Kickstart Metadata : {}
Management Classes : []
Management Parameters : <<inherit>>
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Proxy :
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Repos : []
Server Override : <<inherit>>
Template Files : {}
Virt Auto Boot : 1
Virt Bridge : xenbr0
Virt CPUs : 1
Virt Disk Driver Type : raw
Virt File Size(GB) : 5
Virt Path :
Virt RAM (MB) : 512
Virt Type : xenpv

## 已經關聯成功 !

shell > cobbler --help
usage
=====
cobbler <distro|profile|system|repo|image|mgmtclass|package|file> ...
[add|edit|copy|getks*|list|remove|rename|report] [options|--help]
cobbler <aclsetup|buildiso|import|list|replicate|report|reposync|sync|validateks|version|signature|get-loaders|hardlink> [options|--help]

shell > cobbler profile --help
usage
=====
cobbler profile add
cobbler profile copy
cobbler profile dumpvars
cobbler profile edit
cobbler profile find
cobbler profile getks
cobbler profile list
cobbler profile remove
cobbler profile rename
cobbler profile report

## 它有多種方法,添加、編輯、移除等等( 用到時,請自己琢磨 )。

shell > cobbler sync

## 同步一下配置,客戶端開機測試

## 從網路引導進入後,會有一個選擇列表,選擇要安裝 profile ,就可以自動完成安裝。

## 修改 ks.cfg 文件後,不需要 sync 就可以直接生效!

## 如果不想關閉防火牆,那麼請打開 TCP ( 69、80、25151 ) 埠。

## 遇到問題仔細觀察,ks.cfg 中一定不能有中文,註釋行也不可以!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 sudo apt-get install openssh-server 2 檢查sshd服務是否開啟 ps -ef| grep ssh 3 若沒有啟動,可以執行service ssh start ...
  • 介紹 經常需要和shell命令打交道,但是一直沒有系統的學習,接下來會花1到2個月的時間系統的學習一下shell命令,接下來就開啟shell命令的奇妙旅行吧。本章主要介紹shell的列印輸出。 知識要點 shell腳本都是以#!/bin/bash開頭;這是固定的寫法,其中/bin/bash是bash ...
  • 1、先在官網 http://www.unpbook.com/unpv13e.tar.gz 下載源文件 2、解壓:tar -xzvf unpv13e.tar.gz 3、cd unpv13e; ./configure 4、cd lib; make 5、以上生成了libunp.a 的靜態庫,將生成的靜態庫 ...
  • 系統OSX 10.11Qt Creator3.6qt一直無法設置斷點,原來是設置了Run in terminal終於鬆了口氣 ...
  • wol遠程喚醒需要網卡的支持,現在一般的網卡也都支持,只有有線網路能實現。 這裡介紹Wake On Lan Command Line的使用 下載地址 打開cmd,CD到下載wolcmd的文件路徑 命令格式 完成命令後就可以遠程喚醒了,如果有失敗的可以從以下幾點入手查找解決方法: ①網卡是否支持網路喚 ...
  • 1、vi的基本概念 基本上vi可以分為三種狀態,分別是 命令模式(command mode) 插入模式(Insert mode) 底行模式(last line mode) 命令模式(command mode) 插入模式(Insert mode) 底行模式(last line mode) 1) 命令行 ...
  • BOOTLIST:#bootlist -m normal -o (查看bootlist)#bootlist -m normal (設置bootlist為空,誰要在我機器上執行我就要哭了)#bootlist -m normal hdisk0 cd0 (設置bootlist)相關命令:shutdown ...
  • 簡介: 批量安裝操作系統工具之 Kickstart ,RedHat 早前推出的產品( 不多說了,現在都玩 Cobbler 啦 )。 測試環境:CentOS 6.6 x86_64 minimal 一、安裝軟體包 二、配置 DHCP 三、配置 tftp 四、pxelinux.0 五、配置 NFS 六、最 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...