自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

puppet extlookup 和puppet hiera使用

運(yùn)維 系統(tǒng)運(yùn)維
sky在工作中,遇到這樣的一個(gè)問題,公司有些C++服務(wù)器需要在配置文件里填寫下數(shù)據(jù)庫相關(guān)的信息. 每次部署的時(shí)候,填寫覺得挺麻煩,又浪費(fèi)時(shí)間,另外還容易出錯(cuò).本打算是讓DBA 把相關(guān)信息寫進(jìn)數(shù)據(jù) 庫,通過shell腳本來取得相應(yīng)的變量值.不想折騰,想想puppet是可以讀取csv文件的.另外又想了想還 有沒有其它方法來實(shí)現(xiàn)呢?這時(shí)候看過了puppet hiera可以滿足需求.如是就寫了個(gè)類來測(cè)試. 測(cè)試 共分為兩節(jié),一是使用extlookup來實(shí)現(xiàn),二是使用hiera來實(shí)現(xiàn)

 [導(dǎo)讀]

    sky在工作中,遇到這樣的一個(gè)問題,公司有些C++服務(wù)器需要在配置文件里填寫下數(shù)據(jù)庫相關(guān)的信息.

    每次部署的時(shí)候,填寫覺得挺麻煩,又浪費(fèi)時(shí)間,另外還容易出錯(cuò).本打算是讓DBA 把相關(guān)信息寫進(jìn)數(shù)據(jù)

    庫,通過shell腳本來取得相應(yīng)的變量值.不想折騰,想想puppet是可以讀取csv文件的.另外又想了想還

    有沒有其它方法來實(shí)現(xiàn)呢?這時(shí)候看過了puppet hiera可以滿足需求.如是就寫了個(gè)類來測(cè)試. 測(cè)試

    共分為兩節(jié),一是使用extlookup來實(shí)現(xiàn),二是使用hiera來實(shí)現(xiàn)

    [正文]

    一.使用extlookup來讀取csv文件

    1.使用csv文件,需要使用extlookup.puppet 2.6的某此版本不支持extlookup.請(qǐng)升級(jí)puppet.

    centos下面如何升級(jí)puppet server,請(qǐng)參閱centos 下升級(jí)puppet指南 :

    2. 寫了個(gè)類來調(diào)用extlookup 讀取csv文件內(nèi)容:

class  server::test {
$extlookup_datadir = "/etc/puppet/modules/extdata/"
$extlookup_precedence = [ "%{name}", "test" ]
$A_db_host = extlookup("A_HOST")
$A_db_port = extlookup("A_PORT")
$A_db_usr  = extlookup("A_USER")
$A_db_pwd  = extlookup("A_PASSWD")
$A_db_name = extlookup("A_DB_NAME")

   file { 'config_file':
          path => "/tmp/server.conf,
          content => template("server/server.conf.erb"),
       }
}

注:上面的類會(huì)讀取/etc/puppet/modules/extdata/test.csv里的內(nèi)容,然后使用puppet 模板
來生成新配置文件,上面的類是用來測(cè)試,實(shí)際使用需要添加相應(yīng)的服務(wù)啟動(dòng)等,以及服務(wù)與配置相關(guān)關(guān)聯(lián).

3.我們來看下test.csv內(nèi)的文件內(nèi)容:
 extdata/test.csv
####test1###
A_HOST,10.10.1.X
A_PORT,3306
A_USER,xxx
A_PASSWD,xxxxxx
A_DB_NAME,xxxx
###test2###
T_HOST,10.10.1.X
T_PORT,3306
T_USER,xxx
T_PASSWD,xxxxxx
T_DB_NAME,xxxxxx
4.我們來看下模板內(nèi)容:

cat server/templates/server.conf.erb
A_db_host:<%= A_db_host %>
A_db_port:<%= A_db_port %>
A_db_usr:<%= A_db_usr %>
A_db_pwd:<%= A_db_pwd %>
A_db_name:<%= A_db_name %>

