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  }