Skip to content

kevinburke/ansible-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ansible-go

Attempting to reproduce Ansible's APIs with a programming language (instead of YAML), so you have more flexibility about how things get called.

Right now supports running commands on a single host at a time. The only supported protocol is SSH'ing to a remote host and running some commands (instead of, say, running mysql from your local machine to a remote host).

For the moment we are targeting Ubuntu Linux. If we want to support other platforms, probably the way to implement this will be to copy the subclassing relationship in Ansible, documented e.g. here:

    A subclass may wish to override the following action methods:-
      - create_user()
      - remove_user()
      - modify_user()
      - ssh_key_gen()
      - ssh_key_fingerprint()
      - user_exists()

    All subclasses MUST define platform and distribution (which may be None).

But use interfaces for those as well, so:

type UserImpl interface {
    Add(context.Context, ssh.Host, string, UserOpts)
    Remove(context.Context, ssh.Host, string)
    Modify(context.Context, ssh.Host, string, UserOpts)
    Exists(context.Context, ssh.Host, string) bool
    SSHKeyGen(context.Context, ssh.Host, string, SSHKeyGenOpts)
}

where core.AddUser switches the impl based on the host.Platform.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •