vagrant-dotvm / plugin

YAML interface to Vagrant
MIT License
6 stars 1 forks source link

Support for third party plugins #41

Open jhcook opened 8 years ago

jhcook commented 8 years ago

I'm not sure what the easiest way would be to do this, but since we are abstracting Vagrant's interface with YAML, we need to be able to support third-party plugins. Tonight I was working on a situation where I needed to reload between provisioners. I added on a plugin called vagrant-reload by vagrant plugin install vagrant-reload and place this snippet in the yaml file:

provision:
    - type: shell
      inline: "atomic host upgrade"
    - type: shell
      path: "%host.files_dir%/k8smaster_provision.sh"
    - type: reload
    - type: shell
      path: "%host.files_dir%/k8smaster_provision2.sh"

and get the error on vagrant up:

==> k8smaster: Running provisioner: shell...
    k8smaster: Running: /var/folders/7l/nmm2h83x0l1c341q9jkm03xw0000gn/T/vagrant-shell20160306-10088-4rzt1b.sh
==> k8smaster: unknown

https://github.com/aidanns/vagrant-reload

jhcook commented 8 years ago

After correcting my syntax, the reload plugin worked :-)

jhcook commented 8 years ago

F***\ beautiful :)

==> k8smaster: Running provisioner: shell...
    k8smaster: Running: /var/folders/7l/nmm2h83x0l1c341q9jkm03xw0000gn/T/vagrant-shell20160307-16944-4nj6et.sh
==> k8smaster: [2016-03-07 10:22:31]: Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
==> k8smaster: [2016-03-07 10:22:31]: {
==> k8smaster: [2016-03-07 10:22:31]:   "Network": "10.20.0.0/16",
==> k8smaster: [2016-03-07 10:22:31]:   "SubnetLen": 24,
==> k8smaster: [2016-03-07 10:22:31]:   "Backend": {
==> k8smaster: [2016-03-07 10:22:31]:     "Type": "vxlan",
==> k8smaster: [2016-03-07 10:22:31]:     "VNI": 1
==> k8smaster: [2016-03-07 10:22:31]:   }
==> k8smaster: [2016-03-07 10:22:31]: }
==> k8smaster: [2016-03-07 10:22:31]:
==> k8smaster: [2016-03-07 10:22:31]: Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.
==> k8smaster: [2016-03-07 10:22:31]: Created symlink from /etc/systemd/system/docker.service.requires/flanneld.service to /usr/lib/systemd/system/flanneld.service.
==> k8smaster: Running provisioner: reload...
==> k8smaster: Attempting graceful shutdown of VM...
==> k8smaster: Checking if box 'centos/atomic-host' is up to date...
==> k8smaster: Clearing any previously set forwarded ports...
==> k8smaster: Clearing any previously set network interfaces...
==> k8smaster: Preparing network interfaces based on configuration...
    k8smaster: Adapter 1: nat
    k8smaster: Adapter 2: intnet
==> k8smaster: Forwarding ports...
    k8smaster: 22 (guest) => 2200 (host) (adapter 1)
==> k8smaster: Running 'pre-boot' VM customizations...
==> k8smaster: Booting VM...
==> k8smaster: Waiting for machine to boot. This may take a few minutes...
    k8smaster: SSH address: 127.0.0.1:2200
    k8smaster: SSH username: vagrant
    k8smaster: SSH auth method: private key
==> k8smaster: Machine booted and ready!
==> k8smaster: Checking for guest additions in VM...
    k8smaster: No guest additions were detected on the base box for this VM! Guest
    k8smaster: additions are required for forwarded ports, shared folders, host only
    k8smaster: networking, and more. If SSH fails on this machine, please install
    k8smaster: the guest additions and repackage the box to continue.
    k8smaster:
    k8smaster: This is not an error message; everything may continue to work properly,
    k8smaster: in which case you may ignore this message.
==> k8smaster: Setting hostname...
==> k8smaster: Configuring and enabling network interfaces...
==> k8smaster: Rsyncing folder: /Users/jcook/play/vagrant/kubernetes/ => /home/vagrant/sync
==> k8smaster: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> k8smaster: flag to force provisioning. Provisioners marked to run always will still run.
==> k8smaster: Running provisioner: shell...
    k8smaster: Running: script: host k8smaster -> 10.200.1.11
==> k8smaster: Running provisioner: shell...
    k8smaster: Running: script: host k8snode1 -> 10.200.1.21
==> k8smaster: Running provisioner: shell...
    k8smaster: Running: script: host k8snode2 -> 10.200.1.22
==> k8smaster: Running provisioner: shell...
    k8smaster: Running: /var/folders/7l/nmm2h83x0l1c341q9jkm03xw0000gn/T/vagrant-shell20160307-16944-13t0hnx.sh
