[Provisioner][Ansible] Added support for inventory group
This commit is contained in:
parent
c8b3dfff5f
commit
cd14cb7012
|
@ -47,6 +47,9 @@ type Config struct {
|
|||
|
||||
// The optional inventory file
|
||||
InventoryFile string `mapstructure:"inventory_file"`
|
||||
|
||||
// The optional inventory groups
|
||||
InventoryGroups []string `mapstructure:"inventory_groups"`
|
||||
}
|
||||
|
||||
type Provisioner struct {
|
||||
|
@ -99,9 +102,10 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
|||
}
|
||||
|
||||
sliceTemplates := map[string][]string{
|
||||
"extra_arguments": p.config.ExtraArguments,
|
||||
"playbook_paths": p.config.PlaybookPaths,
|
||||
"role_paths": p.config.RolePaths,
|
||||
"extra_arguments": p.config.ExtraArguments,
|
||||
"playbook_paths": p.config.PlaybookPaths,
|
||||
"role_paths": p.config.RolePaths,
|
||||
"inventory_groups": p.config.InventoryGroups,
|
||||
}
|
||||
|
||||
for n, slice := range sliceTemplates {
|
||||
|
@ -196,7 +200,15 @@ 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())
|
||||
_, err = tf.Write([]byte("127.0.0.1"))
|
||||
if len(p.config.InventoryGroups) != 0 {
|
||||
content := ""
|
||||
for _, group := range p.config.InventoryGroups {
|
||||
content += fmt.Sprintf("[%s]\n127.0.0.1\n", group)
|
||||
}
|
||||
_, err = tf.Write([]byte(content))
|
||||
} else {
|
||||
_, err = tf.Write([]byte("127.0.0.1"))
|
||||
}
|
||||
if err != nil {
|
||||
tf.Close()
|
||||
return fmt.Errorf("Error preparing inventory file: %s", err)
|
||||
|
|
|
@ -41,6 +41,16 @@ Optional:
|
|||
* `extra_arguments` (array of strings) - An array of extra arguments to pass to the
|
||||
ansible command. By default, this is empty.
|
||||
|
||||
* `inventory_groups` (string) - You can let Packer generate a temporary inventory
|
||||
for you. It will contains only `127.0.0.1`. Thanks to `inventory_groups`,
|
||||
packer will set the current machine into different groups and will
|
||||
generate an inventory like:
|
||||
|
||||
[my_group_1]
|
||||
127.0.0.1
|
||||
[my_group_2]
|
||||
127.0.0.1
|
||||
|
||||
* `inventory_file` (string) - The inventory file to be used by ansible.
|
||||
This file must exist on your local system and will be uploaded to the
|
||||
remote machine.
|
||||
|
|
Loading…
Reference in New Issue