Merge pull request #1150 from rsabitov/ansible-dir
Fixes #1000: Uploading the whole ansible playbook directory
This commit is contained in:
commit
9cf5c8fdb3
|
@ -27,6 +27,9 @@ type Config struct {
|
||||||
// Path to host_vars directory
|
// Path to host_vars directory
|
||||||
HostVars string `mapstructure:"host_vars"`
|
HostVars string `mapstructure:"host_vars"`
|
||||||
|
|
||||||
|
// The playbook dir to upload.
|
||||||
|
PlaybookDir string `mapstructure:"playbook_dir"`
|
||||||
|
|
||||||
// The main playbook file to execute.
|
// The main playbook file to execute.
|
||||||
PlaybookFile string `mapstructure:"playbook_file"`
|
PlaybookFile string `mapstructure:"playbook_file"`
|
||||||
|
|
||||||
|
@ -79,6 +82,7 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
||||||
"group_vars": &p.config.GroupVars,
|
"group_vars": &p.config.GroupVars,
|
||||||
"host_vars": &p.config.HostVars,
|
"host_vars": &p.config.HostVars,
|
||||||
"playbook_file": &p.config.PlaybookFile,
|
"playbook_file": &p.config.PlaybookFile,
|
||||||
|
"playbook_dir": &p.config.PlaybookDir,
|
||||||
"staging_dir": &p.config.StagingDir,
|
"staging_dir": &p.config.StagingDir,
|
||||||
"inventory_file": &p.config.InventoryFile,
|
"inventory_file": &p.config.InventoryFile,
|
||||||
}
|
}
|
||||||
|
@ -123,6 +127,13 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that the playbook_dir directory exists, if configured
|
||||||
|
if len(p.config.PlaybookDir) > 0 {
|
||||||
|
if err := validateDirConfig(p.config.PlaybookDir, "playbook_dir"); err != nil {
|
||||||
|
errs = packer.MultiErrorAppend(errs, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check that the group_vars directory exists, if configured
|
// Check that the group_vars directory exists, if configured
|
||||||
if len(p.config.GroupVars) > 0 {
|
if len(p.config.GroupVars) > 0 {
|
||||||
if err := validateDirConfig(p.config.GroupVars, "group_vars"); err != nil {
|
if err := validateDirConfig(p.config.GroupVars, "group_vars"); err != nil {
|
||||||
|
@ -158,10 +169,17 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
||||||
func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
|
func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
|
||||||
ui.Say("Provisioning with Ansible...")
|
ui.Say("Provisioning with Ansible...")
|
||||||
|
|
||||||
|
if len(p.config.PlaybookDir) > 0 {
|
||||||
|
ui.Message("Uploading Playbook directory to Ansible staging directory...")
|
||||||
|
if err := p.uploadDir(ui, comm, p.config.StagingDir, p.config.PlaybookDir); err != nil {
|
||||||
|
return fmt.Errorf("Error uploading playbook_dir directory: %s", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
ui.Message("Creating Ansible staging directory...")
|
ui.Message("Creating Ansible staging directory...")
|
||||||
if err := p.createDir(ui, comm, p.config.StagingDir); err != nil {
|
if err := p.createDir(ui, comm, p.config.StagingDir); err != nil {
|
||||||
return fmt.Errorf("Error creating staging directory: %s", err)
|
return fmt.Errorf("Error creating staging directory: %s", err)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ui.Message("Uploading main Playbook file...")
|
ui.Message("Uploading main Playbook file...")
|
||||||
src := p.config.PlaybookFile
|
src := p.config.PlaybookFile
|
||||||
|
|
|
@ -68,6 +68,10 @@ Optional:
|
||||||
chi-appservers
|
chi-appservers
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
* `playbook_dir` (string) - a path to the complete ansible directory
|
||||||
|
structure on your local system to be copied to the remote machine
|
||||||
|
as the `staging_directory` before all other files and directories.
|
||||||
|
|
||||||
* `playbook_paths` (array of strings) - An array of paths to playbook files on
|
* `playbook_paths` (array of strings) - An array of paths to playbook files on
|
||||||
your local system. These will be uploaded to the remote machine under
|
your local system. These will be uploaded to the remote machine under
|
||||||
`staging_directory`/playbooks. By default, this is empty.
|
`staging_directory`/playbooks. By default, this is empty.
|
||||||
|
|
Loading…
Reference in New Issue