kitchen-linode 0.14.0 → 0.15.0
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 +5 -5
- data/.github/workflows/ci.yml +38 -0
- data/.gitignore +1 -0
- data/.kitchen.yml +68 -0
- data/.rubocop.yml +2 -1155
- data/Gemfile +3 -1
- data/README.md +75 -67
- data/Rakefile +14 -10
- data/kitchen-linode.gemspec +21 -17
- data/lib/kitchen/driver/linode.rb +236 -193
- data/lib/kitchen/driver/linode_version.rb +1 -2
- data/spec/kitchen/driver/linode_spec.rb +258 -94
- data/spec/mocks/create.txt +67 -0
- data/spec/mocks/create_bad.txt +26 -0
- data/spec/mocks/create_ratelimit.txt +26 -0
- data/spec/mocks/create_timeout.txt +25 -0
- data/spec/mocks/delete.txt +27 -0
- data/spec/mocks/list.txt +34 -0
- data/spec/mocks/view.txt +67 -0
- data/spec/spec_helper.rb +39 -2
- metadata +106 -25
- data/.tailor +0 -4
- data/.travis.yml +0 -11
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,59 +1,70 @@
|
|
1
|
-
#
|
1
|
+
# Kitchen::Linode
|
2
2
|
[](https://rubygems.org/gems/kitchen-linode)
|
3
3
|
[](https://rubygems.org/gems/kitchen-linode)
|
4
4
|
[](https://rubygems.org/gems/kitchen-linode)
|
5
5
|
[](https://codeclimate.com/github/ssplatt/kitchen-linode)
|
6
6
|
[](https://codeclimate.com/github/ssplatt/kitchen-linode/coverage)
|
7
|
-
[](https://github.com/ssplatt/kitchen-linode/actions/workflows/ci.yml)
|
8
8
|
|
9
9
|
A Test Kitchen Driver for [Linode](http://www.linode.com).
|
10
10
|
|
11
11
|
[](https://asciinema.org/a/44348)
|
12
12
|
|
13
|
-
##
|
13
|
+
## Requirements
|
14
14
|
|
15
|
-
Requires [Test Kitchen](
|
16
|
-
|
15
|
+
Requires [Test Kitchen](https://kitchen.ci/) and a [Linode](http://www.linode.com) account.
|
16
|
+
|
17
|
+
```sh
|
17
18
|
gem install test-kitchen
|
18
19
|
```
|
19
20
|
|
20
|
-
##
|
21
|
+
## Installation and Setup
|
21
22
|
|
22
23
|
The gem file is hosted at [RubyGems](https://rubygems.org/gems/kitchen-linode). To install the gem file, run:
|
23
|
-
|
24
|
+
|
25
|
+
```sh
|
24
26
|
gem install kitchen-linode
|
25
27
|
```
|
26
|
-
|
28
|
+
|
29
|
+
Or, install with bundler if you have a Gemfile.
|
30
|
+
|
27
31
|
Please read the [Driver usage][driver_usage] page for more details.
|
28
32
|
|
29
|
-
##
|
33
|
+
## Configuration
|
30
34
|
|
31
35
|
For many of these, you can specify an ID number, a full name, or a partial name that will try to match something in the list but may not match exactly what you want.
|
32
|
-
```
|
33
|
-
LINODE_API_KEY Linode API Key environment variable, default: nil
|
34
|
-
:username ssh user name, default: "root"
|
35
|
-
:password password for user, default: randomly generated hash
|
36
|
-
:image Linux distribution, default: "Debian 8"
|
37
|
-
:data_center data center, default: "Atlanta"
|
38
|
-
:flavor linode type/amount of RAM, default: "Linode 1024"
|
39
|
-
:payment_terms if you happen to have legacy, default: 1
|
40
|
-
:kernel Linux kernel, default: "Latest 64 bit"
|
41
|
-
:private_key_path Location of your private key file, default: "~/.ssh/id_rsa"
|
42
|
-
:public_key_path Location of your public key file, default: "~/.ssh/id_rsa.pub"
|
43
|
-
:ssh_timeout ssh timeout, default: 600 (seconds)
|
44
|
-
:sudo use sudo, default: True
|
45
|
-
:port ssh port, default: 22
|
46
|
-
:server_name set the hostname and linode name
|
47
|
-
```
|
48
|
-
|
49
|
-
## <a name="usage"></a> Usage
|
50
36
|
|
51
|
-
|
52
|
-
|
53
|
-
|
37
|
+
| Option | Env Var | Default | Description |
|
38
|
+
|-|-|-|-|
|
39
|
+
| `linode_token` | `LINODE_TOKEN` | none | Linode API token. Required. |
|
40
|
+
| `password` | `LINODE_PASSWORD` | Random UUID | Password for root. |
|
41
|
+
| `label` | none | Auto generated | Label for the server. |
|
42
|
+
| `tags` | none | `["kitchen"]` | List of tags to set on the server. |
|
43
|
+
| `hostname` | none | Label if provided, else kitchen instance name | The hostname of the server. |
|
44
|
+
| `image` | none | Kitchen platform name | Linode image. |
|
45
|
+
| `region` | `LINODE_REGION` | `us-east` | Linode region. |
|
46
|
+
| `type` | none | `g6-nanode-1` | Linode type. |
|
47
|
+
| `stackscript_id` | none | none | StackScript ID to provision the server with. |
|
48
|
+
| `stackscript_data` | none | none | StackScript data for user defined fields. |
|
49
|
+
| `swap_size` | none | none | Swap size in MB. |
|
50
|
+
| `private_ip` | none | `false` | Set to true to add a private IP to the server. |
|
51
|
+
| `authorized_users` | `LINODE_AUTH_USERS` | `[]` | List of authorized Linode users for seeding SSH keys. Environment variable should be a comma separated list of usernames. |
|
52
|
+
| `private_key_path` | `LINODE_PRIVATE_KEY` | `~/.ssh/id_rsa`, `~/.ssh/id_dsa`, `~/.ssh/identity`, or `~/.ssh/id_ecdsa`, whichever first exists. | Path to SSH private key that should be used to connect to the server. |
|
53
|
+
| `public_key_path` | none | Auto inferred based on the `private_key_path` | Path to SSH public key that should be installed on the server. |
|
54
|
+
| `disable_ssh_password` | none | `true` | When set to `true` and SSH keys are provided password auth for SSH is disabled. |
|
55
|
+
| `api_retries` | none | `5` | How many times to retry API calls on timeouts or rate limits. |
|
56
|
+
|
57
|
+
## Usage
|
58
|
+
|
59
|
+
First, set your Linode API token in an environment variable:
|
60
|
+
|
61
|
+
```sh
|
62
|
+
export LINODE_TOKEN='myrandomtoken123123213h123bh12'
|
54
63
|
```
|
64
|
+
|
55
65
|
Then, create a .kitchen.yml file:
|
56
|
-
|
66
|
+
|
67
|
+
```yaml
|
57
68
|
---
|
58
69
|
driver:
|
59
70
|
name: linode
|
@@ -67,53 +78,50 @@ provisioner:
|
|
67
78
|
- vim
|
68
79
|
|
69
80
|
platforms:
|
70
|
-
- name:
|
81
|
+
- name: linode/debian10
|
71
82
|
|
72
83
|
suites:
|
73
84
|
- name: default
|
74
85
|
```
|
86
|
+
|
75
87
|
then you're ready to run `kitchen test` or `kitchen converge`
|
88
|
+
|
89
|
+
```sh
|
90
|
+
kitchen test
|
76
91
|
```
|
77
|
-
$ kitchen test
|
78
|
-
```
|
79
|
-
If you want to create a second yaml config; one for using Vagrant locally but another to use the Linode driver when run on your CI server, create a config with a name like `.kitchen-ci.yml`:
|
80
|
-
```
|
81
|
-
---
|
82
|
-
driver:
|
83
|
-
name: linode
|
84
92
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
"*":
|
91
|
-
- vim
|
93
|
+
If you want to use Vagrant for local tests and Linode for CI tests then you can add the following to your `.kitchen.yml` to automatically switch the driver if the `LINODE_TOKEN` environment variable is set:
|
94
|
+
|
95
|
+
```yaml
|
96
|
+
driver:
|
97
|
+
name: <%= ENV['LINODE_TOKEN'] ? 'linode' : 'vagrant' %>
|
92
98
|
|
93
99
|
platforms:
|
94
|
-
- name:
|
100
|
+
- name: debian-10
|
101
|
+
driver:
|
102
|
+
box: bento/debian-10
|
103
|
+
image: linode/debian10
|
95
104
|
|
96
105
|
suites:
|
97
106
|
- name: default
|
98
107
|
```
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
```
|
108
|
+
|
109
|
+
Note that both the `image` (linode) and the `box` (vagrant) options are supplied in the platform driver configuration.
|
110
|
+
|
103
111
|
If you want to change any of the default settings, you can do so in the 'platforms' area:
|
104
|
-
|
105
|
-
|
112
|
+
|
113
|
+
```yaml
|
114
|
+
# ...<snip>...
|
106
115
|
platforms:
|
107
|
-
- name:
|
116
|
+
- name: ubuntu_lts
|
108
117
|
driver:
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
...<snip>...
|
118
|
+
type: g6-standard-2
|
119
|
+
region: eu-central
|
120
|
+
image: linode/ubuntu20.04
|
121
|
+
# ...<snip>...
|
114
122
|
```
|
115
123
|
|
116
|
-
##
|
124
|
+
## Development
|
117
125
|
|
118
126
|
* Source hosted at [GitHub][repo]
|
119
127
|
* Report issues/questions/feature requests on [GitHub Issues][issues]
|
@@ -128,17 +136,17 @@ example:
|
|
128
136
|
4. Push to the branch (`git push origin my-new-feature`)
|
129
137
|
5. Create new Pull Request
|
130
138
|
|
131
|
-
##
|
139
|
+
## Authors
|
132
140
|
|
133
141
|
Created and maintained by [Brett Taylor][author] (<btaylor@linode.com>)
|
134
142
|
|
135
|
-
##
|
143
|
+
## License
|
136
144
|
|
137
145
|
Apache 2.0 (see [LICENSE][license])
|
138
146
|
|
139
147
|
|
140
|
-
[author]: https://github.com/ssplatt
|
141
|
-
[issues]: https://github.com/ssplatt/kitchen-linode/issues
|
142
|
-
[license]: https://github.com/ssplatt/kitchen-linode/blob/master/LICENSE
|
143
|
-
[repo]: https://github.com/ssplatt/kitchen-linode
|
144
|
-
[driver_usage]:
|
148
|
+
[author]: <https://github.com/ssplatt>
|
149
|
+
[issues]: <https://github.com/ssplatt/kitchen-linode/issues>
|
150
|
+
[license]: <https://github.com/ssplatt/kitchen-linode/blob/master/LICENSE>
|
151
|
+
[repo]: <https://github.com/ssplatt/kitchen-linode>
|
152
|
+
[driver_usage]: <https://kitchen.ci/docs/reference/configuration/>
|
data/Rakefile
CHANGED
@@ -1,21 +1,25 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
require
|
3
|
-
require 'tailor/rake_task'
|
2
|
+
require "rspec/core/rake_task"
|
4
3
|
|
5
|
-
desc "Run
|
6
|
-
|
7
|
-
|
4
|
+
desc "Run all specs in spec directory"
|
5
|
+
RSpec::Core::RakeTask.new(:test) do |t|
|
6
|
+
t.pattern = "spec/**/*_spec.rb"
|
8
7
|
end
|
9
8
|
|
10
|
-
Tailor::RakeTask.new
|
11
|
-
|
12
9
|
desc "Display LOC stats"
|
13
10
|
task :stats do
|
14
11
|
puts "\n## Production Code Stats"
|
15
12
|
sh "countloc -r lib"
|
16
13
|
end
|
17
14
|
|
18
|
-
|
19
|
-
|
15
|
+
begin
|
16
|
+
require "chefstyle"
|
17
|
+
require "rubocop/rake_task"
|
18
|
+
RuboCop::RakeTask.new(:style) do |task|
|
19
|
+
task.options += ["--display-cop-names", "--no-color"]
|
20
|
+
end
|
21
|
+
rescue LoadError
|
22
|
+
puts "chefstyle is not available. (sudo) gem install chefstyle to do style checking."
|
23
|
+
end
|
20
24
|
|
21
|
-
task :
|
25
|
+
task default: %i{test style}
|
data/kitchen-linode.gemspec
CHANGED
@@ -1,28 +1,32 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
3
|
+
require "kitchen/driver/linode_version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
6
|
+
spec.name = "kitchen-linode"
|
8
7
|
spec.version = Kitchen::Driver::LINODE_VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description =
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
8
|
+
spec.authors = ["Brett Taylor"]
|
9
|
+
spec.email = ["btaylor@linode.com"]
|
10
|
+
spec.description = "A Test Kitchen Driver for Linode"
|
11
|
+
spec.summary = "A Test Kitchen Driver to use Linodes as your development environment"
|
12
|
+
spec.homepage = "https://github.com/ssplatt/kitchen-linode"
|
13
|
+
spec.license = "Apache-2.0"
|
15
14
|
|
16
15
|
spec.files = `git ls-files`.split($/)
|
17
16
|
spec.executables = []
|
18
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
spec.required_ruby_version = ">= 2.6"
|
20
20
|
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_dependency
|
21
|
+
spec.add_dependency "fog-linode", "~> 0.0.1.rc2"
|
22
|
+
spec.add_dependency "retryable", ">= 2.0", "< 4.0"
|
23
|
+
spec.add_dependency "test-kitchen", ">= 1.4", "< 4"
|
23
24
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
spec.add_development_dependency "chefstyle", "= 2.2.2"
|
27
|
+
spec.add_development_dependency "countloc", "~> 0.4"
|
28
|
+
spec.add_development_dependency "rake"
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.8"
|
30
|
+
spec.add_development_dependency "simplecov", "~> 0.9"
|
31
|
+
spec.add_development_dependency "webmock", "~> 3.5"
|
28
32
|
end
|