Andrew Rynhard d4f103ffcb fix: pass config via stdin
In order to perform upgrades the way we would like, it is important that
we avoid any bind mounts into containers. This change ensures that all
system services get their config via stdin.

Signed-off-by: Andrew Rynhard <andrew@rynhard.io>
2020-08-20 15:26:13 -07:00

53 lines
1.2 KiB
Go

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package main
import (
"flag"
"log"
"github.com/talos-systems/talos/internal/app/networkd/pkg/networkd"
"github.com/talos-systems/talos/internal/app/networkd/pkg/reg"
"github.com/talos-systems/talos/pkg/grpc/factory"
"github.com/talos-systems/talos/pkg/machinery/config/configloader"
"github.com/talos-systems/talos/pkg/machinery/constants"
)
func init() {
log.SetFlags(log.Lshortfile | log.Ldate | log.Lmicroseconds | log.Ltime)
flag.Parse()
}
func main() {
log.Println("starting initial network configuration")
config, err := configloader.NewFromStdin()
if err != nil {
log.Fatal(err)
}
nwd, err := networkd.New(config)
if err != nil {
log.Fatal(err)
}
if err = nwd.Configure(); err != nil {
log.Fatal(err)
}
log.Println("completed initial network configuration")
nwd.Renew()
log.Fatalf("%+v", factory.ListenAndServe(
reg.NewRegistrator(nwd),
factory.Network("unix"),
factory.SocketPath(constants.NetworkSocketPath),
factory.WithDefaultLog(),
),
)
}