kitchen-oci 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +2 -0
- data/README.md +29 -8
- data/Rakefile +2 -0
- data/kitchen-oci.gemspec +3 -1
- data/lib/kitchen/driver/oci.rb +21 -7
- data/lib/kitchen/driver/oci_version.rb +3 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19053062ba01105a50890aa5d147ac200c5c639d
|
4
|
+
data.tar.gz: b9bf3f786c59eff07986fa1f205aaa4cb289c6c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51b060030ad9f2b53fde61fd7a4b053a3385f564bf349b6d6049df661a833ed088d14494c307da7322b57535f53128a4ab51bff175f7486865171162c2ec7960
|
7
|
+
data.tar.gz: 64b34c22ac500b3d7d7dca3fcc715a0b3e20fba1a680e04eee78289f4b25f558cf27da9e68f3aec8a6193fc17d593d5e9e0b4c455aef1c86220db1a581505ec7
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -7,26 +7,38 @@ WARNING: This is alpha quality. Use at your own risk!
|
|
7
7
|
## Prerequisites
|
8
8
|
|
9
9
|
You need an ssh keypair defined for your current user. By default the driver
|
10
|
-
expects to find the public key in ~/.ssh/
|
10
|
+
expects to find the public key in ~/.ssh/id\_rsa.pub, but this can be
|
11
11
|
overridden in .kitchen.yml.
|
12
12
|
|
13
|
-
You need to create suitable configuration for OCI in ~/.oci/config
|
13
|
+
You need to create suitable configuration for OCI in ~/.oci/config and this
|
14
14
|
can be created using the CLI:
|
15
15
|
```
|
16
16
|
oci setup config
|
17
17
|
```
|
18
18
|
|
19
19
|
Ensure that you have a suitable compartment defined, an external subnet, and
|
20
|
-
security rules that allow incoming SSH and outgoing HTTP
|
21
|
-
pull the Chef binaries
|
20
|
+
security rules that allow incoming SSH and outgoing HTTP to allow Kitchen to
|
21
|
+
pull the Chef binaries.
|
22
22
|
|
23
23
|
## Building the gem
|
24
24
|
|
25
|
-
|
25
|
+
```
|
26
|
+
rake build
|
27
|
+
```
|
28
|
+
|
29
|
+
## Installing the gem
|
30
|
+
|
31
|
+
You must install the gem into whatever Ruby is used to run knife. On a
|
32
|
+
workstation this will likely be the ChefDK environment. To switch to
|
33
|
+
ChefDK if you haven't already:
|
26
34
|
|
27
35
|
```
|
28
36
|
eval "$(chef shell-init bash)"
|
29
|
-
|
37
|
+
```
|
38
|
+
|
39
|
+
Then install the package you built earlier:
|
40
|
+
|
41
|
+
```
|
30
42
|
gem install pkg/kitchen-oci-<VERSION>.gem
|
31
43
|
```
|
32
44
|
|
@@ -40,6 +52,8 @@ Adjust below template as required. The following configuration is mandatory:
|
|
40
52
|
- shape
|
41
53
|
- subnet\_id
|
42
54
|
|
55
|
+
Note: The availability domain should be the full AD name including the tenancy specific prefix. For example: "AaBb:US-ASHBURN-AD-1". Look in the OCI console to get your tenancy specific string.
|
56
|
+
|
43
57
|
These settings are optional:
|
44
58
|
|
45
59
|
- oci\_config\_file, by default this is ~/.oci/config
|
@@ -62,15 +76,22 @@ verifier:
|
|
62
76
|
platforms:
|
63
77
|
- name: ubuntu-16.04
|
64
78
|
driver:
|
65
|
-
|
79
|
+
# These are mandatory
|
66
80
|
compartment_id: "ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
81
|
+
availability_domain: "XyAb:US-ASHBURN-AD-1"
|
67
82
|
image_id: "ocid1.image.oc1.phx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
68
83
|
shape: "VM.Standard1.2"
|
69
84
|
subnet_id: "ocid1.subnet.oc1.phx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
85
|
+
|
86
|
+
# These are optional
|
87
|
+
use_private_ip: false
|
88
|
+
oci_config_file: "~/.oci/config"
|
89
|
+
oci_profile_name: "DEFAULT"
|
90
|
+
ssh_keypath: "~/.ssh/id_rsa.pub"
|
70
91
|
post_create_script: >-
|
71
92
|
touch /tmp/example.txt;
|
72
93
|
transport:
|
73
|
-
username: "
|
94
|
+
username: "ubuntu"
|
74
95
|
|
75
96
|
suites:
|
76
97
|
- name: default
|
data/Rakefile
CHANGED
data/kitchen-oci.gemspec
CHANGED
data/lib/kitchen/driver/oci.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#
|
2
4
|
# Author:: Stephen Pearson (<stevieweavie@gmail.com>)
|
3
5
|
#
|
@@ -23,13 +25,14 @@ module Kitchen
|
|
23
25
|
# Oracle OCI driver for Kitchen.
|
24
26
|
#
|
25
27
|
# @author Stephen Pearson <stevieweavie@gmail.com>
|
26
|
-
class Oci < Kitchen::Driver::Base
|
28
|
+
class Oci < Kitchen::Driver::Base # rubocop:disable Metrics/ClassLength
|
27
29
|
required_config :compartment_id
|
28
30
|
required_config :availability_domain
|
29
31
|
required_config :image_id
|
30
32
|
required_config :shape
|
31
33
|
required_config :subnet_id
|
32
34
|
|
35
|
+
default_config :use_private_ip, false
|
33
36
|
default_config :oci_config_file, nil
|
34
37
|
default_config :oci_profile_name, nil
|
35
38
|
default_keypath = File.expand_path(File.join(%w[~ .ssh id_rsa.pub]))
|
@@ -41,7 +44,7 @@ module Kitchen
|
|
41
44
|
|
42
45
|
instance_id = launch_instance(config)
|
43
46
|
state[:server_id] = instance_id
|
44
|
-
state[:hostname] =
|
47
|
+
state[:hostname] = instance_ip(config, instance_id)
|
45
48
|
|
46
49
|
instance.transport.connection(state).wait_until_ready
|
47
50
|
|
@@ -97,13 +100,24 @@ module Kitchen
|
|
97
100
|
instance_id
|
98
101
|
end
|
99
102
|
|
100
|
-
def
|
101
|
-
|
103
|
+
def vnic_attachments(config, instance_id)
|
104
|
+
att = comp_api(config).list_vnic_attachments(
|
102
105
|
config[:compartment_id],
|
103
106
|
instance_id: instance_id
|
104
|
-
)
|
105
|
-
|
106
|
-
|
107
|
+
).data
|
108
|
+
raise 'Could not find any VNIC attachments' unless att.any?
|
109
|
+
att
|
110
|
+
end
|
111
|
+
|
112
|
+
def vnics(config, instance_id)
|
113
|
+
vnic_attachments(config, instance_id).map do |att|
|
114
|
+
net_api(config).get_vnic(att.vnic_id).data
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def instance_ip(config, instance_id)
|
119
|
+
vnic = vnics(config, instance_id).select(&:is_primary).first
|
120
|
+
config[:use_private_ip] ? vnic.private_ip : vnic.public_ip
|
107
121
|
end
|
108
122
|
|
109
123
|
def pubkey(config)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#
|
2
4
|
# Author:: Stephen Pearson (<stevieweavie@gmail.com>)
|
3
5
|
#
|
@@ -18,6 +20,6 @@
|
|
18
20
|
module Kitchen
|
19
21
|
module Driver
|
20
22
|
# Version string for Oracle OCI Kitchen driver
|
21
|
-
OCI_VERSION = '1.
|
23
|
+
OCI_VERSION = '1.1.0'
|
22
24
|
end
|
23
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-oci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Pearson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oci
|