1

Я создал облачную информацию AWS, которая создает конфигурацию запуска и группу автомасштабирования. В данных пользователя в запуске конфигурации я настроен монтирования файловой системы цель, и я установил cloudwatch агент:userData не запускается после запуска экземпляра по облачной форме

код EDITED

"LaunchConfig":{ 
    "Type":"AWS::AutoScaling::LaunchConfiguration", 
    "Metadata" : { 
     "AWS::CloudFormation::Init" : { 
     "config" : { 
      "files" : { 
      "/etc/cwlogs.cfg": { 
       "content": { "Fn::Join" : ["", [ 
       "[general]", 
       "state_file = /var/awslogs/state/agent-state", 
       "[/var/log/syslog]", 
       "file = /tmp/", 
       "log_group_name = ecs-dataloader", 
       "log_stream_name = ECS-loader", 
       "datetime_format = %b %d %H:%M:%S" 
       ]]}, 
       "mode": "000755", 
       "owner": "root", 
       "group": "root" 
      }, 
      "/etc/ecs/ecs.config": { 
       "content": { "Fn::Join" : ["", [ 
       "ECS_CLUSTER=", { "Ref" : "ClusterName" } 
       ]]}, 
       "mode": "000755", 
       "owner": "root", 
       "group": "root" 
      } 
      }, 
      "commands": { 
      "Update": { 
       "command": "yum -y update" 
      }, 
      "InstallNfs":{ 
       "command": "yum -y install nfs-utils" 
      }, 
      "CreatFolder": { 
       "command": "mkdir -p /efs-mount-point/" 
      }, 
      "EditPerms": { 
       "command": "chown ec2-user:ec2-user /efs-mount-point/" 
      }, 
      "MountPoint": { 
       "command": { "Fn::Join" : ["", [ 
       "AZ=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)\n", 
       "echo LABEL=cloudimg-rootfs/ext4 defaults,discard 0 0\n", 
       "$AZ.",{ "Fn::FindInMap" : [ "FileSystemMap", {"Ref" : "EnvParam"}, "FileSystemID"] }, 
       ".efs.",{ "Ref" : "AWS::Region" },".amazonaws.com:/ /efs-script-import-tmp nfs4 nfsvers=4.1 0 0 >> /etc/fstab" 
       ]]} 
      }, 
      "Mount": { 
       "command": "mount -a -t nfs4" 
      }, 
      "CloudWatchAgent": { 
       "command": { "Fn::Join" : ["", [ 
       "curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O\n", 
       "python ./awslogs-agent-setup.py --region ",{"Ref" : "AWS::Region"},"\n", 
       "chmod +x ./awslogs-agent-setup.py ./awslogs-agent-setup.py -n -r", 
       {"Ref" : "AWS::Region"}," -c /etc/cwlogs.cfg" 
       ]]} 
      } 
      }, 
      "services" : { 
      "sysvinit" : { 
       "awslogs" : { "enabled" : "true", "ensureRunning" : "true" } 
      } 
      } 
     } 
     } 
    }, 
    "Properties":{ 
     "ImageId":{ "Fn::FindInMap":[ "AWSRegionToAMI", { "Ref":"AWS::Region" }, "AMIID" ] }, 
     "SecurityGroups":[ { "Ref":"EcsSecurityGroup" } ], 
     "InstanceType": {"Ref":"InstanceType" }, 
     "IamInstanceProfile":{ "Ref":"EC2InstanceProfile" }, 
     "KeyName":{ "Fn::FindInMap" : [ "KeyPairMapping", {"Ref" : "EnvParam"}, "Key"] }, 
     "UserData":{ "Fn::Base64" : { 
     "Fn::Join" : ["", [ 
      "#!/bin/bash -xe\n", 
      "/opt/aws/bin/cfn-init -v ", 
      "   --stack ", { "Ref": "AWS::StackName" }, 
      "   --resource LaunchConfig", 
      "   --region ", { "Ref" : "AWS::Region" },"\n" 
     ]]} 
     } 
    } 
    } 

Детали изображения: "eu-west-1": { "AMIID":"ami-ba346ec9" },

После запуска шаблона ресурсы были созданы успешно. Поэтому я подключился к моему экземпляру, который был создан группой автомасштабирования через SSH, чтобы проверить правильность запуска и настройки userData. К сожалению, после проверки, это то, что я нашел в/и т.д./файл FSTAB:

