Commit cd14cb70 authored by Grégoire Pineau's avatar Grégoire Pineau

[Provisioner][Ansible] Added support for inventory group

parent c8b3dfff
......@@ -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 {
......@@ -102,6 +105,7 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
"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())
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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment