【问题标题】:generate file and populate values生成文件并填充值
【发布时间】:2015-02-05 21:36:48
【问题描述】:

我的任务是创建大约一百个文件供 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'

【问题讨论】:

    标签: bash automation puppet auto-generate


    【解决方案1】:

    这样写一个骨架:

    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
    

    这假定输入文件中的文件由空格分隔,第一列中包含相应输出文件的名称。

    【讨论】:

      猜你喜欢
      • 2021-05-09
      • 2014-05-05
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多