==> k8smaster: [2016-03-07 10:23:24]: Using default tag: latest
==> k8smaster: [2016-03-07 10:23:24]: Trying to pull repository docker.io/rhel7/kubernetes-controller-mgr ... 8ed2a9b1fc4a: Pulling image (latest) from docker.io/rhel7/kubernetes-controller-mgr
==> k8smaster: [2016-03-07 10:23:24]: 8ed2a9b1fc4a: Pulling image (latest) from docker.io/rhel7/kubernetes-controller-mgr, endpoint: https://registry.access.redhat.com/v1/
==> k8smaster: [2016-03-07 10:23:24]: 8ed2a9b1fc4a: Pulling dependent layers
==> k8smaster: [2016-03-07 10:23:24]: bf63a676257a: Pulling metadata
==> k8smaster: [2016-03-07 10:23:24]: bf63a676257a: Pulling fs layer
==> k8smaster: [2016-03-07 10:23:24]: bf63a676257a: Download complete
==> k8smaster: [2016-03-07 10:23:24]: a118e7623939: Pulling metadata
==> k8smaster: [2016-03-07 10:23:24]: a118e7623939: Pulling fs layer
==> k8smaster: [2016-03-07 10:23:24]: a118e7623939: Download complete
==> k8smaster: [2016-03-07 10:23:24]: 8ed2a9b1fc4a: Pulling metadata
==> k8smaster: [2016-03-07 10:23:24]: 8ed2a9b1fc4a: Pulling fs layer
==> k8smaster: [2016-03-07 10:23:24]: 8ed2a9b1fc4a: Download complete
==> k8smaster: [2016-03-07 10:23:24]: 8ed2a9b1fc4a: Download complete
==> k8smaster: [2016-03-07 10:23:24]: Status: Downloaded newer image for docker.io/rhel7/kubernetes-controller-mgr:latest
==> k8smaster: [2016-03-07 10:23:24]:
==> k8smaster: [2016-03-07 10:23:24]: Using default tag: latest
==> k8smaster: [2016-03-07 10:23:24]: Trying to pull repository docker.io/rhel7/kubernetes-apiserver ... 827d6cec5921: Pulling image (latest) from docker.io/rhel7/kubernetes-apiserver
==> k8smaster: [2016-03-07 10:23:24]: 827d6cec5921: Pulling image (latest) from docker.io/rhel7/kubernetes-apiserver, endpoint: https://registry.access.redhat.com/v1/
==> k8smaster: [2016-03-07 10:23:24]: 827d6cec5921: Pulling dependent layers
==> k8smaster: [2016-03-07 10:23:24]: bf63a676257a: Download complete
==> k8smaster: [2016-03-07 10:23:24]: a118e7623939: Download complete
==> k8smaster: [2016-03-07 10:23:24]: 827d6cec5921: Pulling metadata
==> k8smaster: [2016-03-07 10:23:24]: 827d6cec5921: Pulling fs layer
==> k8smaster: [2016-03-07 10:23:24]: 827d6cec5921: Download complete
==> k8smaster: [2016-03-07 10:23:24]: 827d6cec5921: Download complete
==> k8smaster: [2016-03-07 10:23:24]: Status: Downloaded newer image for docker.io/rhel7/kubernetes-apiserver:latest
==> k8smaster: [2016-03-07 10:23:24]:
==> k8smaster: [2016-03-07 10:23:24]: Using default tag: latest
==> k8smaster: [2016-03-07 10:23:24]: Trying to pull repository docker.io/rhel7/kubernetes-scheduler ... a2fb000de841: Pulling image (latest) from docker.io/rhel7/kubernetes-scheduler
==> k8smaster: [2016-03-07 10:23:24]: a2fb000de841: Pulling image (latest) from docker.io/rhel7/kubernetes-scheduler, endpoint: https://registry.access.redhat.com/v1/
==> k8smaster: [2016-03-07 10:23:24]: a2fb000de841: Pulling dependent layers
==> k8smaster: [2016-03-07 10:23:24]: bf63a676257a: Download complete
==> k8smaster: [2016-03-07 10:23:24]: a118e7623939: Download complete
==> k8smaster: [2016-03-07 10:23:24]: a2fb000de841: Pulling metadata
==> k8smaster: [2016-03-07 10:23:24]: a2fb000de841: Pulling fs layer
==> k8smaster: [2016-03-07 10:23:24]: a2fb000de841: Download complete
==> k8smaster: [2016-03-07 10:23:24]: a2fb000de841: Download complete
==> k8smaster: [2016-03-07 10:23:24]: Status: Downloaded newer image for docker.io/rhel7/kubernetes-scheduler:latest
==> k8smaster: [2016-03-07 10:23:24]:
==> k8smaster: [2016-03-07 10:23:24]: Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.
==> k8smaster: [2016-03-07 10:23:24]: Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
jhcook commented 8 years ago

So just calling this plugin works as is right now, but what about more complex plugins that actually take arguments?

https://github.com/ggiamarchi/vagrant-openstack-provider/