$ cat /etc/fstab 
    LABEL=cloudimg-rootfs / ext4 defaults,discard 0 0 


    $ cat /etc/ecs/ecs.config 
    cat: /etc/ecs/ecs.config: No such file or directory 

Экземпляр не подключен к file system, файл, который я пытался создать в cloudformation::init/etc/cwlogs.cfg также не существует (это конфигурационный файл cloudwatch agent). Может ли кто-нибудь сказать мне, что не так в данных пользователя, что он не был выполнен?

Я пытался проверить файлы журнала, но:

$ cat /var/log/cfn-init.log 
cat: /var/log/cfn-init.log: No such file or directory 

Что здесь проблема?

EDIT

$ cat /var/log/cloud-init-ouput.log 
... 

Cloud-init v. 0.7.6 running 'modules:final' at Fri, 17 Feb 2017 11:43:42 +0000. Up 44.66 seconds. 
+ yum install -y aws-cfn-bootstrap/opt/aws/bin/cfn-init -v --stack Mystack --resource LaunchConfig --region eu-west-1 
Loading "priorities" plugin 
Loading "update-motd" plugin 
Config time: 0.009 
Command line error: no such option: --stack 
Feb 17 11:43:43 cloud-init[2814]: util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [1] 
Feb 17 11:43:43 cloud-init[2814]: cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts) 
Feb 17 11:43:43 cloud-init[2814]: util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python2.7/dist-packages/cloudinit/config/cc_scripts_user.pyc'>) failed 
Cloud-init v. 0.7.6 finished at Fri, 17 Feb 2017 11:43:43 +0000. Datasource DataSourceEc2. Up 45.18 seconds 

ответ

1

Вот как я решил проблему: я обновляю облачную инициализацию в пользовательских данных перед вызовом метаданных и вместо того, чтобы устанавливать агент облачного доступа в метаданных, я сделал в userdata.

  "UserData":{ "Fn::Base64" : { 
      "Fn::Join" : ["", [ 
       "#!/bin/bash -xe\n", 
       "yum -y install aws-cfn-bootstrap\n", 
       "/opt/aws/bin/cfn-init -v", 
       "   --stack ", { "Ref": "AWS::StackName" }, 
       "   --resource LaunchConfig", 
       "   --region ", { "Ref" : "AWS::Region" },"\n", 
       "# Get the CloudWatch Logs agent\n", 
       "wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py\n", 
       "# Install the CloudWatch Logs agent\n", 
       "python ./awslogs-agent-setup.py -n -r ", { "Ref" : "AWS::Region" }, " -c /etc/cwlogs.cfg || error_exit 'Failed to run CloudWatch Logs agent setup'\n", 
       "service awslogs start" 
      ]]} 
1

файлы журнала Данные пользователя расположены по адресу:

  • Linux облако INIT: /var/log/cloud-init.log
  • Окна EC2Config: C:\cfn\log\cloud-init.log

Проверьте, не находится ли что-либо в файле журнала. Если нет, то что-то не так с передачей скрипта пользовательских данных из шаблона. (Почему у вас есть начальные пустые кавычки в Join?)

+0

Исходные пустые кавычки - это делит. он пуст, поскольку он не нужен в сценарии пользовательских данных. – Somar

+0

Просто проверенный '/ var/log/cloud-init.log' не смог найти ничего из пользовательских данных. – Somar

+0

Проверьте правильность. Я обновил код. – Somar

2

установлен по умолчанию только на Amazon Linux AMI, поэтому, если вы используете какой-либо другой идентификатор изображения для запуска своего экземпляра EC2, вам необходимо убедиться, что он правильно установлен, прежде чем использовать его. См. Мой вопрос previous answer на вопрос "Installing packages using apt-get in CloudFormation file" для получения дополнительной информации.

+0

Приятная находка! Похоже, что пользовательские данные [установлены] (https://help.ubuntu.com/community/CloudInit) на изображениях облаков Ubuntu, но не 'cfn-init'. –

+0

Я изменил изображение AMI на оптимизированный Linux ECS, поскольку я создаю кластер ECS. Я расширил шаблон, потому что понял, что забыл некоторые важные команды. но ничего не изменилось. Я действительно схожу с ума здесь. Я пробовал все. – Somar

+0

Я попробовал решение @wjordan, сохранив изображение ubuntu и добавив установку 'cfn-init'; но до сих пор нет хорошего результата. Простой другой тест, я проверил, установлен ли пакет 'nfs-utils':' rpm -q nfs-utils le paquet nfs-utils n'est pas installé' он говорит, что это не – Somar