aws-ec2 1.3.2 → 1.4.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: a1dc047afe1a87776c18aab7ff01f79596275aa6e71062ae146c8475fba503fe
4
- data.tar.gz: 639750ef5c6dd1182144f19a55dd65c9f3bda044387b9e7e8f4e837dbe86b069
3
+ metadata.gz: bb267f8cd533d910838799ca725bfb8e792d5c5c09d5214a42dc61f123178507
4
+ data.tar.gz: ea088020fa9c7fb16933d60bcc598a1cbe2870038c533a1dda9a5ff21c465603
5
5
  SHA512:
6
- metadata.gz: a933a41f436bdf3d0605c6d971f01f3a9eabef27fdbc6a2a5392c5c8ca894e179805d49e8876c529a9be61740a9952fef8a0c67e49e46d258b46b117a061a93a
7
- data.tar.gz: d340a96677a23a90f851879651d9f204b3e2ca58e97e840efb3b1a93f8f8a471d70d04cf140e06101dd53b7dba05cd9b58de6be6b1e5384ba70046c14b9f9791
6
+ metadata.gz: 4d31388fb4b6d63789f39b0afce19705aa0fe8b8bf2a7d2b670a7b804278649aaabc28bc149dcabef5231d5d8eaeffd0d2300877c28524cf4057ff6f41594ab1
7
+ data.tar.gz: 157911b5ab7ea840093bcf3b742de32e6497440e17ca66cfea762d52747297c116acdba140ca259adf42f3a231eb01f2d9c91de8ad57910451e5e1d814f95b39
@@ -3,6 +3,10 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [1.4.0]
7
+ - Merge pull request #8 from tongueroo/cloudwatch
8
+ - cloudwatch support for amazonlinux2 and ubuntu
9
+
6
10
  ## [1.3.2]
7
11
  - add noop mode for clean ami command
8
12
 
@@ -13,7 +13,7 @@ module AwsEc2
13
13
 
14
14
  common_options = Proc.new do
15
15
  option :auto_terminate, type: :boolean, default: false, desc: "automatically terminate the instance at the end of user-data"
16
- option :cloudwatch, type: :boolean, default: false, desc: "enable cloudwatch logging, only supported for amazonlinux"
16
+ option :cloudwatch, type: :boolean, default: false, desc: "enable cloudwatch logging, supported for amazonlinux2 and ubuntu"
17
17
  end
18
18
 
19
19
  desc "create NAME", "create ec2 instance"
