2015-02-05 40 views
0

我負責創建大約一百個用於puppet的文件。我使用獨特的文件名創建.yaml文件,這些文件將包含站點特定的IP和主機名信息,這些文件必須具有相同的格式(理想情況下來自模板)。生成文件並填充值

我想創建一個文件生成器,用於填充來自輸入文件(.csv?)的IP,子網,網絡和主機名的變量解決此問題的最佳方法是什麼?

樣本格式:

--- 

network::interfaces::interfaces: 
    eth0: 
     method: 'static' 
     address: '10.20.30.1' 
     netmask: '255.255.240.0' 
     broadcast: '10.20.30.255' 
     network: '10.20.30.0' 
     gateway: '10.20.30.1' 
network::interfaces::auto: 
    - 'eth0' 

hosts::host_entries: 
    HOSTNAME: 
     ip: '10.20.30.2' 
hosts::purge_hosts: true 

dhcpd::range_start: '10.20.30.11' 
dhcpd::range_stop: '10.20.30.240' 
dhcpd::gateway: '10.20.30.1' 

hornetq::site: 'test' 

回答

0

寫這樣的框架:

network::interfaces::interfaces: 
    eth0: 
    method: 'static' 
    address: '__IP__' 
    netmask: '__MASK__' 
    broadcast: '__BC__' 
    network: '__NET__' 
    gateway: '__GW__' 

生成與像

cat input-file | while read OUTPUT IP MASK BC NET GW ; do 
    sed -e s/__IP__/$IP/ \ 
     -e s/__MASK__/$MASK/ \ 
     -e s/__BC__/$BC/ \ 
     -e s/__NET__/$NET/ \ 
     -e s/__GW__/$GW/ \ 
     <$SKELETON >$OUTPUT 
done 

環路文件這假設文件在輸入文件中由空格分隔,第一列中的相應輸出文件的名稱。