kitchen-oci 1.8.0 → 1.9.0

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
  SHA256:
3
- metadata.gz: bef4a4b0aadfd5e5f47b67c4a4807d227cf5f636bacbb1a202579f9bda6fd7fc
4
- data.tar.gz: b7cef03d39724831643dbaf5d04ed21222d4cb496ff65da9ac724fafa6e8ee97
3
+ metadata.gz: 8ac8fb8a6a0caaf9b86de1a6178009101fa642e4c6912acb6774fde2f664ae26
4
+ data.tar.gz: 4a635fbcff0cec7a548709f65e780fe24628733b61441f6feafdf9e988900166
5
5
  SHA512:
6
- metadata.gz: 86cb6549515a0f169ff4fbfcc0875688f7c0f374ffcccd366a5ce26b20cfe034e18784d22f70df585e37c675c2c48699c80dcfe2d253da3968fb1efd54dd819e
7
- data.tar.gz: a49d0d696d9ba6b7af17c9cba108e77a63c1c3c263083a7346afc87406cf081c6160953886165cc8e29578a4d9c92228e91e7fd95f554e8dad4f9e9406c08151
6
+ metadata.gz: 96e29112bec4d1f0dad5fbbe46e9accf959b27c63b6ca86e81bb32f9e89e7f646aaf720b7185072f9d9c04f45681172d0e6f5bfd14b212fbeee4e87cd9f6cc3f
7
+ data.tar.gz: cc7f3a9dce9e3b7470ba8480551baa908e0b3880e5a17bfbceec0b0cdea9f2c6c7d9191438b4dbd0248416954d2bd26021748b9148be1c055c477b60448a5dcc
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Kitchen::OCI
2
2
 
3
- A Test Kitchen Driver for Oracle Bare Metal Cloud
3
+ A Test Kitchen Driver for Oracle Cloud Infrastructure (OCI)
4
4
 
5
5
  ## Prerequisites
6
6
 
@@ -10,7 +10,7 @@ overridden in .kitchen.yml.
10
10
 
11
11
  You need to create suitable configuration for OCI in ~/.oci/config and this
12
12
  can be created using the CLI:
13
- ```
13
+ ```bash
14
14
  oci setup config
15
15
  ```
16
16
 
@@ -20,23 +20,32 @@ pull the Chef binaries.
20
20
 
21
21
  ## Building the gem
22
22
 
23
- ```
23
+ This step is only necessary if you wish to make local modifications. The gem
24
+ has already been published to rubygems.org.
25
+
26
+ ```bash
24
27
  rake build
25
28
  ```
26
29
 
27
30
  ## Installing the gem
28
31
 
29
- You must install the gem into whatever Ruby is used to run knife. On a
32
+ You must install the gem into whatever Ruby is used to run kitchen. On a
30
33
  workstation this will likely be the ChefDK environment. To switch to
31
34
  ChefDK if you haven't already:
32
35
 
33
- ```
36
+ ```bash
34
37
  eval "$(chef shell-init bash)"
35
38
  ```
36
39
 
37
- Then install the package you built earlier:
40
+ You can install the gem from RubyGems.org with:
38
41
 
42
+ ```bash
43
+ gem install kitchen-oci
39
44
  ```
45
+
46
+ To install a gem you built yourself:
47
+
48
+ ```bash
40
49
  gem install pkg/kitchen-oci-<VERSION>.gem
41
50
  ```
42
51
 
@@ -63,6 +72,7 @@ These settings are optional:
63
72
  - user\_data, Add user data scripts
64
73
  - hostname\_prefix, Prefix for the generated hostnames (note that OCI doesn't like underscores)
65
74
  - freeform\_tags, Hash containing tag name(s) and values(s)
75
+ - use\_instance\_principals, Boolean flag indicated whether Instance Principals should be used as credentials (see below)
66
76
 
67
77
  Optional settings for WinRM support in Windows:
68
78
 
@@ -74,7 +84,7 @@ The use\_private\_ip influences whether the public or private IP will be used by
74
84
 
75
85
  If the subnet\_id refers to a subnet configured to disallow public IPs on any attached VNICs, then the VNIC will be created without a public IP and the use\_private\_ip flag will assumed to be true irrespective of the config setting. On subnets that do allow a public IP a public IP will be allocated to the VNIC, but the use\_private\_ip flag can still be used to override whether the private or public IP will be used.
76
86
 
77
- ```
87
+ ```yml
78
88
  ---
79
89
  driver:
80
90
  name: oci
@@ -87,7 +97,7 @@ verifier:
87
97
  name: inspec
88
98
 
89
99
  platforms:
90
- - name: ubuntu-16.04
100
+ - name: ubuntu-18.04
91
101
  driver:
92
102
  # These are mandatory
93
103
  compartment_id: "ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
@@ -116,11 +126,32 @@ suites:
116
126
  attributes:
117
127
  ```
118
128
 
