1. 程式人生 > >Linux下自動化部署和配置工具

Linux下自動化部署和配置工具

轉自:http://bbs.chinaunix.net/thread-3731873-1-1.html

系統部署

一、Kickstart

主要針對Redhat和CentOS作業系統的安裝和初始配置,不過網路的配置仍然需要一臺一臺地進行。

二、Cobbler

與Kickstart類似,主要支援的也是Redhat和CentOS,不過它操作起來更簡單了。新版作業系統源中帶。

系統更新和應用部署

一、Puppet

支援升級軟體包、管理配置檔案、系統服務、cron任務以及新增新的配置、修復錯誤。客戶端需要安裝軟體。服務和客戶端都需要Ruby環境支援。提供基於SSL的認證機制。

新版作業系統源中帶。

二、Func

支援主控機上一次管理任意多臺伺服器,或任意多個伺服器組;



SSL證書管理體系;

提供常用的管理模組;

支援直接傳送命令和磁碟掛載;

系統管理員經常陷入一系列的重複任務中:如升級軟體包、管理配置檔案、系統服務、cron任務以及新增新的配置、修復錯誤等。這些任務通常是重複低 效的,解決這類任務的第一反應是讓他們自動化,於是出現了定製指令碼。由於環境複雜,定製指令碼和應用程式一再被重複開發,並且很難適合多種平臺,靈活性和功 能也很難保證,於是像Puppet這樣的自動化配置管理工具便出現了。
在開源世界裡,有很多配置工具可供選擇,這個領域一些關鍵的產品有:
Puppet(http://puppet.reductivelabs.com/):
Ruby寫成的配置管理工具,使用C/S架構,使用declarative language配置客戶端。

Cfengine(http://www.cfengine.org):
最先發布的開源配置工具之一,1993年釋出,同樣是C/S架構,通常應用於教育機構。
LCFG(http://www.lcfg.org/):
C/S架構的配置管理工具,使用XML定義配置。
Bcfg2
Python編寫的C/S架構的配置管理工具,使用規格書和客戶機響應配置目標主機。
SmartFrog(http://www.smartfrog.org/):
func(https://fedorahosted.org/func/)
本文件致力於描述使用Puppet管理你的主機、應用程式、後臺程式和各種服務。

Puppet簡介:
1. Puppet的用途
Puppet是開源的基於Ruby的系統配置管理工具,依賴於C/S的部署架構。主要開發者是Luke Kanies,遵循GPLv2版權協議。從1997年開始Kanies參與UNIX的系統管理工作,Puppet的開發源於這些經驗。因為對已有的配置工 具不甚滿意,從2001年到2005年間,Kanies開始在Reductive實驗室從事工具的開發。很快,Reductive實驗室釋出了他們的旗艦 產品——Puppet。

2. Pupput的特性
許多系統配置管理工具工作的方式非常類似,如cfengine。是什麼讓Puppet與眾不同?
Puppet的語法允許你建立一個單獨指令碼,用來在你所有的目標主機上建立一個使用者。所有的目標主機會依次使用適用於本地系統的語法解釋和執行這個 模組。舉例:如果這個配置是在Red Hat伺服器上執行,建立使用者使用useradd命令;如果這個配置是在FreeBSD主機上執行,使用的是adduser命令。
Puppet另一個卓越的地方是它的靈活性。源於開源軟體的天性,你可以自由的獲得Puppet的原始碼,如果你遇到問題並且有能力的話,你可以修改 或者加強Puppet的程式碼去適用於你的環境。另外,社群開發者和捐獻者還在不斷增強Puppet的功能。一個大的開發者和使用者社群也致力於提供 Puppet的文件和技術支援。
Puppet也是易於擴充套件的。定製軟體包的支援功能和特殊的系統環境配置能夠快速簡單的新增進Puppet的安裝程式中。
3. Puppet的工作模式
Puppet是一個C/S架構的配置管理工具,在中央伺服器上安裝puppet-server軟體包(被稱作Puppet master)。在需要管理的目標主機上安裝puppet客戶端軟體(被稱作Puppet Client)。當客戶端連線上Puppet master後,定義在Puppet master上的配置檔案會被編譯,然後在客戶端上執行。每個客戶端預設每半個小時和伺服器進行一次通訊,確認配置資訊的更新情況。如果有新的配置資訊或 者配置資訊已經改變,配置將會被重新編譯併發布到各客戶端執行。也可以在伺服器上主動觸發一個配置資訊的更新,強制各客戶端進行配置。如果客戶端的配置信 息被改變了,它可以從伺服器獲得原始配置進行校正。
4. Puppet的未來
最後,Puppet是一個年輕的工具,仍然處於開發和發展中。Puppet社群快速壯大,並且許多新的想法不斷融入,促使開發、更新和模組每天都在 呈現。
安裝配置:
1. Puppet在RedHat/CentOS系 統上安裝
Puppet是基於Ruby寫成的,所以安裝前要準備好Ruby環境。在中心的Server上安裝puppet-server包,並執行 puppetmasterd程序;在被管理機上安裝puppet包,並執行puppetd程序。另外,在每臺主機上配置好自己的hostname,之後每 臺機器要以hostname區分。
1). 安裝ruby環境:
yum install ruby ruby-rdoc


2). 安裝puppet
Server端安裝:(172.16.228.30 puppet.sina.com.cn)

rpm -Uvh http://download.fedora.redhat.co ... ease-5-3.noarch.rpm
yum install puppet-server
chkconfig –level 2345 puppetmaster on
修改hosts,新增下面行:
Vi /etc/hosts
172.16.228.30 puppet.sina.com.cn puppet
172.16.228.29 web1.sina.com.cn web1


客戶端安裝:(172.16.228.29 web1.sina.com.cn)
rpm -Uvh http://download.fedora.redhat.co ... ease-5-3.noarch.rpm
yum install puppet
chkconfig –level 2345 puppet on
修改hosts,新增下面行:
Vi /etc/hosts
172.16.228.30 puppet.sina.com.cn puppet
172.16.228.29 web1.sina.com.cn web1


3). 啟動puppet
Server端首次執行前,編輯/etc/puppet/manifests/site.pp檔案,內容可以用最基本的:
# Create “/tmp/testfile” if it doesn’t exist.
class test_class {
file { “/tmp/testfile”:
ensure => present,
mode => 644,
owner => root,
group => root
}
}
# tell puppet on which client to run the class
node web1.sina.com.cn {
include test_class
}
啟動Server端:
service puppetmaster start
啟動客戶端:
/etc/init.d/puppet once -v
這時客戶機會去連server,但是由於連線是在ssl上的,而Server還沒有sign過客戶端的cert,客戶機被斷開。
到Server端執行:puppetca -list,會顯示等待簽名的客戶端的主機名,執行:puppetca -sign <客戶端主機名> 即可為其簽名。

在Server端為web1.sian.com.cn授權:
puppetca -list
web1.sian.com.cn
puppetca -sign web1.sian.com.cn
這時再到客戶機上啟動puppetd,即可看到客戶在正常地連線server,並且應用Server上為客戶端定製的配置策略。
啟動客戶端:
/etc/init.d/puppet once -v

4). 測試:
也可以將日誌直接列印到終端上進行測試:
Server端:puppetmasterd -d –no-daemonize -v –trace


客戶端:puppetd –test –trace –debug


2. puppet配置檔案


主配置檔案(puppet.conf):
1). 配置檔案名稱空間:
main 通用配置選項
puppetd 客戶端配置選項
puppetmasterd 服務端配置選項
2). main名稱空間選項:
confdir 配置檔案目錄,預設在/etc/puppet
vardir 動態資料目錄,預設在/var/lib/puppet
logdir 日誌目錄,預設在/var/log/log
rundir puppet PID目錄,預設在/var/run/puppet
statedir state目錄,預設在$vardir/state
statefile state檔案,預設在$statedir/state.yaml
ssldir SSL證書目錄,預設在$vardir/ssl
trace 發生錯誤時顯示跟蹤資訊,預設false
filetimeout 檢測配置檔案狀態改變的時間週期,單位秒,預設15秒
syslogfacility 指定syslog功能為user級,預設為daemon級
3). puppetmasterd名稱空間選項:
user 後臺程序執行的使用者
group 後臺程序執行的組
mainfestdir mainfests檔案儲存目錄,預設為$confdir/mainfests
mainfest mainfest站點檔案的名字,預設為site.pp
bindaddress 後臺程序繫結的網絡卡地址介面
masterport 後臺程序執行的埠,預設為8140
4). puppet名稱空間選項:
server puppet puppet伺服器名,預設為puppet
runinterval seconds puppet應用配置的時間間隔,預設1800秒(0.5小時)
puppetdlockfie file puppet lock檔案位置,預設$statedir/puppetdlock
puppetport port 後臺程序執行的埠,預設8139
檔案服務配置檔案(fileserver.conf):


[files]
path /var/lib/puppet/files
allow 121.14.1.*
allow 60.28.228.0/24
allow *.house.sina.com.cn
deny *.sina.com.cn
path定義檔案存放路徑,通過allow/deny來控制訪問許可權。


3. puppet命令集
1). puppet 用於執行使用者所寫獨立的mainfests檔案
# puppet -l /tmp/manifest.log manifest.pp
2). puppetd 執行在被管理主機上的客戶端程式
# puppetd –server puppet.leju.com
3). puppetmasterd 執行在管理機上的伺服器程式
# puppetmasterd
4). puppetca puppet認證程式
# puppetca -l
pclient.leju.com
# puppetca -s pclient.leju.com
5). puppetrun 用於連線客戶端,強制執行本地配置檔案
# puppetrun -p 10 –host host1 –host host2 -t remotefile -t webserver
6). filebucket 客戶端用於傳送檔案到puppet file bucket的工具
# filebucket -b /tmp/filebucket /my/file
7). ralsh 轉換配置資訊到puppet配置程式碼


# ralsh user luke
user { ‘luke’:
home => ‘/home/luke’,
uid => ‘100′,
ensure => ‘present’,
comment => ‘Luke Kanies,,,’,
gid => ‘1000′,
shell => ‘/bin/bash’,
groups => ['sysadmin','audio','video','puppet']
}
. puppetdoc 列印puppet參考文件
# puppetdoc -r type > /tmp/type_reference.rst
# puppetdoc –outputdir /tmp/rdoc –mode rdoc /path/to/manifests
# puppetdoc /etc/puppet/manifests/site.pp
---------------------------------------------------------------------------------------------------------------------