T_db_host:<%= T_db_host %>
T_db_port:<%= T_db_port %>
T_db_usr:<%= T_db_usr %>
T_db_pwd:<%= T_db_pwd %>
T_db_name:<%= T_db_name %>

5.我們可以在客戶端運(yùn)行puppet 來測(cè)試.

#puppet agent --test 

OK的沒有問題.我們接下來使用puppet 的hiera來實(shí)現(xiàn)上述功能.如不容易hiera,請(qǐng)參閱
 https://github.com/ripienaar/hiera 里面有詳細(xì)說明:

a.查看下當(dāng)前gem 源.如沒有,請(qǐng)?zhí)砑觮aobao的鏡像源.
gem source --list
*** CURRENT SOURCES ***

http://ruby.taobao.org/

b.我們使用gem來安裝hiera
gem install hiera hiera-puppet

c.我們來配置hiera.使用puppet hiera,以及測(cè)試puppet 下的hiera.
 mkdir /etc/puppet/hieradata ##創(chuàng)建目錄,用于存放xx.yaml文件

cat /etc/puppet/hieradata/dev.yaml ##編寫yaml文件

---
db_host: 10.10.1.xx
db_port: 3306
db_pwd: xxxx
db_name: xxx

class server::test ( $db_host = hiera("db_host"), $db_port = hiera("db_port") ...) {
...
}  

## 上面沒有寫全,同樣加上db_pwd,db_name即可.類內(nèi)容可以抄上面的,這里省略

cat /etc/puppet/hiera.yaml
---
:backends: - yaml
:logger: console
:hierarchy: - %{env}/%{calling_module}
            - common
:yaml:
   :datadir: /etc/puppet/hieradata

我們可以先測(cè)試下,是否寫得正確.是否能讀取上面的定義的四個(gè)變量.
hiera -c /etc/puppet/hiera.yaml db_host env=dev calling_module=server ##來測(cè)試是否來讀到數(shù)據(jù).
能正確的讀到變量,那么在客戶端可以puppet agent --test 即可.

[總結(jié)]

puppet 的hiera 是對(duì)extlookup的一個(gè)增強(qiáng)吧,同事看了我寫這么多,說你不于直接寫個(gè)shell,
也不至于這么麻煩,至于么,這里不想多說.每個(gè)人都有每個(gè)人的做法.這里再說下,可以使用extlookup2hiera
命令能將csv文件格式轉(zhuǎn)化為json格式的.例如:
extlookup2hiera --in sky.csv --out sky.json  --json

【編輯推薦】

  1. Clojure世界:如何做性能測(cè)試
  2. Windows安全最高境界
  3. IE8安全新功能實(shí)測(cè),到底給不給力?
責(zé)任編輯:趙寧寧
相關(guān)推薦

2012-09-04 14:52:28

Puppet

2011-06-07 15:51:24

puppet

2012-05-05 21:43:27

puppet自動(dòng)化運(yùn)維

2012-05-04 19:45:30

puppet自動(dòng)化運(yùn)維

2011-01-28 09:20:02

CentOSpuppetforeman

2022-05-03 10:55:24

DevOpsChefPuppet

2012-05-17 11:19:05

OpenStackPuppet Labs

2014-09-26 10:28:39

LinuxPuppet

2015-12-28 17:10:55

PuppetKubernetes容器

2012-09-17 16:41:04

CentOS5Puppet

2012-05-15 09:31:57

puppet vagrVirtualBox

2012-05-03 10:46:21

OpenStackPuppet Labs云計(jì)算

2011-03-02 09:36:35

Puppet 2.6.

2015-12-07 15:11:18

Ubuntupuppet安裝

2012-05-03 17:00:28

虛擬化云計(jì)算OpenStack

2014-08-15 10:58:22

puppet3Nginx運(yùn)維

2011-06-07 15:12:41

Puppet語法

2019-04-17 07:59:09

Puppet自動(dòng)化集群管理

2013-04-16 14:55:21

自動(dòng)化運(yùn)維Puppet實(shí)戰(zhàn)

2011-11-30 13:27:19

Puppet
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)