129
+ ## Instance Principals
130
+
131
+ If you are launching Kitchen from a compute instance running in OCI then you might prefer to use Instance Principals to authenticate to the OCI APIs. To set this up you can omit the `oci_config_file` and `oci_profile_name` settings and insert `use_instance_principals: true` into your .kitchen.yml instead.
132
+
133
+ ```yml
134
+ platforms:
135
+ - name: ubuntu-18.04
136
+ driver:
137
+ ...
138
+ use_instance_principals: true
139
+ ...
140
+ ```
141
+
142
+ __Important__: If you want to configure a proxy when using Instance Principals, ensure you define the `no_proxy` environment variable so that all link-local access bypasses the proxy. For example:
143
+
144
+ ```sh
145
+ export no_proxy=169.254.0.0/16
146
+ ```
147
+
148
+ This will allow the OCI lib to retrieve the certificate, key and ca-chain from the metadata service.
149
+
119
150
  ## Support for user data scripts and cloud-init
120
151
 
121
152
  The driver has support for adding user data that can be executed as scripts by cloud-init. These can either be specified inline or by referencing a file. Examples:
122
153
 
123
- ```
154
+ ```yml
124
155
  user_data:
125
156
  - type: x-shellscript
126
157
  inline: |
@@ -139,14 +170,14 @@ The scripts will be encoded into a gzipped, base64 encoded multipart mime messag
139
170
  ## Proxy support
140
171
 
141
172
  If running Kitchen on a private subnet with no public IPs permitted, it may be necessary to connect to the OCI API via a web proxy. The proxy URL can either be specified on the command line:
142
- ```
173
+ ```bash
143
174
  # With authentication
144
175
  export http_proxy=http://<proxy_user>:<proxy_password>@<proxy_host>:<proxy_port>"
145
176
  # Without authentication
146
177
  export http_proxy=http://<proxy_host>:<proxy_port>"
147
178
  ```
148
179
  .. or if preferred in the cookbook's .kitchen.yml file.
149
- ```
180
+ ```yml
150
181
  driver:
151
182
  ...
152
183
  proxy_url: "http://<proxy_user>:<proxy_password>@<proxy_host>:<proxy_port>"
@@ -154,7 +185,7 @@ driver:
154
185
 
155
186
  The SSH transport can also be tunneled via the web proxy using the CONNECT http method, but note that this is not handled by the kitchen-oci gem. Configuration is provided here for convenience only:
156
187
 
157
- ```
188
+ ```yml
158
189
  transport:
159
190
  username: "<os_username>"
160
191
  ssh_http_proxy: "<proxy_host>"
@@ -163,6 +194,8 @@ transport:
163
194
  ssh_http_proxy_password: <proxy_password>
164
195
  ```
165
196
 
197
+ See also the section above on Instance Principals if you plan to use a proxy in conjunction with a proxy. The proxy needs to be avoided when accessing the metadata address.
198
+
166
199
  ## Windows Support
167
200
 
168
201
  When launching Oracle provided Windows images, it may be helpful to allow Kitchen-oci to inject powershell to configure WinRM and to set a randomized password that does not need to be changed on first login. If the `setup_winrm` parameter is set to true then the following steps will happen:
@@ -176,7 +209,7 @@ Make sure that the transport name is set to `winrm` and that the os\_type in the
176
209
 
177
210
  Full example (.kitchen.yml):
178
211
 
179
- ```
212
+ ```yml
180
213
  ---
181
214
  driver:
182
215
  name: oci
@@ -54,6 +54,7 @@ module Kitchen
54
54
  default_config :setup_winrm, false
55
55
  default_config :winrm_user, 'opc'
56
56
  default_config :winrm_password, nil
57
+ default_config :use_instance_principals, false
57
58
 
58
59
  def process_freeform_tags(freeform_tags)
59
60
  prov = instance.provisioner.instance_variable_get(:@config)
@@ -142,11 +143,14 @@ module Kitchen
142
143
 
143
144
  def generic_api(klass)
144
145
  api_prx = api_proxy
145
- if api_prx
146
- klass.new(config: oci_config, proxy_settings: api_prx)
146
+ if config[:use_instance_principals]
147
+ sign = OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner.new
148
+ params = { signer: sign }
147
149
  else
148
- klass.new(config: oci_config)
150
+ params = { config: oci_config }
149
151
  end
152
+ params[:proxy_settings] = api_prx if api_prx
153
+ klass.new(**params)
150
154
  end
151
155
 
152
156
  def comp_api
@@ -20,6 +20,6 @@
20
20
  module Kitchen
21
21
  module Driver
22
22
  # Version string for Oracle OCI Kitchen driver
23
- OCI_VERSION = '1.8.0'
23
+ OCI_VERSION = '1.9.0'
24
24
  end
25
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.8.0
4
+ version: 1.9.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: 2019-07-15 00:00:00.000000000 Z
11
+ date: 2020-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oci
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  - !ruby/object:Gem::Version
147
147
  version: '0'
148
148
  requirements: []
149
- rubygems_version: 3.0.3
149
+ rubygems_version: 3.0.1
150
150
  signing_key:
151
151
  specification_version: 4
152
152
  summary: A Test Kitchen Driver for Oracle OCI