add options to configure host alias and groups

This commit is contained in:
Billie H. Cleek 2016-02-10 22:24:12 -08:00
parent 2a46f4001c
commit 0cd54ed19e
2 changed files with 29 additions and 10 deletions

View File

@ -40,6 +40,8 @@ type Config struct {
// The main playbook file to execute.
PlaybookFile string `mapstructure:"playbook_file"`
Groups []string `mapstructure:"groups"`
HostAlias string `mapstructure:"host_alias"`
LocalPort string `mapstructure:"local_port"`
SSHHostKeyFile string `mapstructure:"ssh_host_key_file"`
SSHAuthorizedKeyFile string `mapstructure:"ssh_authorized_key_file"`
@ -72,6 +74,10 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
p.config.Command = "ansible-playbook"
}
if p.config.HostAlias == "" {
p.config.HostAlias = "default"
}
var errs *packer.MultiError
err = validateFileConfig(p.config.PlaybookFile, "playbook_file", true)
if err != nil {
@ -196,9 +202,16 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
return fmt.Errorf("Error preparing inventory file: %s", err)
}
defer os.Remove(tf.Name())
inv := fmt.Sprintf("default ansible_ssh_host=127.0.0.1 ansible_ssh_user=packer-ansible ansible_ssh_port=%s", p.config.LocalPort)
_, err = tf.Write([]byte(inv))
if err != nil {
host := fmt.Sprintf("%s ansible_ssh_host=127.0.0.1 ansible_ssh_user=packer-ansible ansible_ssh_port=%s\n", p.config.HostAlias, p.config.LocalPort)
w := bufio.NewWriter(tf)
w.WriteString(host)
for _, group := range p.config.Groups {
fmt.Fprintf(w, "[%s]\n%s", group, host)
}
if err := w.Flush(); err != nil {
tf.Close()
return fmt.Errorf("Error preparing inventory file: %s", err)
}
@ -214,7 +227,6 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
}
return nil
}
func (p *Provisioner) Cancel() {

View File

@ -47,6 +47,13 @@ Required Parameters:
Optional Parameters:
- `groups` (array of strings) - The groups into which the Ansible host
should be placed. When unspecified, the host is not associated with any
groups.
- `host_alias` (string) - The alias by which the Ansible host should be known.
Defaults to `default`.
- `ssh_host_key_file` (string) - The SSH key that will be used to run the SSH
server on the host machine to forward commands to the target machine. Ansible
connects to this server and will validate the identity of the server using
@ -71,7 +78,7 @@ Optional Parameters:
should read and write on stdin and stdout, respectively. Defaults to
`/usr/lib/sftp-server -e`.
- `extra_arguments` (string) - Extra arguments to pass to Ansible.
- `extra_arguments` (array of strings) - Extra arguments to pass to Ansible.
## Limitations