一 puppet簡介

       puppet是一種Linux、Unix平臺的集中配置管理系統,使用自有的puppet描述語言,可管理配置檔案、使用者、cron任務、軟體包、系統服務等。puppet把這些系統實體稱之為資源,puppet的設計目標是簡化對這些資源的管理以及妥善處理資源間的依賴關係。

  puppet採用C/S星狀的結構,所有的客戶端和一個或幾個伺服器互動。每個客戶端週期的(預設半個小時)向伺服器傳送請求,獲得其最新的配置資訊,保證和該配置資訊同步。每個puppet客戶端每半小時(可以設定)連線一次伺服器端, 下載最新的配置檔案,並且嚴格按照配置檔案來配置伺服器. 配置完成以後,puppet客戶端可以反饋給伺服器端一個訊息. 如果出錯,也會給伺服器端反饋一個訊息.

二  puppet安裝測試環境介紹

     虛擬機器vmware   系統centos5.5

    伺服器端   192.168.2.113    centos113.sdj

    客戶端       192.168.2.114   centos114.sdj

   安裝puppet前的準備

  在服務端和客戶端都執行以下命令

   新增puppet使用者   # groupadd puppet

                              # useradd  -g puppet -s /bin/false -M puppet  

修改Host檔案;# echo  "192.168.2.113 centos113.sdj">> /etc/hosts

                        # echo  "192.168.2.114 centos114.sdj">> /etc/hosts

安裝ruby        #yum -y install ruby

安裝Facter    是用來蒐集當前安裝系統的環境變數資訊的

    # wget http://projects.puppetlabs.com/a ... facter-1.5.8.tar.gz

    # tar xf facter-1.5.8.tar.gz  && cd facter-1.5.8/ 

    # ruby  install.rb && cd  ~ 

   # facter    執行這個命令就可以看到facter獲取到的變數名和內容

現在開始安裝puppet

相關推薦

Linux自動化部署配置工具

轉自:http://bbs.chinaunix.net/thread-3731873-1-1.html 系統部署一、Kickstart主要針對Redhat和CentOS作業系統的安裝和初始配置,不過網路的配置仍然需要一臺一臺地進行。二、Cobbler與Kickstart類

Db2數據庫在Linux的安裝配置

fig 用戶密碼 oca authent linux token reat local ken 一.DB2數據庫的安裝和配置: 1.安裝完成後,需要增加三個操作系統的組和三個操作系統用戶,如下: groupadd -g 999 db2iadm1 #(管理實例的組) gro

Linux更換jdk配置環境變量

pat 出現 下載jdk cnblogs clas home log code 文件 不需要刪除舊的jdk,安裝新版本的jdk,再更新環境變量即可。 Linux下安裝jdk,步驟如下 1:下載jdk包:本章使用的為後綴為tar.gz的文件(不需要安裝),如jdk-

python在windowslinux的安裝配置

str net .net cat ria 技術 連接 top 成功 一、windows下安裝python3.6 安裝編輯器:Ecplise+pydev插件 Eclipse是寫JAVA的IDE, 這樣就可以通用了,學習代價小。 學會了Eclipse, 以後寫Pytho

Linux更換jdk配置環境變數

不需要刪除舊的jdk,安裝新版本的jdk,再更新環境變數即可。 Linux下安裝jdk,步驟如下    1:下載jdk包:本章使用的為字尾為tar.gz的檔案(不需要安裝),如jdk-8u111-linux-x64.tar.gz    2: 把jdk檔案儲存至Li

LinuxMongoDB安裝配置詳解

1、建立MongoDB的安裝路徑 在/usr/local/  建立資料夾mongoDB 2、上傳檔案到Linux上的/usr/local/source目錄下 3、解壓檔案 進入到/usr/local/source目錄,執行如下命令:  tar -zxvf m

Mysql 在 windows linux 的安裝配置

這篇文章講解 Mysql 在 Windows 下的手動安裝和在 Linux(CentOs) 下的下載、配置、連線。還包括預設字符集等的設定。 首先,都要執行移除資料庫的操作 mysqld --remov

LinuxMongoDB安裝配置詳解(一)

一、MongoDB的安裝 1.下載安裝包 下載方式: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz 解壓縮壓縮包: tar zxvf mongodb-linux-x

docker~linux部署基本命令

回到目錄 docker是最近比較流行的容器工具,它可以幫助我們快速部署應用,尤其是在“微服務”環境下,成百個服務要去啟動,停止,部署一次太麻煩,而如果把它部署到docker裡,下一次應用就方便多了,如果需要幾行程式碼就搞定了! 百度百科定義 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們

Jetty6在WINDOWS部署配置

  2、修改配置 修改配置檔案D:\tool\jetty-6.1\etc\jetty.xml 修改訪問埠: <Call name="addConnector">       <Arg>           <New class="org.mo

Linuxjava使用配置

一、檢視jdk安裝目錄 [[email protected] ~]# whereis java java: /usr/bin/java /usr/local/java #java執行路徑 [[email protected] ~]# which java

LinuxMongoDB安裝配置詳解(三)

一、將mongod服務新增為系統服務 MongoDB安裝之後,每次都需要執行命令加引數來啟動,不便於管理,這裡可以將其新增到系統服務,方法如下: 1、建立檔案 linux系統服務啟動檔案都存放

Linux安裝vsftp配置

本文以CentOS為配置環境,進行vsftpd的安裝。 (1)命令yum install vsftpd. (下載VSFTPD Linux下傳統的安裝軟體方法是下載tar.gz安裝包,或者RPM安裝包,再經過解壓之後進行編譯,或者用RPM -i命令安裝。過程比較繁瑣,其

linux安裝nginx配置

有一個 是否 就是 服務器 文件 get openss 會有 bsp 1、系統:centos7 2、安裝準備: 安裝nginx前,我們首先要確保系統安裝了g++、gcc、openssl-devel、pcre-devel和zlib-devel軟件,可通過如圖所示命令進行檢

Linux自動化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)

1、先配置好Docker阿里雲加速,可以使用阿里雲容器服務 (可自己在阿里雲申請,要不然安裝東西直接很慢)注意:https://XXXX.mirror.aliyuncs.com為阿里雲加速服務分配地址 sudo mkdir -p /etc/docker sudo tee /etc/docker/dae

CentOS 7.x部署配置zabbix 3.2.x監控工具

centos zabbix 監控一.安裝zabbix服務端1.下載官方yum源:rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm2.安裝zabbix服務端(會自動安裝http

LinuxMongodb安裝啟動配置

ever and tpi efault osi title 客戶端 避免 輸入數據 1.下載安裝包 wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz 下載完成後解壓縮壓縮包 tar

linux centos7 nginx 安裝部署配置

php strong b- 資料 解壓 停止 forward wsdl 安裝路徑 1/什麽是NginxNginx("enginex")是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器,在高連接並發的情況下Nginx是Apache服務器不

Nginx Linux系統的安裝配置應用

Nginx 安裝配置 Nginx("engine x")是一款是由俄羅斯的程式設計師Igor Sysoev所開發高效能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 在高連線併發的情況下,Nginx是Apache伺服器

Linuxredis安裝部署

1.基礎知識  redis是用C語言開發的一個開源的高效能鍵值對(key-value)資料庫。它通過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止redis支援的鍵值資料型別如下 字串、列表(lists)、集合(sets)、有序集合(sorts sets)、雜湊表(hashs) 2.red