EC2 cloudFormationTemplate: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 52: Строка 52:
 
</PRE>
 
</PRE>
 
==Темплейт (по шагам)==
 
==Темплейт (по шагам)==
  +
Разбираем по шагам. В следующей секции JSON будет не совсем валидный - т.к. разбит на разные секции. Копировать внимательно.
  +
===Parameters===
  +
Секция параметры - это собственно параметры которые можно переопределить при создании стека. Довольно удобно. Я определил для всех дефолтные значениея - и в реальности их не переопределяю. но это делает темплейт более легко переносимым.
  +
<BR>
  +
Секция начинаеся, собственно, с ключевого слова:
  +
<PRE>
  +
"Parameters" : {
  +
</PRE>
  +
  +
<PRE>
  +
"HostName": {
  +
"Description" : "Local Host Name (for puppet auth)",
  +
"Type": "String",
  +
"Default": "testtomcatnode.test.com"
  +
},
  +
</PRE>
  +
<PRE>
  +
"PuppetMasterDNSName": {
  +
"Description" : "The PuppetMaster DNS name",
  +
"Type": "String",
  +
"Default": "ip-10-117-81-201.ec2.internal"
  +
},
  +
</PRE>
  +
<PRE>
  +
"PuppetMasterIPAddress": {
  +
"Description" : "The PuppetMaster IP address",
  +
"Type": "String",
  +
"Default": "10.62.67.238"
  +
},
  +
<PRE>
  +
"KeyName" : {
  +
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances",
  +
"Type" : "String",
  +
"Default" : "hp"
  +
},
  +
</PRE>
  +
<PRE>
  +
"DBRootPassword": {
  +
"NoEcho": "true",
  +
"Description" : "Root password for MySQL",
  +
"Default" : "admin",
  +
"Type": "String",
  +
"MinLength": "1",
  +
"MaxLength": "41",
  +
"AllowedPattern" : "[a-zA-Z0-9]*",
  +
"ConstraintDescription" : "must contain only alphanumeric characters."
  +
},
  +
</PRE>
  +
<PRE>
  +
"InstanceType" : {
  +
"Description" : "WebServer EC2 instance type",
  +
"Type" : "String",
  +
"Default" : "t1.micro",
  +
"AllowedValues" : [ "t1.micro","m1.small","m1.medium","m1.large","m1.xlarge","m2.xlarge","m2.2xlarge","m2.4xlarge","c1.medium","c1.xlarge","cc1.4xlarge","cc2.8xlarge","cg1.4xlarge"],
  +
"ConstraintDescription" : "must be a valid EC2 instance type."
  +
}
  +
</PRE>
  +
Это апппендикс закрывающий секцию параметров.
  +
<PRE>
  +
},
  +
</PRE>
   
 
==Ссылки==
 
==Ссылки==

Версия 16:49, 20 ноября 2012

EC2 Cloud Formation Template

Весь темрлейт тут: http://wiki.sirmax.noname.com.ua/index.php/EC2_cloudFormationTemplate_Example
Ниже разбор "По частям", насколько я сам за это время смог разобраться.

Задача

Требуется установить и настроить кластер из N машин. На клестре установить тестовое java-приложение. Настроить балансировку нагрузки. Число машин N в кластере должно изменяться динамически в зависимости от нагрузки. Для установки использовать средства амазона - CloudFormationTemplate. Т.к. задача тестовая то применить chef-solo и puppet для разварачивания сервисов. puppet-сервер имеется - настроенный и сконфигурированный.

CloudFormationTemplate

Это такая штука - позволяет описать конфигурацию стека машин (т.е. как я понимаю - группы машин! а не отдельного инстанса) в формате json (см. ссылку в начале). Формат довольно замороченный и для понимания не так уж и прост.

Подготовка управляющей ноды

Все действия мо мтеком будем производить с управляющей ноды. Опишу ее конфигурацию.

rpm

я поставил следующий набор пакетов для работы с амазоном:

aws-amitools-ec2.noarch
aws-apitools-cfn.noarch
aws-apitools-common.noarch
aws-apitools-iam.noarch
aws-apitools-as.noarch
aws-apitools-ec2.noarch
aws-apitools-elb.noarch
aws-apitools-mon.noarch
aws-apitools-rds.noarch
aws-cfn-bootstrap.noarch
aws-scripts-ses.noarch

Окружение

как я уже писал:
http://wiki.sirmax.noname.com.ua/index.php/EC2
нужно сконфигурировать окружение.
Принципиальной разницы нет - тот же набор ключей и сертефикатов. Переменные окружениея выглядят так:


export EC2_PRIVATE_KEY=$HOME/keys/pk-nocrypt-XXXXXXXXXXXXXXX.pem
export EC2_CERT=$HOME/keys/cert-XXXXXXXXXXXXXXX.pem
export AWS_PRIVATE_KEY=$HOME/keys/pk-nocrypt-XXXXXXXXXXXXXXX.pem
export AWS_CERT=$HOME/keys/cert-XXXXXXXXXXXXXXX.pem
export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/

export AWS_CLOUDFORMATION_HOME=/opt/aws/apitools/cfn-1.0.11/
export EC2_HOME=/opt/aws
AWS_CREDENTIAL_FILE=$HOME/keys/aws_cred

export PATH=${EC2_HOME}:${AWS_CLOUDFORMATION_HOME}:${PATH}

aws_cred - файл с логином и паролем. т.е. с ключем и id что впрочем одно и то же.

AWSAccessKeyId=XXXXXXXXXXXXXXXXX
AWSSecretKey=YYYYYYYYYYYYYYYYYYYYYYYYYYYYY

Темплейт (по шагам)

Разбираем по шагам. В следующей секции JSON будет не совсем валидный - т.к. разбит на разные секции. Копировать внимательно.

Parameters

Секция параметры - это собственно параметры которые можно переопределить при создании стека. Довольно удобно. Я определил для всех дефолтные значениея - и в реальности их не переопределяю. но это делает темплейт более легко переносимым.
Секция начинаеся, собственно, с ключевого слова:

"Parameters" : {
    "HostName": {
      "Description" : "Local Host Name (for puppet auth)",
      "Type": "String",
      "Default": "testtomcatnode.test.com"
    },
    "PuppetMasterDNSName": {
      "Description" : "The PuppetMaster DNS name",
      "Type": "String",
      "Default": "ip-10-117-81-201.ec2.internal"
    },
    "PuppetMasterIPAddress": {
      "Description" : "The PuppetMaster IP address",
      "Type": "String",
      "Default": "10.62.67.238"
    },
<PRE>
    "KeyName" : {
      "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances",
      "Type" : "String",
      "Default" :  "hp"
    },
    "DBRootPassword": {
      "NoEcho": "true",
      "Description" : "Root password for MySQL",
      "Default" : "admin",
      "Type": "String",
      "MinLength": "1",
      "MaxLength": "41",
      "AllowedPattern" : "[a-zA-Z0-9]*",
      "ConstraintDescription" : "must contain only alphanumeric characters."
    },
    "InstanceType" : {
      "Description" : "WebServer EC2 instance type",
      "Type" : "String",
      "Default" : "t1.micro",
      "AllowedValues" : [ "t1.micro","m1.small","m1.medium","m1.large","m1.xlarge","m2.xlarge","m2.2xlarge","m2.4xlarge","c1.medium","c1.xlarge","cc1.4xlarge","cc2.8xlarge","cg1.4xlarge"],
      "ConstraintDescription" : "must be a valid EC2 instance type."
    }

Это апппендикс закрывающий секцию параметров.

 },

Ссылки

http://www.devopscloud.com/05.01.html