github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/pkg/ansible/clustercatalog.go (about) 1 package ansible 2 3 import ( 4 "fmt" 5 6 yaml "gopkg.in/yaml.v2" 7 ) 8 9 type ClusterCatalog struct { 10 Versions struct { 11 Kubernetes string `yaml:"kubernetes"` 12 KubernetesYum string `yaml:"kubernetes_yum"` 13 KubernetesDeb string `yaml:"kubernetes_deb"` 14 } 15 16 ClusterName string `yaml:"kubernetes_cluster_name"` 17 AdminPassword string `yaml:"kubernetes_admin_password"` 18 TLSDirectory string `yaml:"tls_directory"` 19 ServicesCIDR string `yaml:"kubernetes_services_cidr"` 20 PodCIDR string `yaml:"kubernetes_pods_cidr"` 21 DNSServiceIP string `yaml:"kubernetes_dns_service_ip"` 22 EnableModifyHosts bool `yaml:"modify_hosts_file"` 23 EnablePackageInstallation bool `yaml:"allow_package_installation"` 24 DisconnectedInstallation bool `yaml:"disconnected_installation"` 25 KuberangPath string `yaml:"kuberang_path"` 26 LoadBalancedFQDN string `yaml:"kubernetes_load_balanced_fqdn"` 27 28 APIServerOptions map[string]string `yaml:"kubernetes_api_server_option_overrides"` 29 KubeControllerManagerOptions map[string]string `yaml:"kube_controller_manager_option_overrides"` 30 KubeSchedulerOptions map[string]string `yaml:"kube_scheduler_option_overrides"` 31 KubeProxyOptions map[string]string `yaml:"kube_proxy_option_overrides"` 32 KubeletOptions map[string]string `yaml:"kubelet_overrides"` 33 34 AdditionalFiles []AdditionalFile `yaml:"additional_files"` 35 36 ConfigureDockerWithPrivateRegistry bool `yaml:"configure_docker_with_private_registry"` 37 DockerRegistryCAPath string `yaml:"docker_certificates_ca_path"` 38 DockerRegistryServer string `yaml:"docker_registry_full_url"` 39 DockerRegistryUsername string `yaml:"docker_registry_username"` 40 DockerRegistryPassword string `yaml:"docker_registry_password"` 41 42 ForceEtcdRestart bool `yaml:"force_etcd_restart"` 43 ForceAPIServerRestart bool `yaml:"force_apiserver_restart"` 44 ForceControllerManagerRestart bool `yaml:"force_controller_manager_restart"` 45 ForceSchedulerRestart bool `yaml:"force_scheduler_restart"` 46 ForceProxyRestart bool `yaml:"force_proxy_restart"` 47 ForceKubeletRestart bool `yaml:"force_kubelet_restart"` 48 ForceCalicoNodeRestart bool `yaml:"force_calico_node_restart"` 49 ForceDockerRestart bool `yaml:"force_docker_restart"` 50 51 EnableConfigureIngress bool `yaml:"configure_ingress"` 52 53 KismaticPreflightCheckerLinux string `yaml:"kismatic_preflight_checker"` 54 55 NewNode string `yaml:"new_node"` 56 57 NFSVolumes []NFSVolume `yaml:"nfs_volumes"` 58 59 EnableGluster bool `yaml:"configure_storage"` 60 61 // volume add vars 62 VolumeName string `yaml:"volume_name"` 63 VolumeReplicaCount int `yaml:"volume_replica_count"` 64 VolumeDistributionCount int `yaml:"volume_distribution_count"` 65 VolumeStorageClass string `yaml:"volume_storage_class"` 66 VolumeQuotaGB int `yaml:"volume_quota_gb"` 67 VolumeQuotaBytes int `yaml:"volume_quota_bytes"` 68 VolumeMount string `yaml:"volume_mount"` 69 VolumeAllowedIPs string `yaml:"volume_allow_ips"` 70 VolumeReclaimPolicy string `yaml:"volume_reclaim_policy"` 71 VolumeAccessModes []string `yaml:"volume_access_modes"` 72 73 TargetVersion string `yaml:"kismatic_short_version"` 74 75 OnlineUpgrade bool `yaml:"online_upgrade"` 76 77 DiagnosticsDirectory string `yaml:"diagnostics_dir"` 78 DiagnosticsDateTime string `yaml:"diagnostics_date_time"` 79 80 Docker struct { 81 Enabled bool 82 Logs struct { 83 Driver string `yaml:"driver"` 84 Opts map[string]string `yaml:"opts"` 85 } 86 Storage struct { 87 Driver string `yaml:"driver"` 88 Opts map[string]string `yaml:"opts"` 89 OptsList []string `yaml:"opts_list"` 90 DirectLVMBlockDevice DirectLVMBlockDevice `yaml:"direct_lvm_block_device"` 91 } 92 } 93 94 LocalKubeconfigDirectory string `yaml:"local_kubeconfig_directory"` 95 96 CloudProvider string `yaml:"cloud_provider"` 97 CloudConfig string `yaml:"cloud_config_local"` 98 99 DNS struct { 100 Enabled bool 101 Provider string 102 Options struct { 103 Replicas int 104 } 105 } 106 107 RunPodValidation bool `yaml:"run_pod_validation"` 108 109 CNI struct { 110 Enabled bool 111 Provider string 112 Options struct { 113 Portmap struct { 114 Enabled bool 115 } 116 Calico struct { 117 Mode string 118 LogLevel string `yaml:"log_level"` 119 WorkloadMTU int `yaml:"workload_mtu"` 120 FelixInputMTU int `yaml:"felix_input_mtu"` 121 IPAutodetectionMethod string `yaml:"ip_autodetection_method"` 122 } 123 Weave struct { 124 Password string 125 } 126 } 127 } 128 129 Heapster struct { 130 Enabled bool 131 Options struct { 132 Heapster struct { 133 Replicas int `yaml:"replicas"` 134 Sink string `yaml:"sink"` 135 ServiceType string `yaml:"service_type"` 136 } 137 InfluxDB struct { 138 PVCName string `yaml:"pvc_name"` 139 } 140 } 141 } 142 143 MetricsServer struct { 144 Enabled bool 145 } 146 147 Dashboard struct { 148 Enabled bool 149 Options struct { 150 ServiceType string `yaml:"service_type"` 151 NodePort string `yaml:"node_port"` 152 } 153 } 154 155 Helm struct { 156 Enabled bool 157 Namespace string 158 } 159 160 Rescheduler struct { 161 Enabled bool 162 } 163 164 InsecureNetworkingEtcd bool `yaml:"insecure_networking_etcd"` 165 166 HTTPProxy string `yaml:"http_proxy"` 167 HTTPSProxy string `yaml:"https_proxy"` 168 NoProxy string `yaml:"no_proxy"` 169 170 NodeLabels map[string][]string `yaml:"node_labels"` 171 NodeTaints map[string][]string `yaml:"node_taints"` 172 KubeletNodeOptions map[string]map[string]string `yaml:"kubelet_node_overrides"` 173 } 174 175 type DirectLVMBlockDevice struct { 176 Path string 177 ThinpoolPercent string `yaml:"thinpool_percent"` 178 ThinpoolMetaPercent string `yaml:"thinpool_metapercent"` 179 ThinpoolAutoextendThreshold string `yaml:"thinpool_autoextend_threshold"` 180 ThinpoolAutoextendPercent string `yaml:"thinpool_autoextend_percent"` 181 } 182 type NFSVolume struct { 183 Host string 184 Path string 185 } 186 187 type AdditionalFile struct { 188 Source string 189 Destination string 190 Hosts []string 191 } 192 193 func (c *ClusterCatalog) EnableRestart() { 194 c.ForceEtcdRestart = true 195 c.ForceAPIServerRestart = true 196 c.ForceControllerManagerRestart = true 197 c.ForceSchedulerRestart = true 198 c.ForceProxyRestart = true 199 c.ForceKubeletRestart = true 200 c.ForceCalicoNodeRestart = true 201 c.ForceDockerRestart = true 202 } 203 204 func (c *ClusterCatalog) ToYAML() ([]byte, error) { 205 bytez, marshalErr := yaml.Marshal(c) 206 if marshalErr != nil { 207 return []byte{}, fmt.Errorf("error marshalling plan to yaml: %v", marshalErr) 208 } 209 210 return bytez, nil 211 }