1- Create an VM on AWS ( can use terraform )
2- Install the missing packages
3- run the contrail installation playbook
contrail-container-deployer: https://github.com/Juniper/contrail-ansible-deployer
...
ami-d27709aa US-WEST-2
With Terraform
Code Block | ||||
---|---|---|---|---|
| ||||
#AWS access and securty key
# 1- create an VPC
# 1a- create an Internet Gateway
# 1b- create an Route in the RT
# 1c- create Security Groups
# 2- create subnet
# 3- Create an Key pair to access the VM
# 4- create an instance
# define variables and point to terraform.tfvars
variable "access_key" {}
variable "secret_key" {}
variable "region" { default = "us-west-2" }
variable pri_sub1 { default = "10.1.1.0/24" }
#AWS access and secret key to access AWS
provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}
# 1- create an VPC in aws
resource "aws_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags {
Name = "ixVPC"
}
}
# 1a- create an Internet Gateway
resource "aws_internet_gateway" "gw" {
vpc_id = "${aws_vpc.vpc.id}"
tags {
Name = "main_gw"
}
}
# 1b- create an Route in the RT
resource "aws_route" "internet_access" {
route_table_id = "${aws_vpc.vpc.main_route_table_id}"
destination_cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.gw.id}"
}
# 1c- create Security Groups
resource "aws_security_group" "allow_ssh" {
name = "allow_inbound_SSH"
description = "Allow inbound SSH traffic from any IP@"
vpc_id = "${aws_vpc.vpc.id}"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
#prefix_list_ids = ["pl-12c4e678"]
}
tags {
Name = "Allow SSH"
}
}
# 2- create subnet
resource "aws_subnet" "private" {
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "${var.pri_sub1}"
tags {
#Name = "${var.name}-private"
Name = "ixVPC-private"
}
}
#3- Create an Key pair to access the VM
#resource "aws_key_pair" "admin_key" {
# key_name = "admin_key"
# public_key = "ssh-rsa AAAAB3[…]"
#}
# 4- create an instance
resource "aws_instance" "vminstance1" {
# AWS Centos 7 AMI
ami = "ami-5490ed2c"
instance_type = "t2.micro"
# key pair in us-west-2 or Oregon
key_name = "TerraformKeyPair"
# to log in: centos / terraformkeypair
#
subnet_id = "${aws_subnet.private.id}"
#security_groups= ["TerraformsSecurityGroup"]
security_groups = ["${aws_security_group.allow_ssh.id}"]
associate_public_ip_address = true
tags {
Name = "VMinstance1"
}
} |
Code Block | ||||
---|---|---|---|---|
| ||||
In the case the installation is done locally: log into the VM in AWS, and then do the installlation from here --------------------------------------------------------------------------------------------------------------- ssh-keygen ( passphrase contrail50 ) ssh-add ~/.ssh/id_rsa ssh-add -l ssh-add -L more .ssh/authorized_keys >>> can see the terraformapukey ( to log into the VM remotely : home to AWS DC) vi .ssh/authorized_keys # add the key from "ssh-add -L " ssh localhost # just to check that the key has been copy and works exit #ssh-copy-id <10.0.1.104> sudo yum install -y ansible-2.4.2.0 sudo yum install git -y git clone http://github.com/Juniper/contrail-ansible-deployer cd contrail-ansible-deployer #ansible-playbook -i inventory/ -e orchestrator=kubernetes -e '{"instances":{"bms1":{"ip":"10.0.1.104","provider":"bms"}}}' playbooks/configure_instances.yml #ansible-playbook -i inventory/ -e orchestrator=kubernetes -e '{"instances":{"bms1":{"ip":"10.0.1.104","provider":"bms"}}}' playbooks/install_contrail.yml ansible-playbook -i inventory/ -e orchestrator=kubernetes -e '{"instances":{"bms1":{"ip":"localhost","provider":"bms"}}}' playbooks/configure_instances.yml ansible-playbook -i inventory/ -e orchestrator=kubernetes -e '{"instances":{"bms1":{"ip":"localhost","provider":"bms"}}}' playbooks/install_contrail.yml |
...