linux運維學習之自動化運維工具Puppet

  Puppet是集中配置管理系統,能夠說使咱們Ansible的升級版,當咱們的服務器集羣過於大時,Ansible就可能力不從心了,咱們知道Ansible是基於ssh的鏈接,而咱們的Puppet則是經過https xmlrpc連接,安全係數明顯上了一個層次。
  Puppet的工做模式,是經過對Puppetmasterd進行更改,client每隔半個小時取一次數據,無論對數據的處理成功與否,都要返回一個報告,通知到master,Puppet有兩種工做模型,一種是單機模型,一種是master/agent模型,看名字都知道一種是在本地本身玩本身的,一種是管理從的,咱們今天就先來玩一下單機模型。
  單機模型甚至都不用開啓Puppet服務,直接可使用命令,固然了命令的格式很長,可是Puppet提供很好的幫助文檔來幫助咱們對該命令的使用,咱們可使用Puppet help查看具體語法和相關選項。
  語法:puppet <subcommand> [options] <action> [options]
  <subcommand>中有幾個是咱們經常使用的選項,好比:linux

    apply:本地使用puppet,也就是單機模型的必需選項
    agent:咱們下章的master/agent模型使用的必需選項
    cert:Puppet的證書相關,既然使用的https xmlrpc來通訊,自帶了CA和cert
    describe:這個選項特別重要,資源,是咱們在進行控制時可使用的相似Ansible的一些模塊,咱們可使用puppet describe --help來查看都支持哪些資源
    device:網絡設備遠程管理
    doc:文檔相關
    facts:系統變量相關,Puppet還能夠調用系統變量,不過無論是定義仍是調用,都要使用$
    nginx

  通常來講,咱們接觸過Ansible以後,再來瞅Puppet,會簡單的多,咱們Puppet也是編寫一些相似劇本同樣的資源清單,來調用資源進行管理,那麼咱們可用的資源都有什麼呢?
  咱們使用puppet describe --list查看全部的清單列表,咱們介紹幾種經常使用的:安全

  cron:計劃任務相關的,相似於Ansible的cron模塊
  exec:執行外部命令
  file:文件相關
  group:用戶組相關
  host:主機相關
  mount:掛載相關
  notify:通知機制
  package:安裝包相關,相似於Ansible的yum,不過package能夠指定以什麼方式安裝
  service:服務相關的
  yumrepo:yum倉庫先關
  ...
  服務器

  有不少的資源,咱們何時用,何時查,不過死記硬背,固然咱們知道了資源名,怎麼用啊,我具體分爲三步:網絡

  1 puppet describe --list:查看都有什麼資源
  2 puppet describe file -m -s:查看file的簡短的providers和元參數,使用這個查出選項
  3 puppet describe file -p:查看file的一些providers,使用這個看選項參數app

  舉個例子,咱們想安裝一個nginx服務,安裝後啓動,開機自啓動。
  首先咱們先要定義一個以.pp結尾的文件,puppet的資源清單就是這麼定義的,好比爲install.pp,內容以下:運維

package{'nginx':
  name => "nginx",  #name指定安裝包爲nginx
  ensure => installed,  #安裝方式爲默認yum安裝
}ssh

service{'nginx':
  ensure => running,  #服務名稱爲nginx的啓動
  enable => true,  #開機啓動爲true
}ide

  有個可能看出來了,這個格式是怎麼回事?爲何有的有name,有的沒有name,service沒有name會不會不知道啓動哪一個服務,你這些參數怎麼查到的?工具

  首先格式:

type {'title':
  attribute1 => value1,
  atrribute2 => value2,
……
}
注意:type必須使用小寫字符;title是一個字符串,在同一類型中必須唯一,資源清單通常以.pp結尾;

  其次是name沒有定義的問題,資源屬性中有一個爲namever的屬性,當你不定義時,會自動引用title的名稱爲name。

  最後是關於這些資源的查詢與用法,好比咱們先用的是package,因此咱們能夠這樣查詢,puppet describe package -m -s,查看簡短的介紹

linux運維學習之自動化運維工具Puppet

  屬性是能夠了,那麼怎麼用呢?有什麼選項呢?咱們可使用puppet describe package -p查看具體屬性怎麼用,那麼既然package能夠查的到那咱們的service也是妥妥的可使用了。

  咱們配置好以後,可使用puppet apply -v --noop install.pp來試運行一下,若是沒有報錯,去掉--noop再運行,能夠提升正確率哦,其中有些經常使用選項,我來和你們介紹一下:

  -v:詳細輸出

  -d:debug模式,輸出極爲詳細

  --noop:調試模式,試運行,能夠提早排錯

  -l PATH:輸出結果到指定文件中

  資源間有的還存在一些依賴關係,好比咱們直接啓動服務,而服務沒有安裝完成怎麼辦?因此資源間的次序可使用一些屬性before、require、notify和subscribe來定義,咱們有多種方法,定義這種依賴關係:

  1 在package下加入一行before => Service['nginx']  2 在service下加入一行require => Package['nginx'],  3 package的}後面加入->也能夠實現一依賴關係  4 在因此資源定義的下面,本身一行 Package['nginx'] -> Service['nginx']

相關文章
相關標籤/搜索