Created
November 23, 2016 08:40
-
-
Save anonymous/2bfda0e701fbd00db92a1ee457f1aeaf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Q: how to map! my_config.machines objects so I can change their values in a do block ? | |
Before, my_config.machines was an array, now it is an OS hash (kind of ?) | |
So I was able to do such a thing : my_config.machines.map! do |machine_config| #change machine_config, return machine_config end | |
puts JSON.pretty_generate(openstruct_to_hash(my_config.machines)) | |
>> | |
{ | |
"my": { | |
"box": "kaorimatz/ubuntu-16.04-amd64", | |
"box_check_update": false, | |
"primary": true, | |
"providers": { | |
"virtualbox": { | |
"vbguest": { | |
"auto_update": true, | |
"auto_reboot": true, | |
"installer_arguments": [ | |
"no-x11" | |
] | |
}, | |
"memory": 1024, | |
"cpus": 2, | |
"vboxmanage": [ | |
{ | |
"key": "vram", | |
"value": 16 | |
} | |
] | |
} | |
}, | |
"networking": { | |
"public": { | |
"type": "public_network", | |
"bridge": null | |
}, | |
"forwarded": { | |
"type": "forwarded_port", | |
"host_port": 80, | |
"host_ip": null, | |
"guest_port": 80, | |
"guest_ip": null, | |
"protocol": null, | |
"auto_correct": true | |
}, | |
"private1": { | |
"type": "private_network", | |
"ip": null, | |
"dhcp": true, | |
"auto_config": true | |
}, | |
"private2": { | |
"type": "private_network", | |
"ip": "192.168.55.33" | |
} | |
}, | |
"shared_folders": { | |
"projects": { | |
"host_path_replace": true, | |
"host_path": "c://w//p//##machine##/", | |
"guest_path": "/p/", | |
"owner": "vagrant", | |
"group": "vagrant", | |
"disabled": false, | |
"create_path": true | |
} | |
}, | |
"provisioners": { | |
"keyboard-configure": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"dots-files-add": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true, | |
"http-proxy-configure": null | |
}, | |
"apt-proxy-configure": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"ipv6-configure": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"commands-add": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"apt-update": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"apt-fast-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"base-softwares-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"ssh-user-configure": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"rvm-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"git-configure": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"python3-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"pip-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"yq-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"github-cli-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"git-flow-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"git-bash-prompt-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"gitlab-user-configure": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"gitlab-cli-helper-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"dev-project-manager-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"cdb-install": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
}, | |
"gitlab-projects-clone": { | |
"type": "shell", | |
"preserve_order": true, | |
"privileged": false, | |
"path": "./provisioning/##name##.sh", | |
"enabled": true | |
} | |
}, | |
"triggers": { | |
"up": [ | |
{ | |
"trigger": "up", | |
"momentum": "before", | |
"type": "run", | |
"command": "ssh-config-upsert rm ##machine## ##vars.host_ssh_file##" | |
}, | |
{ | |
"trigger": "up", | |
"momentum": "after", | |
"type": "run", | |
"command": "ssh-config-upsert add ##vars.host_ssh_file## \"vagrant ssh-config ##machine##\"" | |
} | |
], | |
"halt": [ | |
{ | |
"trigger": "halt", | |
"momentum": "before", | |
"type": "run", | |
"command": "ssh-config-upsert rm ##machine## ##vars.host_ssh_file## ##vars.host_ssh_file##" | |
}, | |
{ | |
"trigger": "halt", | |
"momentum": "before", | |
"type": "run_remote", | |
"command": "/vagrant/vagrant-triggers/vagrant-##momentum##-##trigger##" | |
} | |
], | |
"suspend": [ | |
{ | |
"trigger": "suspend", | |
"momentum": "before", | |
"type": "run", | |
"command": "ssh-config-upsert rm ##machine## ##vars.host_ssh_file##" | |
}, | |
{ | |
"trigger": "suspend", | |
"momentum": "before", | |
"type": "run_remote", | |
"command": "/vagrant/vagrant-triggers/vagrant-##momentum##-##trigger##" | |
} | |
], | |
"destroy": [ | |
{ | |
"trigger": "destroy", | |
"momentum": "before", | |
"type": "run_remote", | |
"command": "/vagrant/vagrant-triggers/vagrant-##momentum##-##trigger##" | |
}, | |
{ | |
"trigger": "destroy", | |
"momentum": "before", | |
"type": "run", | |
"command": "ssh-config-upsert rm ##machine## ##vars.host_ssh_file##" | |
} | |
], | |
"reload": [ | |
{ | |
"trigger": "reload", | |
"momentum": "before", | |
"type": "run", | |
"command": "ssh-config-upsert rm ##machine## ##vars.host_ssh_file##" | |
}, | |
{ | |
"trigger": "reload", | |
"momentum": "before", | |
"type": "run_remote", | |
"command": "/vagrant/vagrant-triggers/vagrant-##momentum##-##trigger##" | |
}, | |
{ | |
"trigger": "reload", | |
"momentum": "after", | |
"type": "run", | |
"command": "ssh-config-upsert add ##vars.host_ssh_file## \"vagrant ssh-config ##machine##\"" | |
}, | |
{ | |
"trigger": "reload", | |
"momentum": "after", | |
"type": "run_remote", | |
"command": "/vagrant/vagrant-triggers/vagrant-##momentum##-##trigger##" | |
} | |
] | |
}, | |
"hostname": "my" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment