vagrant-g5k 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
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