@@ -10,13 +10,15 @@ if [ $# -eq 0 ]; then
10
10
  fi
11
11
  LOG_GROUP_NAME=$1
12
12
 
13
+ # shellcheck disable=SC1091
13
14
  source "/opt/aws-ec2/shared/functions.sh"
14
- os=$(os_name)
15
- if [ "$os" != "amazonlinux2" ]; then
16
- echo "Sorry, enable cloudwatch logging with the aws-ec2 tool is only supported for amazonlinux2 currently"
15
+ OS=$(os_name)
16
+ if [ "$OS" != "amazonlinux2" ] || [ "$OS" != "ubuntu" ] ; then
17
+ echo "Sorry, enable cloudwatch logging with the aws-ec2 tool is only supported for amazonlinux2 and ubuntu"
17
18
  exit
18
19
  fi
19
20
 
21
+ export OS # used by the scripts to delegate to the right OS script
20
22
  /opt/aws-ec2/cloudwatch/install.sh
21
23
  /opt/aws-ec2/cloudwatch/configure.sh "$LOG_GROUP_NAME"
22
24
  /opt/aws-ec2/cloudwatch/service.sh
@@ -1,4 +1,3 @@
1
1
  #!/bin/bash -eux
2
2
 
3
- # Install awslogs and the jq JSON parser
4
- yum install -y awslogs jq
3
+ /opt/aws-ec2/cloudwatch/install/"$OS".sh
@@ -0,0 +1,4 @@
1
+ #!/bin/bash -eux
2
+
3
+ # Install awslogs and the jq JSON parser
4
+ yum install -y awslogs jq
@@ -0,0 +1,29 @@
1
+ #!/bin/bash -eux
2
+
3
+ # https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
4
+
5
+ REGION=$(curl -s 169.254.169.254/latest/meta-data/placement/availability-zone | sed s'/.$//')
6
+
7
+ type python || apt-get install -y python-pip
8
+
9
+ # Install awslogs and the jq JSON parser
10
+ curl -s https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
11
+
12
+ # in order to install awslogs non-interactively we need a filler configfile
13
+ mkdir -p /etc/awslogs
14
+ cat > /etc/awslogs/awslogs.conf <<- EOL
15
+ [general]
16
+ state_file = /var/awslogs/state/agent-state
17
+ ## filler config file, will get replaced by configure.sh script
18
+ EOL
19
+
20
+ # yum install -y awslogs jq also creates this file. We're creating it so that
21
+ # configure.sh is consistent.
22
+ cat > /etc/awslogs/awscli.conf <<- EOL
23
+ [plugins]
24
+ cwlogs = cwlogs
25
+ [default]
26
+ region = us-west-2
27
+ EOL
28
+
29
+ python ./awslogs-agent-setup.py --region "$REGION" --non-interactive --configfile=/etc/awslogs/awslogs.conf
@@ -1,19 +1,3 @@
1
- cat > /etc/init/awslogs.conf <<- EOL
2
- #upstart-job
3
- description "Configure and start CloudWatch Logs agent EC2 instance"
4
- author "Tung Nguyen"
5
- start on startup
1
+ #!/bin/bash -eux
6
2
 
7
- script
8
- exec 2>>/var/log/cloudwatch-logs-start.log
9
- set -x
10
-
11
- service awslogs start
12
- chkconfig awslogs on
13
- end script
14
- EOL
15
-
16
- initctl list
17
- initctl reload-configuration
18
- initctl start awslogs
19
- initctl list
3
+ /opt/aws-ec2/cloudwatch/service/"$OS".sh
@@ -0,0 +1,8 @@
1
+ #!/bin/bash -exu
2
+
3
+ # yum install already has configured
4
+ # /usr/lib/systemd/system/awslogsd.service
5
+ # Restart because we adjust the config with configure.sh
6
+ systemctl daemon-reload
7
+ systemctl restart awslogsd # with the yum awslogs package the systemd is called awslogsd
8
+ # systemctl status awslogsd
@@ -0,0 +1,10 @@
1
+ #/bin/bash -exu
2
+
3
+ # Interestingly, the awslogs-agent-setup.py command in the install.sh script
4
+ # already sets up systemd.
5
+ # With the yum awslogs-agent-setup.py setup, the systemd is called awslogs
6
+
7
+ # We just have to reload and restart it since we reconfigured it
8
+ systemctl daemon-reload
9
+ systemctl restart awslogs
10
+ # systemctl status awslogs
@@ -16,29 +16,63 @@ CONFIGURE_AWS_CLI
16
16
  fi
17
17
  }
18
18
 
