2014-01-28 87 views
0

我們擁有多個子接口和自己的子接口IP上運行多個應用程序,所以我試圖用facter變量重複使用$name木偶合並兩個變量定義

這裏是我在facter命令界面我的循環輸出

ipaddress_eth0_0 => 10.3.68.98 
ipaddress_eth0_1 => 10.3.68.99 
ipaddress_eth0_2 => 10.3.68.100 
ipaddress_eth0_3 => 10.3.68.101 

我艙單文件

define myapp { 
    exec {"$name": 
     command => /bin/sed -i 's/IP_ADDRESS=\"127.0.0.1\"/IP_ADDRESS=\"$ipaddress_eth0_$name\"/' /opt/app.$name/bin/setenv.sh 
} 

myapp { [ "0", "1" , "2", "3" ]: } 

一些$ipaddress_eth0_$name怎麼不工作:(其n解析這個變量,我如何加入兩個變量?

回答

1

看看到在線模板功能

define myapp { 
     $myip = inline_template("<%= ipaddress_eth0_${name} %>") 
     exec {"$name": 
     command => "/bin/sed -i 's/IP_ADDRESS=\"127.0.0.1\"/IP_ADDRESS=\"$myip\"/' /opt/app.${name}/bin/setenv.sh" 
    } 
+0

令人敬畏的人! – Satish

+0

有關更多信息inline_template https://blog.kumina.nl/tag/inline_template/ – Satish

0

您可以嘗試用大括號包裹變量:

例如,

define myapp { 
     exec {"$name": 
     command => /bin/sed -i 's/IP_ADDRESS=\"127.0.0.1\"/IP_ADDRESS=\"${ipaddress_eth0}_${name}\"/' /opt/app.${name}/bin/setenv.sh 
    } 

UPDATE

你能在雙引號包住命令例如

define myapp { 
     exec {"$name": 
     command => "/bin/sed -i 's/IP_ADDRESS=\"127.0.0.1\"/IP_ADDRESS=\"${ipaddress_eth0}_${name}\"/' /opt/app.${name}/bin/setenv.sh" 
    } 
+0

不,它不工作,我試過所有可能的組合,但它不工作。這看起來很簡單,但不起作用... – Satish

+0

你能告訴我你的事實嗎?這是一種習俗還是核心事實? – cocheese

+0

他們是傀儡因素不定製,檢查我的問題,我已經發布了他們 – Satish