Commit 11e32573 authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

Merge branch 'ansible-inventory-groups' of https://github.com/lyrixx/packer...

Merge branch 'ansible-inventory-groups' of https://github.com/lyrixx/packer into lyrixx-ansible-inventory-groups
parents 7c8e86c9 cd14cb70
...@@ -49,6 +49,9 @@ type Config struct { ...@@ -49,6 +49,9 @@ type Config struct {
// The optional inventory file // The optional inventory file
InventoryFile string `mapstructure:"inventory_file"` InventoryFile string `mapstructure:"inventory_file"`
// The optional inventory groups
InventoryGroups []string `mapstructure:"inventory_groups"`
} }
type Provisioner struct { type Provisioner struct {
...@@ -158,7 +161,15 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error { ...@@ -158,7 +161,15 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
return fmt.Errorf("Error preparing inventory file: %s", err) return fmt.Errorf("Error preparing inventory file: %s", err)
} }
defer os.Remove(tf.Name()) 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 { if err != nil {
tf.Close() tf.Close()
return fmt.Errorf("Error preparing inventory file: %s", err) return fmt.Errorf("Error preparing inventory file: %s", err)
......
...@@ -41,6 +41,16 @@ Optional: ...@@ -41,6 +41,16 @@ Optional:
* `extra_arguments` (array of strings) - An array of extra arguments to pass to the * `extra_arguments` (array of strings) - An array of extra arguments to pass to the
ansible command. By default, this is empty. 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. * `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 This file must exist on your local system and will be uploaded to the
remote machine. 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