knife-ec2 0.17.0 → 0.18.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
  SHA1:
3
- metadata.gz: 902fa10935b516871981f149f29fe37890bfd3a3
4
- data.tar.gz: 84519150709c6e46de97de7cbd1be1100bad8c50
3
+ metadata.gz: 734b0e6c5929ce79f6ddf8a829920e8789fa3e8c
4
+ data.tar.gz: abcebcb7e4ae42eef0051b0aa505bc89c4d72873
5
5
  SHA512:
6
- metadata.gz: c66211a3338d6ef2ff6c954c33dbb85f71b82faf8e625f0c07bf27f9f73e5d5c599dadf798b56e09ce1ec27ce8e8fd37cb346f78369bd843c7face475325b24a
7
- data.tar.gz: d0d18e02338ffb8007b6b6ee6c3d8f280adfa2fd1b5c2b22109ea335ae132f9fa47fe0c9eae117fece8b6b86f141a7aa72b0126b36fdb7f0e4cee352f232e8a8
6
+ metadata.gz: dafdfbaf8f511db58a17e0bc519ffeae58be4805247068aecf73e3f4d67ab7a5fcc8fb681450e0d4515171e557cd294375477fb72d51928943872e0f8b0518e4
7
+ data.tar.gz: 1ecf06ea19040b5b893e4d987b5049e0c87549b63447161bcf08507275ecdc5e0333fa4f6b98ef0d5b24e6404f141e709c217cce82226c1f105311b68ee98211
@@ -5,12 +5,15 @@ Note: this log contains only changes from knife-ec2 release 0.8.0 and later
5
5
  prior to release 0.8.0, please visit the [source repository](https://github.com/chef/knife-ec2/commits).
6
6
 
7
7
 
8
- ## Latest Release 0.17.0 (2018-02-07)
8
+ ## Latest Release 0.18.0 (2018-04-05)
9
+ * [knife-ec2:#520](https://github.com/chef/knife-ec2/pull/520) Options `--aws-tag` and `--chef-tag` are added for tagging EC2 instance in AWS and Chef separately.
10
+
11
+ ## Release 0.17.0 (2018-02-07)
9
12
  * [knife-ec2:#515](https://github.com/chef/knife-ec2/pull/515) Allow re-use of existing ENI for primary interface.
10
13
  * [knife-ec2:#514](https://github.com/chef/knife-ec2/pull/514) Add `--instance-initiated-shutdown-behavior` option.
11
14
  * [knife-ec2:#513](https://github.com/chef/knife-ec2/pull/513) require `rb-readline` to avoid ruby 2.4 warnings about `Fixnum`.
12
15
 
13
- ## Latest Release 0.16.0 (2017-11-07)
16
+ ## Release 0.16.0 (2017-11-07)
14
17
  * [knife-ec2:#503](https://github.com/chef/knife-ec2/pull/503) Update list of instance_types that support ebs-encryption.
15
18
  * [knife-ec2:#496](https://github.com/chef/knife-ec2/pull/496) Change Winrm cert to 10 year expiry.
16
19
  * [knife-ec2:#492](https://github.com/chef/knife-ec2/pull/492) Added support to tag node details to chef.
@@ -19,7 +22,7 @@ prior to release 0.8.0, please visit the [source repository](https://github.com/
19
22
  * [knife-ec2:#488](https://github.com/chef/knife-ec2/pull/488) Added support to tag EBS volumes on node creation.
20
23
  * [knife-ec2:#487](https://github.com/chef/knife-ec2/pull/487) Added new column description in EC2 AMIs list.
21
24
 
22
- ## Latest Release 0.15.0 (2017-02-15)
25
+ ## Release 0.15.0 (2017-02-15)
23
26
  * [knife-ec2:#484](https://github.com/chef/knife-ec2/pull/484) sleep for collecting windows password
24
27
  * [knife-ec2:#481](https://github.com/chef/knife-ec2/pull/481) Updated readme for EC2 AMI list
25
28
  * [knife-ec2:#482](https://github.com/chef/knife-ec2/pull/482) Allow search for EC2 AMIs
@@ -30,7 +33,7 @@ prior to release 0.8.0, please visit the [source repository](https://github.com/
30
33
  * [knife-ec2:#468](https://github.com/chef/knife-ec2/pull/468) In VPC mode use private IP when public IP and DNS not available
31
34
  * [knife-ec2:#464](https://github.com/chef/knife-ec2/pull/464) default value and desription is changed for --ebs-volume-type
32
35
 
33
- ## Latest Release 0.14.0 (2016-12-02)
36
+ ## Release 0.14.0 (2016-12-02)
34
37
  * `knife-ec2` requires `chef-client 12.14` or newer.
35
38
  * [knife-ec2:#442](https://github.com/chef/knife-ec2/pull/442) Added support to show flavor list in json format.
36
39
  * [knife-ec2:#439](https://github.com/chef/knife-ec2/pull/439) Allow to accept multiple security group ids using --security-group-id option multiple times and added deprecated message for comma seprated --security-group-ids option.
@@ -4,14 +4,14 @@ This file is reset everytime when a new release is done. Contents of this file i
4
4
 
5
5
  # knife-ec2 doc changes
6
6
 
7
- Documentation changes are given below for **knife-ec2 version 0.17.0**.
7
+ Documentation changes are given below for **knife-ec2 version 0.18.0**.
8
8
 
9
9
  ## `knife ec2 server create` subcommand changes
10
10
 
11
- ### `--instance-initiated-shutdown-behavior` option
11
+ ### `--aws-tag` option
12
12
 
13
- The `--instance-initiated-shutdown-behavior` option indicates whether an instance stops or terminates when you initiate shutdown from the instance. Possible values are 'stop' and 'terminate', default is 'stop'.
13
+ The `--aws-tag` option is used for tagging the EC2 instances in AWS as `key=value` pair. Use this option like e.g. `--aws-tag <key1=value1>`. Multiple tags can be added by specifying the option multiple times.
14
14
 
15
- ### `--primary-eni` option
15
+ ### `--chef-tag` option
16
16
 
17
- Specify a pre-existing ENI for primary interface when building the instance.
17
+ The `--chef-tag` option is used for tagging the EC2 instances on the Chef server. Use this option like e.g. `--chef-tag <myTag>`. Multiple tags can be added by specifying the option multiple times.
@@ -7,16 +7,11 @@ Example Note:
7
7
  Details about the thing that changed that needs to get included in the Release Notes in markdown.
8
8
  -->
9
9
 
10
- # knife-ec2 0.17.0 release notes:
11
- In this release we have added features for adding exisiting ENI to server using `--primary-eni option`. Also added option `--instance-initiated-shutdown-behavior` to stop or terminate the instance on shutdown. There are a couple of bug fixes and enhancement as well.
10
+ # knife-ec2 0.18.0 release notes:
11
+ In this release we have added separate features for tagging EC2 instances in AWS and Chef. Option `--aws-tag` is used for tagging the node in AWS and option `--chef-tag` is used for tagging the node in Chef. Subsequently the `--tag-node-in-chef` and `--tags` are now deprecated.
12
12
 
13
- ## Features added in knife-ec2 0.17.0
13
+ ## Features added in knife-ec2 0.18.0
14
+ * Added support for tagging node in AWS as well as in Chef with separate options `--aws-tag` and `--chef-tag`. PR: [520](https://github.com/chef/knife-ec2/pull/520).
14
15
 
15
- * Added support to add existing ENI to server while node creation using `--primary-eni` option. PR: [515](https://github.com/chef/knife-ec2/pull/515).
16
-
17
- * Added support to set the `--instance-initiated-shutdown-behavior` with the option to set "stop" or "terminate" the instance on shutdown. The default is "stop". PR: [514](https://github.com/chef/knife-ec2/pull/514).
18
-
19
-
20
- ## Enhancement in knife-ec2 0.17.0
21
-
22
- * require `rb-readline` to avoid ruby 2.4 warnings about `Fixnum` PR: [513](https://github.com/chef/knife-ec2/pull/513)
16
+ ## Enhancement in knife-ec2 0.18.0
17
+ * No enhancements.
@@ -110,8 +110,11 @@ class Chef
110
110
  option :tags,
111
111
  :short => "-T T=V[,T=V,...]",
112
112
  :long => "--tags Tag=Value[,Tag=Value...]",
113
- :description => "The tags for this server",
114
- :proc => Proc.new { |tags| tags.split(',') }
113
+ :description => "The tags for this server. [DEPRECATED] Use --aws-tag instead.",
114
+ :proc => Proc.new { |v|
115
+ Chef::Log.warn("[DEPRECATED] --tags option is deprecated. Use --aws-tag option instead.")
116
+ v
117
+ }
115
118
 
116
119
  option :availability_zone,
117
120
  :short => "-Z ZONE",
@@ -453,7 +456,11 @@ class Chef
453
456
 
454
457
  option :tag_node_in_chef,
455
458
  :long => "--tag-node-in-chef",
456
- :description => "Flag for tagging node in ec2 and chef both",
459
+ :description => "Flag for tagging node in ec2 and chef both. [DEPRECATED] Use --chef-tag instead.",
460
+ :proc => Proc.new { |v|
461
+ Chef::Log.warn("[DEPRECATED] --tag-node-in-chef option is deprecated. Use --chef-tag option instead.")
462
+ v
463
+ },
457
464
  :boolean => true,
458
465
  :default => false
459
466
 
@@ -461,6 +468,24 @@ class Chef
461
468
  :long => "--instance-initiated-shutdown-behavior SHUTDOWN_BEHAVIOR",
462
469
  :description => "Indicates whether an instance stops or terminates when you initiate shutdown from the instance. Possible values are 'stop' and 'terminate', default is 'stop'."
463
470
 
471
+ option :chef_tag,
472
+ :long => "--chef-tag CHEF_TAG",
473
+ :description => "Use to tag the node in chef server; Provide --chef-tag option multiple times when specifying multiple tags e.g. --chef-tag tag1 --chef-tag tag2.",
474
+ :proc => Proc.new { |chef_tag|
475
+ Chef::Config[:knife][:chef_tag] ||= []
476
+ Chef::Config[:knife][:chef_tag].push(chef_tag)
477
+ Chef::Config[:knife][:chef_tag]
478
+ }
479
+
480
+ option :aws_tag,
481
+ :long => "--aws-tag AWS_TAG",
482
+ :description => "AWS tag for this server; Use the --aws-tag option multiple times when specifying multiple tags e.g. --aws-tag key1=value1 --aws-tag key2=value2.",
483
+ :proc => Proc.new { |aws_tag|
484
+ Chef::Config[:knife][:aws_tag] ||= []
485
+ Chef::Config[:knife][:aws_tag].push(aws_tag)
486
+ Chef::Config[:knife][:aws_tag]
487
+ }
488
+
464
489
  def run
465
490
  $stdout.sync = true
466
491
  validate!
@@ -527,7 +552,7 @@ class Chef
527
552
  end
528
553
  end
529
554
 
530
- printed_tags = hashed_tags.map{ |tag, val| "#{tag}: #{val}" }.join(", ")
555
+ printed_aws_tags = hashed_tags.map{ |tag, val| "#{tag}: #{val}" }.join(", ")
531
556
 
532
557
  hashed_volume_tags={}
533
558
  volume_tags = locate_config_value(:volume_tags)
@@ -554,7 +579,7 @@ class Chef
554
579
 
555
580
  msg_pair("IAM Profile", locate_config_value(:iam_instance_profile))
556
581
 
557
- msg_pair("Tags", printed_tags)
582
+ msg_pair("AWS Tags", printed_aws_tags)
558
583
  msg_pair("Volume Tags", printed_volume_tags)
559
584
  msg_pair("SSH Key", @server.key_name)
560
585
 
@@ -641,7 +666,8 @@ class Chef
641
666
  msg_pair("Security Group Ids", printed_security_group_ids) if vpc_mode? or @server.security_group_ids
642
667
  msg_pair("IAM Profile", locate_config_value(:iam_instance_profile)) if locate_config_value(:iam_instance_profile)
643
668
  msg_pair("Primary ENI", locate_config_value(:primary_eni)) if locate_config_value(:primary_eni)
644
- msg_pair("Tags", printed_tags)
669
+ msg_pair("AWS Tags", printed_aws_tags)
670
+ msg_pair("Chef Tags", locate_config_value(:chef_tag)) if locate_config_value(:chef_tag)
645
671
  msg_pair("SSH Key", @server.key_name)
646
672
  msg_pair("Root Device Type", @server.root_device_type)
647
673
  msg_pair("Root Volume Tags", printed_volume_tags)
@@ -771,6 +797,7 @@ class Chef
771
797
  bootstrap.config[:bootstrap_vault_item] = locate_config_value(:bootstrap_vault_item)
772
798
  bootstrap.config[:use_sudo_password] = locate_config_value(:use_sudo_password)
773
799
  bootstrap.config[:yes] = locate_config_value(:yes)
800
+ bootstrap.config[:tags] = config[:chef_tag] if locate_config_value(:chef_tag)
774
801
  # Modify global configuration state to ensure hint gets set by
775
802
  # knife-bootstrap
776
803
  Chef::Config[:knife][:hints] ||= {}
@@ -1004,12 +1031,15 @@ class Chef
1004
1031
  end
1005
1032
  end
1006
1033
 
1034
+ if locate_config_value(:tag_node_in_chef)
1035
+ ui.warn("[DEPRECATED] --tag-node-in-chef option is deprecated. Use --chef-tag option instead.")
1036
+ end
1007
1037
  end
1008
1038
 
1009
1039
  def tags
1010
- tags = locate_config_value(:tags)
1040
+ tags = locate_config_value(:aws_tag)
1011
1041
  if !tags.nil? and tags.length != tags.to_s.count('=')
1012
- ui.error("Tags should be entered in a key = value pair")
1042
+ ui.error("AWS Tags should be entered in a key = value pair")
1013
1043
  exit 1
1014
1044
  end
1015
1045
  tags
@@ -1219,7 +1249,7 @@ EOH
1219
1249
  server_def[:disable_api_termination] = locate_config_value(:disable_api_termination) if locate_config_value(:spot_price).nil?
1220
1250
 
1221
1251
  server_def[:instance_initiated_shutdown_behavior] = locate_config_value(:instance_initiated_shutdown_behavior)
1222
-
1252
+ server_def[:chef_tag] = locate_config_value(:chef_tag)
1223
1253
  server_def
1224
1254
  end
1225
1255
 
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module Ec2
3
- VERSION = "0.17.0"
3
+ VERSION = "0.18.0"
4
4
  MAJOR, MINOR, TINY = VERSION.split('.')
5
5
  end
6
6
  end
@@ -134,7 +134,8 @@ describe Chef::Knife::Ec2ServerCreate do
134
134
  :placement_group => nil,
135
135
  :iam_instance_profile_name => nil,
136
136
  :ebs_optimized => "false",
137
- :instance_initiated_shutdown_behavior => nil
137
+ :instance_initiated_shutdown_behavior => nil,
138
+ :chef_tag => nil
138
139
  }
139
140
  allow(@bootstrap).to receive(:run)
140
141
  end
@@ -476,16 +477,16 @@ describe Chef::Knife::Ec2ServerCreate do
476
477
  knife_ec2_create.run
477
478
  end
478
479
 
479
- it "sets the Name tag to the specified name when given --tags Name=NAME" do
480
- knife_ec2_create.config[:tags] = ["Name=bobcat"]
480
+ it "sets the Name tag to the specified name when given --aws-tag Name=NAME" do
481
+ knife_ec2_create.config[:aws_tag] = ["Name=bobcat"]
481
482
  expect(ec2_connection.tags).to receive(:create).with(:key => "Name",
482
483
  :value => "bobcat",
483
484
  :resource_id => new_ec2_server.id)
484
485
  knife_ec2_create.run
485
486
  end
486
487
 
487
- it "sets arbitrary tags" do
488
- knife_ec2_create.config[:tags] = ["foo=bar"]
488
+ it "sets arbitrary aws tags" do
489
+ knife_ec2_create.config[:aws_tag] = ["foo=bar"]
489
490
  expect(ec2_connection.tags).to receive(:create).with(:key => "foo",
490
491
  :value => "bar",
491
492
  :resource_id => new_ec2_server.id)
@@ -2571,6 +2572,64 @@ netstat > c:\\netstat_data.txt
2571
2572
  end
2572
2573
  end
2573
2574
 
2575
+ describe '--chef-tag option' do
2576
+ before do
2577
+ allow(Fog::Compute::AWS).to receive(:new).and_return(ec2_connection)
2578
+ end
2579
+
2580
+ context 'when mulitple values provided from cli for e.g. --chef-tag "foo" --chef-tag "bar"' do
2581
+ let(:ec2_server_create) { Chef::Knife::Ec2ServerCreate.new(['--chef-tag', 'foo', '--chef-tag', 'bar'])}
2582
+ it 'creates array of chef tag' do
2583
+ server_def = ec2_server_create.create_server_def
2584
+ expect(server_def[:chef_tag]).to eq(['foo', 'bar'])
2585
+ end
2586
+ end
2587
+
2588
+ context 'when single value provided from cli for e.g. --chef-tag foo' do
2589
+ let(:ec2_server_create) { Chef::Knife::Ec2ServerCreate.new(['--chef-tag', 'foo'])}
2590
+ it 'creates array of chef tag' do
2591
+ server_def = ec2_server_create.create_server_def
2592
+ expect(server_def[:chef_tag]).to eq(['foo'])
2593
+ end
2594
+ end
2595
+ end
2596
+
2597
+ describe '--aws-tag option' do
2598
+ before do
2599
+ allow(Fog::Compute::AWS).to receive(:new).and_return(ec2_connection)
2600
+ end
2601
+
2602
+ context 'when mulitple values provided from cli for e.g. --aws-tag "foo=bar" --aws-tag "foo1=bar1"' do
2603
+ let(:ec2_server_create) { Chef::Knife::Ec2ServerCreate.new(['--aws-tag', 'foo=bar', '--aws-tag', 'foo1=bar1'])}
2604
+ it 'creates array of aws tag' do
2605
+ server_def = ec2_server_create.config
2606
+ expect(server_def[:aws_tag]).to eq(['foo=bar', 'foo1=bar1'])
2607
+ end
2608
+ end
2609
+
2610
+ context 'when single value provided from cli for e.g. --aws-tag foo=bar' do
2611
+ let(:ec2_server_create) { Chef::Knife::Ec2ServerCreate.new(['--aws-tag', 'foo=bar'])}
2612
+ it 'creates array of aws tag' do
2613
+ server_def = ec2_server_create.config
2614
+ expect(server_def[:aws_tag]).to eq(['foo=bar'])
2615
+ end
2616
+ end
2617
+ end
2618
+
2619
+ describe '--tag-node-in-chef option' do
2620
+ before do
2621
+ allow(Fog::Compute::AWS).to receive(:new).and_return(ec2_connection)
2622
+ end
2623
+
2624
+ context 'when provided from cli for e.g. --tag-node-in-chef' do
2625
+ let(:ec2_server_create) { Chef::Knife::Ec2ServerCreate.new(['--tag-node-in-chef'])}
2626
+ it 'raises deprecated warning "[DEPRECATED] --tag-node-in-chef option is deprecated. Use --chef-tag option instead."' do
2627
+ expect(ec2_server_create.ui).to receive(:warn).with("[DEPRECATED] --tag-node-in-chef option is deprecated. Use --chef-tag option instead.")
2628
+ ec2_server_create.validate!
2629
+ end
2630
+ end
2631
+ end
2632
+
2574
2633
  describe 'evaluate_node_name' do
2575
2634
  before do
2576
2635
  knife_ec2_create.instance_variable_set(:@server, server)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-ec2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-07 00:00:00.000000000 Z
12
+ date: 2018-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog-aws
@@ -165,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  version: '0'
166
166
  requirements: []
167
167
  rubyforge_project:
168
- rubygems_version: 2.6.10
168
+ rubygems_version: 2.6.14
169
169
  signing_key:
170
170
  specification_version: 4
171
171
  summary: EC2 Support for Chef's Knife Command