2016-07-18 2 views
2

elasticsearch 설치에 cloudformation을 사용하고 있습니다. tar.gz를 다운로드하고 압축을 풉니 다. 다음은 내 EC2 인스턴스 섹션 :AWSCloudFormation - cfn-init 명령을 실행하지 못했습니다.

"masterinstance": { 
     "Type": "AWS: : EC2: : Instance", 
     "Metadata": { 
      "AWS: : CloudFormation: : Init": { 

        "configSets" : { 
        "ascending" : [ "config1" , "config2" ] 

        }, 
       "config1": { 
        "sources": { 
         "/home/ubuntu/": "https: //s3.amazonaws.com/xxxxxxxx/elasticsearch.tar.gz" 
        }, 
        "files": { 
         "/home/ubuntu/elasticsearch/config/elasticsearch.yml": { 
          "content": { 
           "Fn: : Join": [ 
            "", 
            [ 
             xxxxxxxx 
            ] 
           ] 
          } 
         } 
        } 

       }, 

        "config2" : { 
         "commands": { 
         "runservice": { 
         "command": "~/elasticsearch/bin/elasticsearch", 
         "cwd" : "~", 
         "test" : "~/elasticsearch/bin/elasticsearch > test.txt", 
         "ignoreErrors" : "false" 
         } 
        } 
       } 
      } 
     }, 
     "Properties": { 
      "ImageId": "ami-xxxxxxxxxx", 
      "InstanceType": { 
       "Ref": "InstanceTypeParameter" 
      }, 
      "Tags": [ 
       xxxxxxxx 
      ], 
      "KeyName": "everybody", 
      "NetworkInterfaces": [ 
       { 
        "GroupSet": [ 
         { 
          "Ref": "newSecurity" 
         } 
        ], 
        "AssociatePublicIpAddress": "true", 
        "DeviceIndex": "0", 
        "SubnetId": { 
         "Ref": "oneSubnet" 
        } 
       } 
      ], 
      "UserData": { 
       "Fn: : Base64": { 
        "Fn: : Join": [ 
         "", 
         [ 
          "#!/bin/bash\n", 

          "sudo add-apt-repository-yppa: webupd8team/java\n", 
          "sudo apt-get update\n", 
          "echo'oracle-java8-installershared/accepted-oracle-license-v1-1selecttrue'|sudo debconf-set-selections\n", 
          "sudo apt-getinstall-yoracle-java8-installer\n", 

          "apt-get update\n", 
          "apt-get-y installpython-setuptools\n", 
          "easy_installhttps: //s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", 
          "/usr/local/bin/cfn-init", 
          "--stack Elasticsearch", 
          "--resource masterinstance", 
          "--configsets ascending", 
          "-v\n" 

         ] 
        ] 
       } 
      } 

} } 내가 구성 및 기타 설정에 대한 AWS::CloudFormation::Init 사용하고

. 타르를 추출한 후 elasticsearch를 시작하고 싶습니다. 섹션을 AWS::CloudFormation::Init에 넣었습니다. 그러나 은 내 인스턴스에 ssh를 넣었을 때 스택 생성을 완료 한 후 실행되었습니다. 내 elasticsearch 서비스가 실행되지 않습니다. tar 추출 및 파일 작성과 같은 다른 모든 작업이 올바르게 작동합니다.

2016-07-19 05:53:15,776 P2745 [INFO] Test for Command runservice 
2016-07-19 05:53:15,778 P2745 [INFO] -----------------------Command Output----------------------- 
2016-07-19 05:53:15,778 P2745 [INFO] /bin/sh: 1: ~/elasticsearch/bin/elasticsearch: not found 
2016-07-19 05:53:15,778 P2745 [INFO] ------------------------------------------------------------ 
2016-07-19 05:53:15,779 P2745 [ERROR] Exited with error code 127 
~ 

그때가 완벽하게 작동하고 내 인스턴스에서 직접 위의 명령 ~/elasticsearch/bin/elasticsearch을 해고하는 경우 : 나는 CFN-init.log 겪었

, 그것은 나에게 다음과 같은 정보를 제공합니다.

내가 여기서 잘못하고있는 것.

감사합니다.

+0

로그에 정보가 있습니까? – Daniel777

+0

아래 답변이 귀하의 질문을 해결 한 경우 [수락 됨으로 표시] (http://meta.stackexchange.com/a/5235/327137)를 잊지 마십시오. – wjordan

답변

1

나는 ES를 실행하려고 할 때 홈 디렉토리 (~)가 다른 사용자 (우분투가 아님)를 평가하고 있다고 생각합니다. CFN-Init은 우분투/ec2 사용자 대신 루트 사용자로 실행됩니다. config2 명령 블록의 경로를 정규화 된 경로 (/ home/ubuntu/elasticsearch)로 변경하십시오.

+0

또한 시도해 보았지만 ES가 루트로 시작된 다음 런타임 오류 : root로 elasticsearch를 실행하지 마십시오. 루트는 부트 타임에 모든 스크립트와 명령을 실행하는 사용자입니다. 사용자 데이터 및 cfn-init 메타 데이터를 실행할 때? –

+0

그래, 모든 명령은 기본적으로 루트로 실행됩니다. 몇 가지 일을 할 수 있습니다 : 특정 사용자로 elasticsearch 명령을 실행하십시오 : 'sudo -H -u username/home/우분투/elasticsearch/bin/elasticsearch'. 또는 신축/sysv 스크립트에서 elasticsearch start 명령을 감싸고 UID를 설정하여 특정 사용자로 실행하십시오. 나는이 작업을 계속 실행하고 재시작하는 것을 더 쉽게하기 위해이 작업을 제안하지만 시간 투자는 좀 더 많습니다. – louahola

+0

이 지식에 대해 대단히 고마워, 내가 한 일은 elasticsearch에서 변경되고 서비스가 루트로 실행되도록 허용했다. 이제 작동 중입니다. 감사합니다. . –

관련 문제