生成文件并填充值

时间:2015-02-05 21:36:49

标签: bash automation puppet auto-generate

我的任务是创建大约一百个用于木偶的文件。我正在使用包含特定于站点的IP和主机名信息的唯一文件名创建.yaml文件,这些文件必须具有相同的格式(最好来自模板)。

我想创建一个文件生成器,从输入文件(.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'

1 个答案:

答案 0 :(得分: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

这假定输入文件中的fileds由空格分隔,并在第一列中显示相应输出文件的名称。