vagrant-g5k 0.9.4 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 434ab6db97a6c01d75354834cde480eeab3d174b
4
- data.tar.gz: dd8d702c1e0245781af2503ccc37f7b7c8634643
3
+ metadata.gz: 2d6991228db63db381f8f2516facf3887ad4b9ee
4
+ data.tar.gz: 278db64626910dd610636f6c46491273513a0855
5
5
  SHA512:
6
- metadata.gz: e499327e153f8a18e80af8d7c2ddd724b42518ed01618381a7a492a6bb550c074d0ab1a05ecb879da49bbe5e01f6414335b7b94acacc0e5406859783325177cb
7
- data.tar.gz: 95349e887d1802f26b0a2871faf3cef7c3a8f399b44906c422c9d9edd53c678146136409f4fe4600d66617be4385e1d0d401522182e220d49880b9102be741d8
6
+ metadata.gz: c6850fa3f81a71b3f626d41cc7fe10207de2b6c65635c15ab038e6674075a67f459ed10706529ced9d414eca28dc868be0c456032a68a71f972f2f751c396614
7
+ data.tar.gz: c9997684c3978324128e5ec035a9f0fb96982f2e0266ec31d7bdd512649f0d976049480c9549038683d7dae2a39f4547caed648c76285740bdfa27d3d16d8469
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
+ # 0.9.5 (unreleased)
2
+
3
+ * Fix import error on command
4
+ [[-]](https://github.com/msimonin/vagrant-g5k/commit/d5b69cc48c2e38de0895498c7bf1dfe7df2fa96c)
5
+ * bridge mode now reserves a /18 and take ips in the first 1024 ips.
6
+ [[-]](https://github.com/msimonin/vagrant-g5k/commit/9d7511e030cae63c6496c7c96fb713c6347dbadd)
7
+ * Support for container job
8
+ [[-]](https://github.com/msimonin/vagrant-g5k/commit/cf30db9324a2a5dc29b96f43372786b4c7843e53)
9
+ * Document sharing g5k user home
10
+
1
11
  # 0.9.4
2
12
 
3
- * TODO
13
+ * fix version mistake
4
14
 
5
15
  # 0.9.3
6
16
 
data/README.md CHANGED
@@ -1,14 +1,47 @@
1
- > The plugin is updated often, this may include breaking changes.
1
+ > The plugin is updated frequently, this may include breaking changes.
2
2
 
3
3
  # Vagrant G5K Provider
4
- This is a [Vagrant](http://www.vagrantup.com) 1.2+ plugin that adds an [G5K](https://www.grid5000.fr)
5
- provider to Vagrant, allowing Vagrant to control and provision **virtual machines** on Grid5000.
4
+ This is a [Vagrant](http://www.vagrantup.com) 1.2+ plugin that adds an
5
+ [G5K](https://www.grid5000.fr) provider to Vagrant, allowing Vagrant to control
6
+ and provision **virtual machines** on Grid5000.
6
7
 
7
- More generally any *OAR behind ssh* that support launching `kvm` could be used (e.g [Igrida](http://igrida.gforge.inria.fr/)). Thus *vagrant-oar* could be a more appropriate name.
8
+ More generally any *OAR behind ssh* that support launching `kvm` could be used
9
+ (e.g [Igrida](http://igrida.gforge.inria.fr/)). Thus *vagrant-oar* could be a
10
+ more appropriate name.
8
11
 
9
12
  > This plugin requires
10
13
  * Vagrant 1.2+,
11
14
 
15
+ ---
16
+
17
+ * [Supported operations](#supported-operations)
18
+ * [Usage](#usage)
19
+ * [Configuration](#configuration)
20
+ * [Note on the insecure vagrant key](#note-on-the-insecure-vagrant-key)
21
+ * [Note on shared folders](note-on-local-shared-folders)
22
+ * [Local files](#local-files)
23
+ * [Grid5000 home](#grid5000-home)
24
+ * [Note on disk format and backing strategy](#note-on-disk-format-and-backing-strategy)
25
+ * [Note on network configuration](#note-on-network-configuration)
26
+ * [NAT networking](#nat-networking)
27
+ * [Bridge networking](#bridge-networking)
28
+ * [Note on resource demand](#note-on-resource-demand)
29
+ * [Reservation in advance](#reservation-in-advance)
30
+ * [Developping](#developping)
31
+
32
+ ---
33
+
34
+ ## Supported operations
35
+
36
+ * `vagrant destroy`
37
+ * `vagrant halt`
38
+ * `vagrant provision`
39
+ * `vagrant rsync|rsync-auto`
40
+ * `vagrant ssh`
41
+ * `vagrant ssh-config`
42
+ * `vagrant status`
43
+ * `vagrant up`
44
+
12
45
 
13
46
  ## Usage
14
47
 
@@ -23,7 +56,8 @@ $ wget https://raw.githubusercontent.com/msimonin/vagrant-g5k/master/Vagrantfile
23
56
  $ vagrant up --provider=g5k
24
57
  ...
25
58
  ```
26
- Vagrant requires a box to start with. As a consequence you can add one `dummy` box with the following command :
59
+ Vagrant requires a box to start with. As a consequence you can add one `dummy`
60
+ box with the following command :
27
61
 
28
62
  ```
29
63
  vagrant box add dummy https://github.com/msimonin/vagrant-g5k/raw/master/dummy.box
@@ -41,15 +75,29 @@ Prior to some operation vagrant will replace this by a generated key.
41
75
  This operation isn't supported by vagrant-g5k thus you need to specify
42
76
  `config.vmssh.insert_key = false` in the Vagrantfile.
43
77
 
44
- For instance this is needed when using shared folders, hostmanager plugin.
78
+ For instance this is needed when using shared folders, hostmanager plugin...
45
79
 
46
80
  ## Note on shared folders
47
81
 
48
- Rsync shared folders are supported. The copy of your local files is hooked in the `up` phase. After this you can use :
82
+ ### Local files
83
+
84
+ Rsync shared folders are supported. The copy of your local files is hooked in
85
+ the `up` phase. After this you can use :
49
86
 
50
87
  * `vagrant rsync` to force a synchronization
51
88
  * `vagrant rsync-auto` to watch your local modifications
52
89
 
90
+ ### Grid5000 home
91
+
92
+ Your home on Grid'5000 can be shared with your virtual machine through VirtFS.
93
+ If the VM supports Plan 9 folder sharing you can connect to the VM and type :
94
+
95
+ ```
96
+ mkdir /g5k
97
+ mount -t 9p -o trans=virtio hostshare /g5k -oversion=9p2000.L
98
+ ```
99
+
100
+
53
101
  ## Note on disk format and backing strategy
54
102
 
55
103
  Virtual Machines can be booted either :
@@ -60,17 +108,30 @@ Virtual Machines can be booted either :
60
108
  Once the base image is chosen, you can pick one of the following strategy
61
109
  to back the disk image of the virtual machines :
62
110
 
63
- * `copy`: will make a full copy of the image in your home directory (resp. in the same pool as the rbd)
64
- * `cow`: will create a Copy On write image in your home directory (resp. in the same pool as the rbd)
111
+ * `copy`: will make a full copy of the image in your home directory (resp. in
112
+ the same pool as the rbd)
113
+ * `cow`: will create a Copy On write image in your home directory (resp. in the
114
+ same pool as the rbd)
65
115
  * `direct`: will use the image directly (you'll need r/w access to the image)
66
116
  * `snapshot`: will let `kvm` create an ephemeral copy on write image.
67
117
 
118
+ ### Use ceph as backing strategy
119
+
120
+ Vagrant-g5k will look into `~/.ceph/config` on each frontend where VMs are started.
121
+ You can read[1] for further information on how to configure ceph on grid'5000.
122
+
123
+ [1] : https://www.grid5000.fr/mediawiki/index.php/Ceph
124
+
68
125
  ## Note on network configuration
69
126
 
70
127
  Two networking modes are supported :
71
128
 
72
- * NAT networking. VMs traffic is NATed to the outside world.
73
- The outside world can access the VMs on dedicated ports that are mapped in the host of Grid'5000.
129
+ ### NAT networking
130
+
131
+ VMs traffic is NATed to the outside world. The outside world
132
+ can access the VMs on dedicated ports that are mapped in the host of
133
+ Grid'5000.
134
+
74
135
  ```
75
136
  config.vm.provider "g5k" do |g5k|
76
137
  [...]
@@ -81,9 +142,14 @@ config.vm.provider "g5k" do |g5k|
81
142
  end
82
143
  ```
83
144
 
84
- e.g : Assuming `parapluie-1.rennes.grid5000.fr` hosts the VM. A SSH tunnel from your local machine to `parapluie-1.rennes.grid5000.fr:8080` will be forwarded to the port `80` of the VM.
145
+ e.g : Assuming `parapluie-1.rennes.grid5000.fr` hosts the VM. A SSH tunnel from
146
+ your local machine to `parapluie-1.rennes.grid5000.fr:8080` will be forwarded to
147
+ the port `80` of the VM.
85
148
 
86
- * Bridge networking. VMs are given an IP from a Grid'5000 subnet. They can thus communicate with each others using their IPs.
149
+ ### Bridge networking
150
+
151
+ VMs are given an IP from a Grid'5000 subnet. They can thus
152
+ communicate with each others using their IPs.
87
153
 
88
154
  ```
89
155
  config.vm.provider "g5k" do |g5k|
@@ -94,7 +160,10 @@ config.vm.provider "g5k" do |g5k|
94
160
  end
95
161
  ```
96
162
 
97
- > Due to the dynamic nature of the subnet reserved on Grid'5000, IPs of the VMs will change accross reboots
163
+ > Due to the dynamic nature of the subnet reserved on Grid'5000, IPs of the VMs
164
+ > will change accross reboots a /18 is reserved but only the first 1024 ips are
165
+ > reserved for the VMs. That means you can use the remaining ips without any
166
+ > conflict.
98
167
 
99
168
  ## Note on resource demand
100
169
 
@@ -109,26 +178,25 @@ config.vm.provider "g5k" do |g5k|
109
178
  }
110
179
  end
111
180
  ```
112
- You can use `:cpu => -1` to express that you want all the cpu of the reserved node (but not necesseraly all the memory). Similarly `:mem => -1` will give you all the memory available on the reserved node. These are the default values.
181
+ You can use `:cpu => -1` to express that you want all the cpu of the reserved
182
+ node (but not necesseraly all the memory). Similarly `:mem => -1` will give you
183
+ all the memory available on the reserved node. These are the default values.
113
184
 
185
+ ## Reservation in advance
114
186
 
115
- ## Supported operations
187
+ If you plan to use a reservation or if you expect all your VMs to be ready
188
+ almost on the same time you can use a job container (see:
189
+ https://www.grid5000.fr/mediawiki/index.php/Advanced_OAR#Container_jobs)
116
190
 
117
- * `vagrant destroy`
118
- * `vagrant halt`
119
- * `vagrant provision`
120
- * `vagrant rsync|rsync-auto`
121
- * `vagrant ssh`
122
- * `vagrant ssh-config`
123
- * `vagrant status`
124
- * `vagrant up`
125
-
126
- ## Use ceph as backing strategy
127
-
128
- Vagrant-g5k will look into `~/.ceph/config` on each frontend where VMs are started.
129
- You can read[1] for further information on how to configure ceph on grid'5000.
191
+ * First create you container job using OAR cli from the fronted of your choice.
192
+ * Then instruct vagrant-g5k about this job container id in the Vagrantfile :
130
193
 
131
- [1] : https://www.grid5000.fr/mediawiki/index.php/Ceph
194
+ ```
195
+ config.vm.provider "g5k" do |g5k|
196
+ [...]
197
+ g5k.job_container_id = "your container job id"
198
+ end
199
+ ```
132
200
 
133
201
  ## Developping
134
202
 
data/Vagrantfile CHANGED
@@ -3,11 +3,25 @@
3
3
  #
4
4
  # Sample Vagrantfile
5
5
  #
6
+
7
+ # Allow to mount the home directory of G5k inside the VM
8
+ $script = <<SCRIPT
9
+ mkdir /g5k
10
+ mount -t 9p -o trans=virtio hostshare /g5k -oversion=9p2000.L
11
+ SCRIPT
12
+
6
13
  Vagrant.configure(2) do |config|
7
14
 
8
15
  config.vm.provider "g5k" do |g5k, override|
9
16
  # This is mandatory for the shared folders to work correctly
10
17
  override.nfs.functional = false
18
+ # vagrant-g5k only supports rsync shared folders
19
+ override.vm.synced_folder ".", "/vagrant", type: "rsync", disabled: false
20
+
21
+ override.ssh.insert_key = false
22
+
23
+ # Mount the home dir
24
+ override.vm.provision "shell", inline: $script
11
25
  # project id must be unique accross all
12
26
  # your projects using vagrant-g5k to avoid conflict
13
27
  # on vm disks
@@ -17,11 +31,12 @@ Vagrant.configure(2) do |config|
17
31
  g5k.site = "rennes"
18
32
  g5k.username = "msimonin"
19
33
  g5k.gateway = "access.grid5000.fr"
20
- g5k.walltime = "00:10:00"
34
+ g5k.walltime = "01:00:00"
35
+ #g5k.private_key = "your private key"
21
36
 
22
37
  # Image backed on the frontend filesystem
23
38
  g5k.image = {
24
- :path => "/home/msimonin/public/ubuntu1404-9p.qcow2",
39
+ :path => "/home/msimonin/public/debian-8.7-amd64-bento.qcow2",
25
40
  :backing => "snapshot"
26
41
  }
27
42
 
@@ -51,21 +66,17 @@ Vagrant.configure(2) do |config|
51
66
  :cpu => 1,
52
67
  :mem => 2048
53
68
  }
69
+ ## Job container id
70
+ ## see https://www.grid5000.fr/mediawiki/index.php/Advanced_OAR#Container_jobs
71
+ # g5k.job_container_id = "907864"
72
+
54
73
  end #g5k
55
74
 
56
- ## This define a VM.
57
- ## a g5k provider section will override top level options
58
- ## To define multiple VMs you can
59
- ## * either repeat the block
60
- ## * loop over using (1..N).each block
75
+ # This defines a VM
76
+ # If you want to use a local virtual machine (vbox, libvirt...)
77
+ # add your vagrant options below as usual.
61
78
  config.vm.define "test" do |my|
62
79
  my.vm.box = "dummy"
63
- ## Configure the shared folders between your host and the VM
64
- my.vm.synced_folder ".", "/vagrant", type: "rsync", disabled: false
65
- ## This is mandatory until #6 is fixed
66
- ## In particular this is needed for the shared folders
67
- my.ssh.insert_key = false
68
-
69
- end #vm
80
+ end
70
81
 
71
82
  end
data/Vagrantfile.multi CHANGED
@@ -5,42 +5,34 @@
5
5
  #
6
6
  Vagrant.configure(2) do |config|
7
7
 
8
+ config.vm.provider "g5k" do |g5k, override|
9
+ # some overrides
10
+ override.nfs.functional = false
11
+ override.vm.synced_folder ".", "/vagrant", type: "rsync", disabled: true
12
+ override.ssh.insert_key = false
13
+
14
+ g5k.project_id = "test-vagrant-g5k"
15
+ g5k.site = "rennes"
16
+ g5k.username = "msimonin"
17
+ g5k.gateway = "access.grid5000.fr"
18
+ g5k.walltime = "00:30:00"
19
+ g5k.image = {
20
+ :path => "/home/msimonin/public/ubuntu1404-9p.qcow2",
21
+ :backing => "snapshot"
22
+ }
23
+ g5k.net = {
24
+ :type => "bridge",
25
+ }
26
+ g5k.oar = "virtual != 'none'"
27
+ g5k.resources = {
28
+ :cpu => 1,
29
+ :mem => 2048
30
+ }
31
+ end #g5k
8
32
 
9
- ## This define a VM.
10
- ## a g5k provider section will override top level options
11
- ## To define multiple VMs you can
12
- ## * either repeat the block
13
- ## * loop over using (1..N).each block
14
33
  (1..3).each do |i|
15
34
  config.vm.define "test-#{i}" do |my|
16
35
  my.vm.box = "dummy"
17
- ## Configure the shared folders between your host and the VM
18
- my.vm.synced_folder ".", "/vagrant", type: "rsync", disabled: false
19
- ## This is mandatory until #6 is fixed
20
- ## In particular this is needed for the shared folders
21
- my.ssh.insert_key = false
22
- my.vm.provider "g5k" do |g5k, override|
23
- override.nfs.functional = false
24
- g5k.project_id = "test-vagrant-g5k"
25
- g5k.site = "rennes"
26
- g5k.username = "msimonin"
27
- g5k.gateway = "access.grid5000.fr"
28
- g5k.walltime = "00:10:00"
29
- g5k.image = {
30
- :path => "/home/msimonin/public/ubuntu1404-9p.qcow2",
31
- :backing => "snapshot"
32
- }
33
- g5k.net = {
34
- :type => "bridge",
35
- # :ports => ["#{2222+i}-:22"]
36
- }
37
- g5k.oar = "virtual != 'none'"
38
- g5k.resources = {
39
- :cpu => 1,
40
- :mem => 2048
41
- }
42
- end #g5k
43
-
44
36
  end #vm
45
37
  end
46
38
 
data/Vagrantfile.old CHANGED
@@ -3,84 +3,77 @@
3
3
  #
4
4
  # Sample Vagrantfile
5
5
  #
6
+
7
+ # Allow to mount the home directory of G5k inside the VM
6
8
  $script = <<SCRIPT
7
- add-apt-repository ppa:ubuntu-lxc/lxd-stable
8
- apt-get update
9
- apt-get install -y lxd
10
- lxd init --auto
11
- lxc network attach-profile br0 default eth0
9
+ mkdir /g5k
10
+ mount -t 9p -o trans=virtio hostshare /g5k -oversion=9p2000.L
12
11
  SCRIPT
13
12
 
14
-
15
13
  Vagrant.configure(2) do |config|
16
- config.hostmanager.enabled = true
17
- config.hostmanager.manage_guest = true
18
14
 
19
- (0..0).each do |i|
20
- config.vm.provider "g5k" do |g5k, override|
21
- # This is mandatory for the shared folders to work correctly
22
- override.nfs.functional = false
23
- # project id must be unique accross all
24
- # your projects using vagrant-g5k to avoid conflict
25
- # on vm disks
26
- g5k.project_id = "test-vagrant-g5k"
15
+ config.vm.provider "g5k" do |g5k, override|
16
+ # This is mandatory for the shared folders to work correctly
17
+ override.nfs.functional = false
18
+ # vagrant-g5k only supports rsync shared folders
19
+ override.vm.synced_folder ".", "/vagrant", type: "rsync", disabled: false
27
20
 
28
- #g5k.site = "igrida"
29
- g5k.site = "rennes"
30
- g5k.username = "msimonin"
31
- g5k.gateway = "access.grid5000.fr"
32
- g5k.walltime = "02:00:00"
21
+ override.ssh.insert_key = false
33
22
 
34
- # Image backed on the frontend filesystem
35
- g5k.image = {
36
- # :path => "/udd/msimonin/precise.qcow2",
37
- :path => "/home/msimonin/public/ubuntu1404-9p.qcow2",
38
- :backing => "snapshot"
39
- }
23
+ # Mount the home dir
24
+ override.vm.provision "shell", inline: $script
25
+ # project id must be unique accross all
26
+ # your projects using vagrant-g5k to avoid conflict
27
+ # on vm disks
28
+ g5k.project_id = "test-vagrant-g5k"
40
29
 
41
- ## Bridged network : this allow VMs to communicate
42
- g5k.net = {
43
- :type => "bridge"
44
- }
30
+ #g5k.site = "igrida"
31
+ g5k.site = "rennes"
32
+ g5k.username = "msimonin"
33
+ g5k.gateway = "access.grid5000.fr"
34
+ g5k.walltime = "01:00:00"
35
+ #g5k.private_key = "your private key"
45
36
 
46
- ## Nat network : VMs will only have access to the external world
47
- ## Forwarding ports will allow you to access services hosted inside the
48
- ## VM.
49
- #g5k.net = {
50
- # :type => "nat",
51
- # :ports => ["2222-:22"]
52
- #}
37
+ # Image backed on the frontend filesystem
38
+ g5k.image = {
39
+ :path => "/home/msimonin/public/debian-8.7-amd64-bento.qcow2",
40
+ :backing => "snapshot"
41
+ }
53
42
 
54
- ## OAR selection of resource
55
- g5k.oar = "virtual != 'none'"
56
- #g5k.oar = "virtual != 'None' and network_address in ('paranoia-2.rennes.grid5000.fr')"
57
- #g5k.oar = "network_address in ('igrida12-12.irisa.fr')"
43
+ ## Bridged network : this allow VMs to communicate
44
+ #g5k.net = {
45
+ # :type => "bridge"
46
+ #}
58
47
 
59
- ## VM size customization default values are
60
- ## cpu => -1 -> all the cpu of the reserved node
61
- ## mem => -1 -> all the mem of the reserved node
62
- ##
63
- #g5k.resources = {
64
- # :cpu => 1,
65
- # :mem => 2048
66
- #}
67
- end #g5k
48
+ ## Nat network : VMs will only have access to the external world
49
+ ## Forwarding ports will allow you to access services hosted inside the
50
+ ## VM.
51
+ g5k.net = {
52
+ :type => "nat",
53
+ :ports => ["2222-:22"]
54
+ }
68
55
 
69
- ## This define a VM.
70
- ## a g5k provider section will override top level options
71
- ## To define multiple VMs you can
72
- ## * either repeat the block
73
- ## * loop over using (1..N).each block
74
- config.vm.define "exp#{i}" do |my|
75
- my.vm.box = "dummy"
76
- ## Configure the shared folders between your host and the VM
77
- my.vm.synced_folder ".", "/vagrant", type: "rsync", disabled: true
78
- ## This is mandatory until #6 is fixed
79
- ## In particular this is needed for the shared folders
80
- my.ssh.insert_key = false
56
+ ## OAR selection of resource
57
+ g5k.oar = "virtual != 'none'"
58
+ #g5k.oar = "virtual != 'None' and network_address in ('paranoia-2.rennes.grid5000.fr')"
59
+ #g5k.oar = "network_address in ('igrida12-12.irisa.fr')"
81
60
 
82
- my.vm.provision "shell", inline: $script
83
- end #vm
61
+ ## VM size customization default values are
62
+ ## cpu => -1 -> all the cpu of the reserved node
63
+ ## mem => -1 -> all the mem of the reserved node
64
+ ##
65
+ g5k.resources = {
66
+ :cpu => 1,
67
+ :mem => 2048
68
+ }
69
+ g5k.job_container_id = "907864"
70
+ end #g5k
84
71
 
72
+ # This defines a VM
73
+ # If you want to use a local virtual machine (vbox, libvirt...)
74
+ # add your vagrant options below as usual.
75
+ config.vm.define "test" do |my|
76
+ my.vm.box = "dummy"
85
77
  end
78
+
86
79
  end