github.com/flanksource/konfigadm@v0.12.0/pkg/phases/ansible.go (about) 1 package phases 2 3 import ( 4 "fmt" 5 "path" 6 7 "github.com/flanksource/konfigadm/pkg/types" 8 ) 9 10 var AnsiblePhase types.Phase = ansible{} 11 12 type ansible struct{} 13 14 func (p ansible) ApplyPhase(sys *types.Config, ctx *types.SystemContext) ([]types.Command, types.Filesystem, error) { 15 var commands []types.Command 16 files := types.Filesystem{} 17 18 if len(sys.Ansible) > 0 { 19 sys.AppendPackages(nil, types.Package{ 20 Name: "ansible", 21 }) 22 sys.AppendPackages(nil, types.Package{ 23 Name: "python", 24 Flags: []types.Flag{types.DEBIAN}, 25 }) 26 sys.AppendPackageRepo(types.PackageRepo{ 27 Name: "epel", 28 URL: "http://download.fedoraproject.org/pub/epel/7/\\$basearch", 29 GPGKey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7", 30 }, types.REDHAT_LIKE) 31 } 32 33 for _, playbook := range sys.Ansible { 34 filename := path.Join(playbook.Workspace, playbook.PlaybookPath) 35 files[filename] = types.File{ 36 Content: string(playbook.Playbook), 37 Permissions: "0600", 38 Owner: "root", 39 } 40 sys.AddCommand(fmt.Sprintf("cd %s && ansible-playbook -i 'localhost, ' %s", playbook.Workspace, playbook.PlaybookPath)) 41 } 42 return commands, files, nil 43 } 44 45 func (p ansible) Verify(cfg *types.Config, results *types.VerifyResults, flags ...types.Flag) bool { 46 verify := true 47 return verify 48 }