home

for DevOps Engineers

la lune

(DevOps) engineers love to create first, and ask questions later.

Markdown Tables

Except in Kramdown format.

Action Shortcut Key Comments
Next Item j Navigate to the next item in the list
Prev Item k Navigate to the previous item in the list
Select x Select the higlighted list item
====== ============ ========
This is The footer section

Hello World

This message appears only in the ...

You Can Create these Eco Systems

These eco system archetypes get you going fast! You create the eco-system then tweak it to suit your needs.

DevOps Engineer Technology Bites

Keyboard Shortcuts (Web Browsers)

You interact a lot with web browsers - so using Google Chrome and/or Mozilla Firefox keyboard shortcuts pushes your overall productivity right up.

These pages contain the most frequently used keyboard shortcuts

How to Push an Image to DockerHub

The simple way if you have an account with dockerhub is to use the docker login command. My username is apolloakora

sudo docker login --username=apolloakora
sudo docker tag img.platform apolloakora/img.platform
sudo docker push apolloakora/img.platform

Enter the password when prompted.

The docker tag is extremely important. Tagging the image maps the local name with its repository coordinates which are a composition of the username and the repository id (in this case eco).

This image will be called platform in docker hub after the push.

After the login you simply push the image into the repository you have setup. I have a repository called eco apolloakora/eco and have pushed the docker img.platform image into it.

Optionally you can specify a tag using a colonic separator.

docker push img.platform:v17342.1428

Run eco-platform Docker Container

You can distribute the eco platform container knowing it will run perfectly on any computer anywhere because dependencies like Ruby, Terraform, and AWS have been injected into the container image.

sudo docker run         \
   --hostname=eplatform \
   --env AWS_DEFAULT_REGION=eu-west-1 \
   --env AWS_ACCESS_KEY_ID=AAAA_BBBB_CCCC \
   --env AWS_SECRET_ACCESS_KEY=abcd1234+efgh5678/ij9o \
   --name container.platform \
   apolloakora/img.platform

Emoji Section

Here are emojiiiiis.

  • smile
  • metal
  • dancer
  • pray
  • one
  • two

These are the steps for running an eco-system.

Install Ruby for the Bare Metal Workstation

For Debian/Ubuntu systems you can use the below commands.

sudo apt-get install --assume-yes \
  libicu-dev     \
  openssh-server \
  ruby-full      \
  zlib1g-dev;

Install the Gems required for creating eco systems.

sudo gem install --no-ri --no-rdoc \
	aws-sdk           \
	aws-sdk-resources \
	filesize          \
        inifile           \
	net-ssh           \
	net-scp           \
	nokogiri;

Check the Ruby version and issue a gem query to discover the gems installed.

ruby --version
sudo gem query --local

Install AWS Programmatic User IDs

The below environment variables should be

AWS_ACCESS_KEY_ID=ABCDEFG AWS_DEFAULT_REGION=eu-west-1 AWS_SECRET_ACCESS_KEY=SEEECCCREEETTTT

Clone the eco-platform and create an eco system instance.

Do a git clone of eco-platform to say mirror.platform and then change directory and issue the run command.

git clone https://www.eco-platform.co.uk/commons/eco-platform.git miror.platform
cd mirror.platform/iaas.cmd.provisioners
ruby eco.do.rb create --what gollum.wiki

What is an Eco System?

An eco-system is a collection of infrastrucutre, middleware services and applications that are configured to provide services to stakeholder groups.

Stakeholder groups => developers, customers, project personnel, suppliers and more.

Create an Eco System?

You call an eco plugin and it creates an eco-system.

Modelling an Eco System?

To create any eco-system anywhere requires these 7 key components

  • facts defined in .INI files
  • a library with terraform templates, ansible playbooks, bash scripts and much more.
  • commons (extensible) software for generic eco-system creation
  • plugins that inherit (extend) the commons software to create an eco-system instance.
  • wiki howto documentation - how to create eco-system instances, how to write plugins
  • mapped local and cloud drives plus repositories holding eco-system content and keys
  • a workstation that has ruby and other dependencies installed

Understanding Facts?

Separating facts provides multiple benefits to

resource "aws_route53_record" "@[terraform|route53.www.id]" {
  zone_id = "@[@[eco|id]|hosted.zone.id]"
  name    = "www.@[@[eco|id]|root.domain]"
  type    = "A"
  ttl     = "300"
  records = ["${aws_instance.@[terraform|aws.instance.id].public_ip}"]
}


resource "aws_route53_record" "@[terraform|route53.ssl.id]" {
  zone_id = "@[@[eco|id]|hosted.zone.id]"
  name    = "https://www.@[@[eco|id]|root.domain]"
  type    = "A"
  ttl     = "300"
  records = ["${aws_instance.@[terraform|aws.instance.id].public_ip}"]
}

That was some hcl with json highlighted syntax.

Now it's the Tail

la lune