Skip to content

Instantly share code, notes, and snippets.

Created November 23, 2016 08:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/2bfda0e701fbd00db92a1ee457f1aeaf to your computer and use it in GitHub Desktop.
Save anonymous/2bfda0e701fbd00db92a1ee457f1aeaf to your computer and use it in GitHub Desktop.
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