2016-06-20 23 views
1

現在、Amazon AMIを使用して簡単なEC2インスタンスを作成するクラウドフォーメーションテンプレートを作成しています。このインスタンスが作成された後、Jenkins、Git、Apache Mavenなどをインストールし、PATH変数と./bashrcファイルを更新するために、新しいインスタンスにbashコードを実行するUserDataフィールドがあります。AWS CloudFormationスクリプトから.bashrcファイルを更新できません

これらの要件のほとんどは正常に完了しましたが、bashrcファイルに何かをエコーし​​ようとすると、動作しないようです。私は、bashコードを実行した後に生成されたEC2インスタンスのログファイルをチェックしても、エラーや何か間違ったことはありません。

は、ここでその全体が私のcloudformationコードです:私も普通にechoコマンドを使用してテスト

{ 
    "AWSTemplateFormatVersion" : "2010-09-09", 

    "Description" : "AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSample: Create an Amazon EC2 instance running the Amazon Linux AMI. The AMI is chosen based on the region in which the stack is run. This example creates an EC2 security group for the instance to give you SSH access. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", 

    "Parameters" : { 
    "KeyName": { 
     "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", 
     "Type": "AWS::EC2::KeyPair::KeyName", 
     "ConstraintDescription" : "must be the name of an existing EC2 KeyPair." 
    }, 

    "InstanceType" : { 
     "Description" : "WebServer EC2 instance type", 
     "Type" : "String", 
     "Default" : "t2.small", 
     "AllowedValues" : [ "t1.micro", "t2.nano", "t2.micro", "t2.small", "t2.medium", "t2.large", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m4.10xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "g2.2xlarge", "g2.8xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "i2.xlarge", "i2.2xlarge", "i2.4xlarge", "i2.8xlarge", "d2.xlarge", "d2.2xlarge", "d2.4xlarge", "d2.8xlarge", "hi1.4xlarge", "hs1.8xlarge", "cr1.8xlarge", "cc2.8xlarge", "cg1.4xlarge"] 
, 
     "ConstraintDescription" : "must be a valid EC2 instance type." 
    }, 

    "SSHLocation" : { 
     "Description" : "The IP address range that can be used to SSH to the EC2 instances", 
     "Type": "String", 
     "MinLength": "9", 
     "MaxLength": "18", 
     "Default": "0.0.0.0/0", 
     "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", 
     "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." 
    } 
    }, 

    "Mappings" : { 
    "AWSInstanceType2Arch" : { 
     "t1.micro" : { "Arch" : "PV64" }, 
     "t2.nano"  : { "Arch" : "HVM64" }, 
     "t2.micro" : { "Arch" : "HVM64" }, 
     "t2.small" : { "Arch" : "HVM64" }, 
     "t2.medium" : { "Arch" : "HVM64" }, 
     "t2.large" : { "Arch" : "HVM64" }, 
     "m1.small" : { "Arch" : "PV64" }, 
     "m1.medium" : { "Arch" : "PV64" }, 
     "m1.large" : { "Arch" : "PV64" }, 
     "m1.xlarge" : { "Arch" : "PV64" }, 
     "m2.xlarge" : { "Arch" : "PV64" }, 
     "m2.2xlarge" : { "Arch" : "PV64" }, 
     "m2.4xlarge" : { "Arch" : "PV64" }, 
     "m3.medium" : { "Arch" : "HVM64" }, 
     "m3.large" : { "Arch" : "HVM64" }, 
     "m3.xlarge" : { "Arch" : "HVM64" }, 
     "m3.2xlarge" : { "Arch" : "HVM64" }, 
     "m4.large" : { "Arch" : "HVM64" }, 
     "m4.xlarge" : { "Arch" : "HVM64" }, 
     "m4.2xlarge" : { "Arch" : "HVM64" }, 
     "m4.4xlarge" : { "Arch" : "HVM64" }, 
     "m4.10xlarge" : { "Arch" : "HVM64" }, 
     "c1.medium" : { "Arch" : "PV64" }, 
     "c1.xlarge" : { "Arch" : "PV64" }, 
     "c3.large" : { "Arch" : "HVM64" }, 
     "c3.xlarge" : { "Arch" : "HVM64" }, 
     "c3.2xlarge" : { "Arch" : "HVM64" }, 
     "c3.4xlarge" : { "Arch" : "HVM64" }, 
     "c3.8xlarge" : { "Arch" : "HVM64" }, 
     "c4.large" : { "Arch" : "HVM64" }, 
     "c4.xlarge" : { "Arch" : "HVM64" }, 
     "c4.2xlarge" : { "Arch" : "HVM64" }, 
     "c4.4xlarge" : { "Arch" : "HVM64" }, 
     "c4.8xlarge" : { "Arch" : "HVM64" }, 
     "g2.2xlarge" : { "Arch" : "HVMG2" }, 
     "g2.8xlarge" : { "Arch" : "HVMG2" }, 
     "r3.large" : { "Arch" : "HVM64" }, 
     "r3.xlarge" : { "Arch" : "HVM64" }, 
     "r3.2xlarge" : { "Arch" : "HVM64" }, 
     "r3.4xlarge" : { "Arch" : "HVM64" }, 
     "r3.8xlarge" : { "Arch" : "HVM64" }, 
     "i2.xlarge" : { "Arch" : "HVM64" }, 
     "i2.2xlarge" : { "Arch" : "HVM64" }, 
     "i2.4xlarge" : { "Arch" : "HVM64" }, 
     "i2.8xlarge" : { "Arch" : "HVM64" }, 
     "d2.xlarge" : { "Arch" : "HVM64" }, 
     "d2.2xlarge" : { "Arch" : "HVM64" }, 
     "d2.4xlarge" : { "Arch" : "HVM64" }, 
     "d2.8xlarge" : { "Arch" : "HVM64" }, 
     "hi1.4xlarge" : { "Arch" : "HVM64" }, 
     "hs1.8xlarge" : { "Arch" : "HVM64" }, 
     "cr1.8xlarge" : { "Arch" : "HVM64" }, 
     "cc2.8xlarge" : { "Arch" : "HVM64" } 
    }, 

    "AWSInstanceType2NATArch" : { 
     "t1.micro" : { "Arch" : "NATPV64" }, 
     "t2.nano"  : { "Arch" : "NATHVM64" }, 
     "t2.micro" : { "Arch" : "NATHVM64" }, 
     "t2.small" : { "Arch" : "NATHVM64" }, 
     "t2.medium" : { "Arch" : "NATHVM64" }, 
     "t2.large" : { "Arch" : "NATHVM64" }, 
     "m1.small" : { "Arch" : "NATPV64" }, 
     "m1.medium" : { "Arch" : "NATPV64" }, 
     "m1.large" : { "Arch" : "NATPV64" }, 
     "m1.xlarge" : { "Arch" : "NATPV64" }, 
     "m2.xlarge" : { "Arch" : "NATPV64" }, 
     "m2.2xlarge" : { "Arch" : "NATPV64" }, 
     "m2.4xlarge" : { "Arch" : "NATPV64" }, 
     "m3.medium" : { "Arch" : "NATHVM64" }, 
     "m3.large" : { "Arch" : "NATHVM64" }, 
     "m3.xlarge" : { "Arch" : "NATHVM64" }, 
     "m3.2xlarge" : { "Arch" : "NATHVM64" }, 
     "m4.large" : { "Arch" : "NATHVM64" }, 
     "m4.xlarge" : { "Arch" : "NATHVM64" }, 
     "m4.2xlarge" : { "Arch" : "NATHVM64" }, 
     "m4.4xlarge" : { "Arch" : "NATHVM64" }, 
     "m4.10xlarge" : { "Arch" : "NATHVM64" }, 
     "c1.medium" : { "Arch" : "NATPV64" }, 
     "c1.xlarge" : { "Arch" : "NATPV64" }, 
     "c3.large" : { "Arch" : "NATHVM64" }, 
     "c3.xlarge" : { "Arch" : "NATHVM64" }, 
     "c3.2xlarge" : { "Arch" : "NATHVM64" }, 
     "c3.4xlarge" : { "Arch" : "NATHVM64" }, 
     "c3.8xlarge" : { "Arch" : "NATHVM64" }, 
     "c4.large" : { "Arch" : "NATHVM64" }, 
     "c4.xlarge" : { "Arch" : "NATHVM64" }, 
     "c4.2xlarge" : { "Arch" : "NATHVM64" }, 
     "c4.4xlarge" : { "Arch" : "NATHVM64" }, 
     "c4.8xlarge" : { "Arch" : "NATHVM64" }, 
     "g2.2xlarge" : { "Arch" : "NATHVMG2" }, 
     "g2.8xlarge" : { "Arch" : "NATHVMG2" }, 
     "r3.large" : { "Arch" : "NATHVM64" }, 
     "r3.xlarge" : { "Arch" : "NATHVM64" }, 
     "r3.2xlarge" : { "Arch" : "NATHVM64" }, 
     "r3.4xlarge" : { "Arch" : "NATHVM64" }, 
     "r3.8xlarge" : { "Arch" : "NATHVM64" }, 
     "i2.xlarge" : { "Arch" : "NATHVM64" }, 
     "i2.2xlarge" : { "Arch" : "NATHVM64" }, 
     "i2.4xlarge" : { "Arch" : "NATHVM64" }, 
     "i2.8xlarge" : { "Arch" : "NATHVM64" }, 
     "d2.xlarge" : { "Arch" : "NATHVM64" }, 
     "d2.2xlarge" : { "Arch" : "NATHVM64" }, 
     "d2.4xlarge" : { "Arch" : "NATHVM64" }, 
     "d2.8xlarge" : { "Arch" : "NATHVM64" }, 
     "hi1.4xlarge" : { "Arch" : "NATHVM64" }, 
     "hs1.8xlarge" : { "Arch" : "NATHVM64" }, 
     "cr1.8xlarge" : { "Arch" : "NATHVM64" }, 
     "cc2.8xlarge" : { "Arch" : "NATHVM64" } 
    } 
, 
    "AWSRegionArch2AMI" : { 
     "us-east-1"  : {"PV64" : "ami-8ff710e2", "HVM64" : "ami-f5f41398", "HVMG2" : "ami-4afd1d27"}, 
     "us-west-2"  : {"PV64" : "ami-eff1028f", "HVM64" : "ami-d0f506b0", "HVMG2" : "ami-ee897b8e"}, 
     "us-west-1"  : {"PV64" : "ami-ac85fbcc", "HVM64" : "ami-6e84fa0e", "HVMG2" : "ami-69106909"}, 
     "eu-west-1"  : {"PV64" : "ami-23ab2250", "HVM64" : "ami-b0ac25c3", "HVMG2" : "ami-936de5e0"}, 
     "eu-central-1"  : {"PV64" : "ami-27c12348", "HVM64" : "ami-d3c022bc", "HVMG2" : "ami-8e7092e1"}, 
     "ap-northeast-1" : {"PV64" : "ami-26160d48", "HVM64" : "ami-29160d47", "HVMG2" : "ami-91809aff"}, 
     "ap-northeast-2" : {"PV64" : "NOT_SUPPORTED", "HVM64" : "ami-cf32faa1", "HVMG2" : "NOT_SUPPORTED"}, 
     "ap-southeast-1" : {"PV64" : "ami-f3dd0a90", "HVM64" : "ami-1ddc0b7e", "HVMG2" : "ami-3c30e75f"}, 
     "ap-southeast-2" : {"PV64" : "ami-8f94b9ec", "HVM64" : "ami-0c95b86f", "HVMG2" : "ami-543d1137"}, 
     "sa-east-1"  : {"PV64" : "ami-e188018d", "HVM64" : "ami-fb890097", "HVMG2" : "NOT_SUPPORTED"}, 
     "cn-north-1"  : {"PV64" : "ami-77a46e1a", "HVM64" : "ami-05a66c68", "HVMG2" : "NOT_SUPPORTED"} 
    } 

    }, 

    "Resources" : { 
    "EC2Instance" : { 
     "Type" : "AWS::EC2::Instance", 
     "Properties" : { 
     "InstanceType" : { "Ref" : "InstanceType" }, 
     "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], 
     "KeyName" : { "Ref" : "KeyName" }, 
     "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, 
          { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, 
     "UserData"  : { "Fn::Base64" : { "Fn::Join" : ["", [ 
      "#!/bin/bash\n", 
      "#Automation script to set-up Continuous Integration environment in AWS\n", 
      "#Installs Jenkins, Git, JDK, Grails, Apache Maven, and SonarQube Scanner\n", 
      "#Connects to AWS Artifactory repo to download software\n", 
      "#Update these fields with the version numbers you would like for each software installation\n", 
      "jenkinsVersion='2.9'\n", 
      "gitVersion='2.7.4'\n", 
      "jdkVersion='8'\n", 
      "jdkUpdate='91'\n", 
      "grailsVersion='3.1.8'\n", 
      "mavenVersion='3.3.9'\n", 
      "sonarqubeVersion='2.6.1'\n", 

      "#Install Jenkins\n", 
      "sudo wget http://172.31.62.161:8081/artifactory/ext-release-local/jenkins-$jenkinsVersion.zip\n", 
      "sudo unzip jenkins-$jenkinsVersion.zip\n", 
      "sudo rm jenkins-$jenkinsVersion.zip\n", 
      "cd jenkins-$jenkinsVersion\n", 
      "sudo mv jenkins.repo /etc/yum.repos.d/jenkins.repo\n", 
      "sudo rpm --import jenkins.io.key\n", 
      "sudo yum install jenkins -y\n", 
      "sudo rm jenkins.io.key \n", 
      "cd\n", 

      "#Install Git\n", 
      "sudo wget http://172.31.62.161:8081/artifactory/ext-release-local/git-$gitVersion.zip\n", 
      "sudo unzip git-$gitVersion.zip\n", 
      "sudo rm git-$gitVersion.zip\n", 
      "cd git-$gitVersion\n", 
      "sudo rpm -Uvh *rpm\n", 
      "sudo rm -rf git-$gitVersion\n", 
      "cd\n", 

      "cd /opt #Change directory to /opt\n", 

      "#Install Oracle JDK\n", 
      "sudo wget http://172.31.62.161:8081/artifactory/ext-release-local/jdk-$jdkVersion'u'$jdkUpdate-linux-x64.tar.gz\n", 
      "sudo tar xzf jdk-$jdkVersion'u'$jdkUpdate-linux-x64.tar.gz\n", 
      "sudo rm jdk-$jdkVersion'u'$jdkUpdate-linux-x64.tar.gz\n", 
      "echo 'export JAVA_HOME=/opt/jdk1.'$jdkVersion'.0_'$jdkUpdate >> ~/.bashrc\n", 
      "echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc\n", 

      "#Install Grails\n", 
      "sudo wget http://172.31.62.161:8081/artifactory/ext-release-local/grails-$grailsVersion.zip\n", 
      "sudo unzip grails-$grailsVersion.zip\n", 
      "sudo rm grails-$grailsVersion.zip\n", 
      "echo 'export GRAILS_HOME=/opt/grails-'$grailsVersion >> ~/.bashrc\n", 
      "echo 'export PATH=$GRAILS_HOME/bin:$PATH' >> ~/.bashrc\n", 

      "#Install Apache Maven\n", 
      "sudo wget http://172.31.62.161:8081/artifactory/ext-release-local/apache-maven-$mavenVersion-bin.tar.gz\n", 
      "sudo tar xzf apache-maven-$mavenVersion-bin.tar.gz\n", 
      "sudo rm apache-maven-$mavenVersion-bin.tar.gz\n", 
      "echo 'export MAVEN_HOME=/opt/apache-maven-'$mavenVersion >> ~/.bashrc\n", 
      "echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> ~/.bashrc\n", 

      "#Install SonarQube Scanner\n", 
      "sudo wget http://172.31.62.161:8081/artifactory/ext-release-local/sonar-scanner-$sonarqubeVersion.zip\n", 
      "sudo unzip sonar-scanner-$sonarqubeVersion.zip\n", 
      "sudo rm sonar-scanner-$sonarqubeVersion.zip\n", 
      "echo 'export SONAR_SCANNER_HOME=/opt/sonar-scanner-'$sonarqubeVersion >> ~/.bashrc\n", 
      "echo 'export PATH=$SONAR_SCANNER_HOME/bin:$PATH' >> ~/.bashrc\n" 
      ]]}} 
     } 
    }, 

    "InstanceSecurityGroup" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Properties" : { 
     "GroupDescription" : "Enable SSH access via port 22", 
     "SecurityGroupIngress" : [ { 
      "IpProtocol" : "tcp", 
      "FromPort" : "22", 
      "ToPort" : "22", 
      "CidrIp" : { "Ref" : "SSHLocation"} 
     } ] 
     } 
    } 
    }, 

    "Outputs" : { 
    "InstanceId" : { 
     "Description" : "InstanceId of the newly created EC2 instance", 
     "Value" : { "Ref" : "EC2Instance" } 
    }, 
    "AZ" : { 
     "Description" : "Availability Zone of the newly created EC2 instance", 
     "Value" : { "Fn::GetAtt" : [ "EC2Instance", "AvailabilityZone" ] } 
    }, 
    "PublicDNS" : { 
     "Description" : "Public DNSName of the newly created EC2 instance", 
     "Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] } 
    }, 
    "PublicIP" : { 
     "Description" : "Public IP address of the newly created EC2 instance", 
     "Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicIp" ] } 
    } 
    } 
} 

、それが正常に動作します。 bashrcファイルに何かをエコーし​​ようとすると、動作しません。どんな助けでも大歓迎です。

答えて

1

私が試してみたいことがいくつかあります。

まず、スクリプトはrootで実行されるので、sudoコマンドは必要ありません。それは何にも影響しないはずですが、あなたのスクリプトが実行されているユーザーを知っておく必要があります。

第2に、最初に関連していますが、/root/.bashrcや/home/ec2-user/.bashrcの変更を探していますか?後者の場合は、完全パスを指定します。

+0

私はこれを試し、あなたにお返しします。ありがとう:) – BlueMoose

+0

ちょっとクリス私はちょうどこの方法が働いたことを確認した。本当にありがとう。ほんとうにありがとう! – BlueMoose

関連する問題