真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

puppet自動(dòng)化運(yùn)維之函數(shù)

定義使用和類相同的基本形式,不同的是它們使用關(guān)鍵字define(而不是class),并且定義支持參數(shù)但不支持繼承。就像之前所提到的,定義可以接收參數(shù)并在相同的系統(tǒng)上多次重用。

額濟(jì)納網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

注:define最好在定義時(shí),使用變量,賦值就可以使用class。

1.無(wú)變量格式:

define 函數(shù)名() {

type { "title ":

attribute => "value",

...

attribute => "value";

}

...(各種資源)

type { "title ":

attribute => "value",

...

attribute => "value";

}

}

2.有變量格式:

define 函數(shù)名(變量名1,...,變量名n) { #格式:$var

type { "title ":

attribute => "變量名", #格式:${var},下同

...

attribute => "變量名";

}

...(各種資源)

type { "title ":

attribute => "變量名",

...

attribute => "變量名";

}

}

3.在class中定義define:

class 類名 {

define 函數(shù)名 (變量名1,...,變量名n) {

type { "title ":

attribute => "變量名", #格式:${var},下同

...

attribute => "變量名",

}

...(各種資源)

type { "title ":

attribute => "變量名",

...

attribute => "變量名",

}

}

}

4.引用define: ①.一般情況(無(wú)class):

函數(shù)名 {

變量名 => "值",

...

變量名 => "值",

}

例:

#①定義了一個(gè)definition 用來(lái)執(zhí)行一個(gè)腳本去配置一個(gè)新的主機(jī).

define newip ( $ip ) {

exec { "/sbin/ifconfig" $title $ip ":

}

}

#引用

newip { eth0:

ip => "11.11.11.11"

}

#或

newip(11.11.11.11) {"eth0":

}

②.class類引用

類名::函數(shù)名 {

變量名 => "值",

...

變量名 => "值",

}

例:

我們創(chuàng)建了一個(gè)definition叫做newip并且有一個(gè)參數(shù)叫做$ip,內(nèi)部定義了我們用來(lái)執(zhí)行資源類型內(nèi)部二進(jìn)制代碼,這里是ifconfig 命令,我們已經(jīng)指出變量$ip和使用的另一個(gè)變量$title($name)

#②同上,不過(guò)使用了類class

class virtuals {

define newip ( $ip ) {

exec { "/sbin/ifconfig $title $ip":

}

}

}

#引用

virtuals::newip { eth0:

ip => "11.11.11.11",

}

#

virtuals::newip(11.11.11.11) { eth0:

}

#③聲明多個(gè)參數(shù)列表,以逗號(hào)分割:

define webapp( $domain, $path, $platform ) {

...

}

webapp { "mywizzoapp":

domain => "mywizzoapp.com",

path => "/var/www/apps/mywizzoapp",

platform => "Rails",

}

#④創(chuàng)建了一個(gè)函數(shù)(define),并只添加了一個(gè)參數(shù),參數(shù)又是實(shí)例的名字.但是,我們也可以添加任何我們想要的參數(shù),因此我們只要在函數(shù)中進(jìn)行聲明.

define tmpfile( $greeting ) {

file { "/tmp/$name":

content => $greeting,

}

}

在聲明實(shí)例資源的時(shí)候,并傳遞相應(yīng)的變量值.

tmpfile{ "foo": greeting => "Hello, world" }

#⑤為每一個(gè)參數(shù)指定一個(gè)默認(rèn)的值

define config_file(owner = root, group = root, mode = 0644,source, backup = false, recurse = false, ensure = file ) {

file{ $name:

mode => $mode,

owner => $owner,

group => $group,

backup => $backup,

recurse => $recurse,

ensure => $ensure,

source => "puppet:///$source"

}

}

config_file { "/etc/vnc.conf":

source => "vnc/vnc.conf",

mode => "0640"

}

我們創(chuàng)建了config_file定義, 然后對(duì)其應(yīng)用,這跟函數(shù)調(diào)用差不多。

5.類 VS 定義

類和定義的創(chuàng)建過(guò)程都很相似(但類不接收參數(shù)),不過(guò)他們使用起來(lái)非常不同。

定義是用來(lái)定義在一個(gè)主機(jī)上包含多個(gè)實(shí)例的可重用對(duì)象的,所以定義不能包含任何只能有一個(gè)實(shí)例的資源。比如,多次使用同一個(gè)定義不能創(chuàng)建相同的文件。

類是獨(dú)一無(wú)二的,無(wú)論你包含它們多少次,你只會(huì)得到資源的一個(gè)副本。

大多數(shù)時(shí)候,服務(wù)會(huì)被定義成類,服務(wù)的包,配置文件以及正在運(yùn)行的服務(wù)都會(huì)被定義在類中,因?yàn)橥ǔT诿恳粋€(gè)主機(jī)上它們都只有一個(gè)副本。(這些有時(shí)被慣稱為“服務(wù)——包——文件”)。

定義是用來(lái)管理類似虛擬主機(jī)這樣可以有許多的資源,或者使用一個(gè)可重用的封裝來(lái)包裝一些簡(jiǎn)單的信息,以此來(lái)減少代碼量。

至此,puppet的函數(shù)就結(jié)束了,接下來(lái)的是模塊的學(xué)習(xí),請(qǐng)聽(tīng)下回分解!?。?/p>


分享文章:puppet自動(dòng)化運(yùn)維之函數(shù)
網(wǎng)站路徑:http://weahome.cn/article/chcges.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部