first version
This commit is contained in:
91
pkg/kubespray/utility.go
Normal file
91
pkg/kubespray/utility.go
Normal file
@@ -0,0 +1,91 @@
|
||||
package kubespray
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io"
|
||||
"kube-forge/pkg/config"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/apenella/go-ansible/pkg/execute"
|
||||
"github.com/apenella/go-ansible/pkg/inventory"
|
||||
"github.com/apenella/go-ansible/pkg/options"
|
||||
"github.com/apenella/go-ansible/pkg/playbook"
|
||||
)
|
||||
|
||||
func getPlaybookParameters(tags string) config.AnsiblePlaybookConfig {
|
||||
cfg := config.GetConfig()
|
||||
ansibleInventoryOptions := inventory.AnsibleInventoryOptions{
|
||||
Graph: true,
|
||||
Inventory: "kubespray/inventory/hosts",
|
||||
Vars: true,
|
||||
Yaml: false,
|
||||
}
|
||||
|
||||
ansiblePlaybookOptions := playbook.AnsiblePlaybookOptions{
|
||||
Inventory: ansibleInventoryOptions.Inventory,
|
||||
Tags: tags,
|
||||
}
|
||||
|
||||
ansiblePlaybookConnectionOptions := options.AnsibleConnectionOptions{
|
||||
User: cfg.Credentials.User,
|
||||
}
|
||||
|
||||
if cfg.Credentials.PrivateKeyFile != "" {
|
||||
ansiblePlaybookConnectionOptions.PrivateKey = cfg.Credentials.PrivateKeyFile
|
||||
}
|
||||
|
||||
ansiblePlaybookPrivilegeEscalationOptions := options.AnsiblePrivilegeEscalationOptions{
|
||||
Become: true,
|
||||
}
|
||||
|
||||
if cfg.Credentials.AskSudoPassword {
|
||||
ansiblePlaybookPrivilegeEscalationOptions.AskBecomePass = true
|
||||
}
|
||||
|
||||
return config.AnsiblePlaybookConfig{
|
||||
ConnectionOptions: ansiblePlaybookConnectionOptions,
|
||||
PrivilegeEscalationOptions: ansiblePlaybookPrivilegeEscalationOptions,
|
||||
PlaybookOptions: ansiblePlaybookOptions,
|
||||
}
|
||||
}
|
||||
|
||||
func CopyK8SAdminConfig(pathInDataDir string) {
|
||||
config := config.GetConfig()
|
||||
dataDir := config.DataDir
|
||||
var adminDefaultConfigPath = filepath.Join(dataDir, "kubespray/inventory/artifacts/admin.conf")
|
||||
var adminOutConfigPath = filepath.Join(dataDir, pathInDataDir)
|
||||
source, err := os.Open(adminDefaultConfigPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer source.Close()
|
||||
|
||||
destination, err := os.Create(adminOutConfigPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer destination.Close()
|
||||
_, err = io.Copy(destination, source)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func runPlaybook(playbookPath string, playbookConfig config.AnsiblePlaybookConfig) {
|
||||
playbook := &playbook.AnsiblePlaybookCmd{
|
||||
Playbooks: []string{playbookPath},
|
||||
ConnectionOptions: &playbookConfig.ConnectionOptions,
|
||||
PrivilegeEscalationOptions: &playbookConfig.PrivilegeEscalationOptions,
|
||||
Options: &playbookConfig.PlaybookOptions,
|
||||
Exec: execute.NewDefaultExecute(
|
||||
execute.WithEnvVar("ANSIBLE_FORCE_COLOR", "true"),
|
||||
// execute.WithEnvVar("ANSIBLE_STDOUT_CALLBACK", "true"),
|
||||
),
|
||||
}
|
||||
|
||||
err := playbook.Run(context.TODO())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user