Sitemap
Prashant Lakhera

Prashant Lakhera

AWS Community Builder, Ex-Redhat, Author, Blogger, YouTuber, RHCA, RHCDS, RHCE, Docker Certified,4XAWS, CCNA, MCP, Certified Jenkins, Terraform Certified, 1XGCP

100 Days of DevOps — Day 36-Introduction to AWS System Manager

6 min readMar 19, 2019

Welcome to Day 36 of 100 Days of DevOps, Focus for today is AWS System Manager

What Is AWS Systems Manager?

AWS Systems Manager is a collection of capabilities for configuring and managing your Amazon EC2 instances, on-premises servers and virtual machines, and other AWS resources at scale.

Press enter or click to view image in full size

Reference

Pre-requisites: There are two pre-requisites on setting up System Manager

Setting up IAM Role for System Manager

To use system manager you need to set up two roles

  • One role authorizes the user to use System Manager
  • First one assign AmazonSSMFullAccess policy to the user
Press enter or click to view image in full size
  • Other authorizes systems to be authorized by the system manager
  • Create a new role and assign AmazonEc2Rolefor SSM
Press enter or click to view image in full size
Press enter or click to view image in full size
  • Attach the role, I have created earlier to an existing instance or during instance creation
Press enter or click to view image in full size

For more info about IAM

Installing SSM Agent

Press enter or click to view image in full size
  • Go to Actions → Run Command → AWS-RunShellScript → Commands → Type any Linux command eg: ls -l → Target Instance(Select the instance)
Press enter or click to view image in full size
  • You can also check the output under view output tab
Press enter or click to view image in full size
  • To execute the same command via aws cli

What is AWS Systems Manager State Manager

  • AWS Systems Manager State Manager is a secure and scalable configuration management service that automates the process of keeping your Amazon EC2 and hybrid infrastructure in a state that you define.
  • One of the use case I found out of AWS System Manager State Manager is to run the command on a scheduled basis(eg: SnapShot Creation)
Press enter or click to view image in full size
Press enter or click to view image in full size

But I believe there is a much better way to achieve this eg: EBS LifeCycle Manager

One other option that has tried is the AMI creation on the scheduled basis but there is a bug already raised for this issue https://forums.aws.amazon.com/thread.jspa?messageID=893995&#893995

Press enter or click to view image in full size

AWS Systems Manager Parameter Store

AWS System Manager Parameter store provides secure, hierarchical storage for configuration data management and secrets management. We can store data such as,

  • passwords
  • database strings
  • license codes

Which we can then be programmatically accessed via the SSM API.

Parameter store is offered at no additional charge

Go to the parameter store https://us-west-2.console.aws.amazon.com/systems-manager → Create Parameter

Press enter or click to view image in full size
  • Now to retrieve this value via command line
$ aws ssm get-parameters --names "testpass"{"InvalidParameters": [],"Parameters": [{"Name": "testpass","LastModifiedDate": 1552923749.085,"Value": "test123","Version": 1,"Type": "String","ARN": "arn:aws:ssm:us-west-2:XXXXXXX:parameter/testpass"}]}

How to store a secure string

  • When we store a secure string in the EC2 parameter store, the data is encrypted by the KMS key associated with my account.
Press enter or click to view image in full size
  • If you try to verify via UI, you will see something like this
Press enter or click to view image in full size
  • You can access it via command line
$ aws ssm get-parameters --names "mysecurestring" --with-decryption{"InvalidParameters": [],"Parameters": [{"Name": "mysecurestring","LastModifiedDate": 1552923877.289,"Value": "test123","Version": 1,"Type": "SecureString","ARN": "arn:aws:ssm:us-west-2:349934551430:parameter/mysecurestring"}]}
  • To store the secret
# To store the secret# aws ssm put-parameter --name "secret-password" --value 'XXXXX' --type SecureString --key-id XXXXXX{"Version": 1}

AWS Systems Manager Inventory

AWS Systems Manager Inventory provides visibility into your Amazon EC2 and on-premises computing environment. You can use Inventory to collect metadata from your managed instances. You can store this metadata in a central Amazon Simple Storage Service (Amazon S3) bucket, and then use built-in tools to query the data and quickly determine which instances are running the software and configurations required by your software policy, and which instances need to be updated.

Press enter or click to view image in full size
Press enter or click to view image in full size
* Give you inventory some name
* Targets: Either Manually select the instance or better to use Tag so that all the future installed instance will be tracked automatically
* Schedule: How frequently you want to collect Invnetory
* Parameter: Different Parameter you want to collect
  • After waiting for a few mins, you will see something like this
Press enter or click to view image in full size
  • If you go to managed instance tab, select your instance and then inventory tab
Press enter or click to view image in full size
Press enter or click to view image in full size
  • Under configuration timeline, you will see something like this, all the changes happen to this instance
Press enter or click to view image in full size

Looking forward from you guys to join this journey and spend a minimum an hour every day for the next 100 days on DevOps work and post your progress using any of the below medium.

Reference

--

--

Prashant Lakhera
Prashant Lakhera

Written by Prashant Lakhera

AWS Community Builder, Ex-Redhat, Author, Blogger, YouTuber, RHCA, RHCDS, RHCE, Docker Certified,4XAWS, CCNA, MCP, Certified Jenkins, Terraform Certified, 1XGCP