package config // SunHPC 主配置 type SunHPCConfig struct { Hostname string `yaml:"hostname"` MOTD string `yaml:"motd"` Sysctl map[string]string `yaml:"sysctl"` SELinux string `yaml:"selinux"` // enforcing, permissive, disabled SSH SSHConfig `yaml:"ssh"` } type SSHConfig struct { PermitRootLogin string `yaml:"permit_root_login"` PasswordAuth string `yaml:"password_authentication"` } func DefaultSunHPC() *SunHPCConfig { return &SunHPCConfig{ Hostname: "sunhpc-master", MOTD: "Welcome to SunHPC Cluster\n", Sysctl: map[string]string{ "net.ipv4.ip_forward": "1", "vm.swappiness": "10", }, SELinux: "enforcing", SSH: SSHConfig{ PermitRootLogin: "yes", PasswordAuth: "yes", }, } } // Nodes 节点配置 type NodesConfig struct { Nodes []Node `yaml:"nodes"` } type Node struct { Hostname string `yaml:"hostname"` MAC string `yaml:"mac"` IP string `yaml:"ip"` Role string `yaml:"role"` // master, compute, login } func DefaultNodes() *NodesConfig { return &NodesConfig{ Nodes: []Node{ {Hostname: "master", MAC: "00:11:22:33:44:55", IP: "192.168.1.1", Role: "master"}, }, } } // Network 网络配置 type NetworkConfig struct { Interface string `yaml:"interface"` Subnet string `yaml:"subnet"` Netmask string `yaml:"netmask"` Gateway string `yaml:"gateway"` DNSServers []string `yaml:"dns_servers"` } func DefaultNetwork() *NetworkConfig { return &NetworkConfig{ Interface: "eth0", Subnet: "192.168.1.0", Netmask: "255.255.255.0", Gateway: "192.168.1.1", DNSServers: []string{"8.8.8.8", "114.114.114.114"}, } } // Disks 磁盘配置 type DisksConfig struct { Disks []Disk `yaml:"disks"` } type Disk struct { Device string `yaml:"device"` Mount string `yaml:"mount"` FSType string `yaml:"fstype"` Options string `yaml:"options"` } func DefaultDisks() *DisksConfig { return &DisksConfig{ Disks: []Disk{ {Device: "/dev/sda1", Mount: "/", FSType: "ext4", Options: "defaults"}, }, } } // Services 服务配置 type ServicesConfig struct { HTTPD Service `yaml:"httpd"` TFTPD Service `yaml:"tftpd"` DHCPD Service `yaml:"dhcpd"` } type Service struct { Enabled bool `yaml:"enabled"` Config string `yaml:"config,omitempty"` } func DefaultServices() *ServicesConfig { return &ServicesConfig{ HTTPD: Service{Enabled: true}, TFTPD: Service{Enabled: true}, DHCPD: Service{Enabled: true}, } } // Firewall 防火墙配置 type FirewallConfig struct { DefaultPolicy string `yaml:"default_policy"` Rules []string `yaml:"rules"` } func DefaultFirewall() *FirewallConfig { return &FirewallConfig{ DefaultPolicy: "DROP", Rules: []string{ "-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT", "-A INPUT -p icmp -j ACCEPT", "-A INPUT -i lo -j ACCEPT", "-A INPUT -p tcp --dport 22 -j ACCEPT", }, } }