web-dev-qa-db-ja.com

puppetを使用してノードのIPアドレスを変更します

CentOSノードが3つあります。それぞれに2つのIPアドレスがあります:10.0.1。*(eth0)と192.168.1。*(eth1)。それらすべてにpuppetがインストールされており、これらのサーバーの構成を管理するためのマスターpuppetサーバーがあります。すべてのサーバーは、10.0.1。* IPを使用してPuppetサーバーと対話します。

私の必要性は、これらのサーバーのeth1IPアドレスを変更したいということです。 3台のサーバーのIPアドレスを変更するために使用できる汎用構成ファイルを用意できますか、それとも3台のサーバーに3つの異なる構成ファイルを用意する必要がありますか?

1
Krishna Kumar R

独自のコードを書く前に、 https://forge.puppetlabs.com を見てください。通常、すべてのニーズを完全にカバーするモジュールがあるためです。

あなたの場合、私があなたのタスクを正しく理解していれば、それは https://forge.puppetlabs.com/example42/network

それでも手動でそれを行いたい場合は、すでに述べたように単純なテンプレート置換を使用するか、augeasを使用する必要があります。これはより良いアイデアだと思います。

たとえば、vmbr0インターフェースを設定するには、Debian用に次のようなものを追加する必要があります。

augeas{ "vmbr0_interface" :
        context => "/files/etc/network/interfaces",
        changes => [
                "set auto[child::1 = 'vmbr0']/1 vmbr0",
                "set iface[. = 'vmbr0'] vmbr0",
                "set iface[. = 'vmbr0']/family inet",
                "set iface[. = 'vmbr0']/method static",
                "set iface[. = 'vmbr0']/address 192.168.11.1",
                "set iface[. = 'vmbr0']/netmask 255.255.255.0",
                "set iface[. = 'vmbr0']/bridge_ports none",
                "set iface[. = 'vmbr0']/bridge_stp off",
                "set iface[. = 'vmbr0']/bridge_fd 0"
        ]
}

そしてCentOSの場合:

        augeas { "eth1":
            context => "/files/etc/sysconfig/network-scripts/ifcfg-eth1",
            changes => [
                "set DEVICE eth1",
                "set BOOTPROTO none",
                "set ONBOOT yes",
                "set NETMASK 255.255.255.0",
                "set IPADDR 10.12.0.10",
            ],
        }

また、このリンクをたどってください http://projects.puppetlabs.com/projects/1/wiki/Network_Interface_Templates_Patterns 。それはネットワーク構成についていくつかの素晴らしい考えを持っています。

2
Glueon