19
- # Example OS values at this point:
20
- # Ubuntu
21
- # Amazon Linux AMI
19
+ # Normalize os name so we can delegate out to os specific scripts.
20
+ #
21
+ # Amazon Linux 2
22
+ # $ cat /etc/os-release
23
+ # NAME="Amazon Linux"
24
+ # VERSION="2 (2017.12)"
25
+ # ID="amzn"
26
+ # ID_LIKE="centos rhel fedora"
27
+ # VERSION_ID="2"
28
+ # PRETTY_NAME="Amazon Linux 2 (2017.12) LTS Release Candidate"
29
+ # ANSI_COLOR="0;33"
30
+ # CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
31
+ # HOME_URL="https://amazonlinux.com/"
32
+ #
33
+ # Ubuntu
34
+ # ubuntu@ip-172-31-6-8:~$ cat /etc/os-release
35
+ # NAME="Ubuntu"
36
+ # VERSION="16.04.3 LTS (Xenial Xerus)"
37
+ # ID=ubuntu
38
+ # ID_LIKE=debian
39
+ # PRETTY_NAME="Ubuntu 16.04.3 LTS"
40
+ # VERSION_ID="16.04"
41
+ # HOME_URL="http://www.ubuntu.com/"
42
+ # SUPPORT_URL="http://help.ubuntu.com/"
43
+ # BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
44
+ # VERSION_CODENAME=xenial
45
+ # UBUNTU_CODENAME=xenial
46
+ #
47
+ # Note: Amazon Linux and Amazon Linux 2 have the same name
48
+ #
22
49
  function os_name() {
23
- # https://askubuntu.com/questions/459402/how-to-know-if-the-running-platform-is-ubuntu-or-centos-with-help-of-a-bash-scri
24
- # Method 1 works for amazonlinux2 and ubuntu
25
- # Method 3 the complex script, did not work for amazonlinux2
26
50
  local OS
27
- OS=$(gawk -F= '/^NAME/{print $2}' /etc/os-release) # text surrounded by double quotes
28
- # strip surrounding quotes: https://stackoverflow.com/questions/9733338/shell-script-remove-first-and-last-quote-from-a-variable
29
- OS="${OS%\"}"
30
- OS="${OS#\"}"
31
- # Example OS values at this point:
32
- # Ubuntu
33
- # Amazon Linux AMI
51
+ local VERSION
34
52
 
35
- # normalize values
36
- case "$OS" in
37
- Ubuntu)
38
- echo "ubuntu"
39
- ;;
40
- *)
41
- echo "amazonlinux2" # default
42
- ;;
43
- esac
53
+ if [[ "$OSTYPE" == "darwin"* ]]; then
54
+ OS="macosx" # gawk not available on macosx usually
55
+ else
56
+ # https://askubuntu.com/questions/459402/how-to-know-if-the-running-platform-is-ubuntu-or-centos-with-help-of-a-bash-scri
57
+ # Method 1 works for amazonlinux and ubuntu
58
+ # Method 3 the complex script, did not work for amazonlinux
59
+ OS=$(gawk -F= '/^NAME/{print $2}' /etc/os-release)
60
+ fi
61
+
62
+ OS="${OS// /}" # remove spaces
63
+ OS=$(echo "$OS" | tr '[:upper:]' '[:lower:]')
64
+ # https://stackoverflow.com/questions/9733338/shell-script-remove-first-and-last-quote-from-a-variable
65
+ OS="${OS#\"}" # remove leading "
66
+ OS="${OS%\"}" # remove trailing "
67
+
68
+ if [ "$OS" == "amazonlinux" ]; then
69
+ VERSION=$(gawk -F= '/^VERSION/{print $2}' /etc/os-release)
70
+ VERSION="${VERSION#\"}" # remove leading "
71
+ if [[ "$VERSION" =~ ^2 ]] ; then
72
+ OS="${OS}2"
73
+ fi
74
+ fi
75
+
76
+ echo "$OS"
44
77
  }
78
+ OS=$(normalize_os)
@@ -1,3 +1,3 @@
1
1
  module AwsEc2
2
- VERSION = "1.3.2"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-ec2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-25 00:00:00.000000000 Z
11
+ date: 2018-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -296,7 +296,11 @@ files:
296
296
  - lib/aws_ec2/scripts/cloudwatch.sh
297
297
  - lib/aws_ec2/scripts/cloudwatch/configure.sh
298
298
  - lib/aws_ec2/scripts/cloudwatch/install.sh
299
+ - lib/aws_ec2/scripts/cloudwatch/install/amazonlinux2.sh
300
+ - lib/aws_ec2/scripts/cloudwatch/install/ubuntu.sh
299
301
  - lib/aws_ec2/scripts/cloudwatch/service.sh
302
+ - lib/aws_ec2/scripts/cloudwatch/service/amazonlinux2.sh
303
+ - lib/aws_ec2/scripts/cloudwatch/service/ubuntu.sh
300
304
  - lib/aws_ec2/scripts/shared/functions.sh
301
305
  - lib/aws_ec2/setting.rb
302
306
  - lib/aws_ec2/template.rb