2017-07-31 28 views
0

我試圖使用CodeDeploy與我的Auto Scaling Group集成。AWS:生命週期腳本的順序?

我對自動縮放組配置有用戶數據腳本安裝PHP等而對於CodeDeploy我AfterInstall鉤腳本運行一個簡單的PHP文件。

用戶數據(這工作正常)

#!/bin/bash 
apt-get -y update 
apt-get -y install ruby 
apt-get -y install wget 
cd /home/ubuntu 
wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install 
chmod +x ./install 
./install auto 

sudo apt-get install -y python-software-properties 
sudo add-apt-repository -y ppa:ondrej/php 
sudo apt-get update -y 
sudo apt-get install php7.1 -y 
sudo apt-get install php7.1-zip php7.1-mbstring php7.1-dom php7.1-curl -y 

sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 
sudo php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 
sudo php composer-setup.php 
sudo php -r "unlink('composer-setup.php');" 
sudo mv composer.phar /usr/local/bin/composer 

我創建了一個自動縮放集團與此配置,但實例失敗,錯誤,PHP是一個未知的命令來啓動。我對此有幾點疑問。

我想這是因爲代碼部署的AfterInstall鉤開始我的用戶數據腳本完成安裝PHP之前執行。我對麼?

如果我糾正,我怎麼修復的順序?

構建AMI在內的所有要求預裝,而不是由用戶數據腳本安裝一切,這可能是一個解決方案嗎? 最佳做法是什麼?

任何答覆將不勝感激。感謝您的時間。

回答

0

好的我發現了一個最簡單的方法來解決這個問題。

看到這篇文章。 https://aws.amazon.com/ko/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/

據此,CodeDeploy代理開始,只要它推出一個新的實例時年代開始得到部署。

訂貨啓動腳本的執行 - 的CodeDeploy代理查找並儘快啓動執行部署。在部署執行和啓動腳本之間沒有排序,例如用戶數據,cfn-init等。我們建議您將主機代理作爲啓動腳本的一部分(也可能是最後一步)安裝,以便您可以確保在實例安裝不屬於CodeDeploy部署的依賴關係之前,部署將不會執行。如果您更喜歡將代理烘焙到基本AMI中,我們建議您保持代理服務處於停止狀態,並使用啓動腳本啓動代理服務。

因此,我重新安排了我的用戶數據腳本,以便在安裝完所有需求後安裝Code Deploy Agent。

#!/bin/bash 
sudo apt-get install -y python-software-properties 
sudo add-apt-repository -y ppa:ondrej/php 
sudo apt-get update -y 
sudo apt-get install php7.1 -y 
sudo apt-get install php7.1-zip php7.1-mbstring php7.1-dom php7.1-curl -y 

sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 
sudo php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 
sudo php composer-setup.php 
sudo php -r "unlink('composer-setup.php');" 
sudo mv composer.phar /usr/local/bin/composer 

apt-get -y update 
apt-get -y install ruby 
apt-get -y install wget 
cd /home/ubuntu 

wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install 
chmod +x ./install 
./install auto 

之後,所有的工作很好。