あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

Amazon Elastic Beanstalkで.ebextensionsを設定してみた

.ebextensionsを実際に設定してみてイメージをつかんでいきたいと思います!!

やること

.ebextensionsを利用してElastic Beanstalkで構築されるEC2インスタンスに対し下記設定を行う。

  • パッケージインストール
  • グループ作成
  • ユーザ作成
  • bashコマンド実行

環境

下記で作成したものを利用
amegaeru.hatenablog.jp

実践!

1.configファイルを作成
下記内容でtest.configファイルを作成

### パッケージ(packages) ###
packages: 
  yum:
    docker: ['18.03.1ce-3.amzn2.x86_64']
    ## versionは[$ yum --showduplicates search docker]で確認
    ## パッケージ名が[docker-18.03.1ce-3.amzn2.x86_64]の場合、[docker-]が自動で付与されるため、以降の18.~を記載する必要がある。
    dnsmasq: [] 
    ## 空白の場合、最新バージョンをインストールする形になる。

### グループ(groups) ###
groups:
  groupOne: {} 
  ## 空白の場合、gidはランダムで付与される
  groupTwo:
    gid: "45"

### ユーザ(users) ###
users:
  myuser:
    groups:
      - groupOne
      - groupTwo
    uid: "50"
    homeDir: "/tmp"

### コマンド(commands) ###
commands:
  command1:
    command: echo "test1" >> /tmp/test1.txt
  command2:
    command: touch /tmp/test2.txt


2.アプリケーションへconfigファイルを組み込み
 2-1.php.zipを解凍
 2-2..ebextensions配下に作成したtest.configファイルをコピー
 2-3.phpフォルダの中身をZip圧縮

◆Zipファイルの構成
php.zip
 ├ .ebextensions
 │  ├ logging.config
 │  └ test.config
 ├ cron.yaml
 ├ EBSampleApp-PHP.iml
 ├ index.php
 ├ logo_aws_reduced.gif
 ├ scheduled.php
 └ styles.css


3.アプリケーションをデプロイ
 3-1.[環境]-[sample-env]-ナビゲーションペインから[アプリケーションバージョン]
 3-2.[アップロード]
 3-3.アプリケーションバージョンをアップロードが表示されたら下記を入力
  ・バージョンラベル:3.0
  ・説明:空白
  ・アプリケーションをアップロード:作成したZipファイルを選択
 3-4.[アップロード]をクリック
 3-5.バージョンラベルが[3.0]のアプリケーションにチェックを入れる
 3-6.[アクション]-[デプロイ]
 3-7.アプリケーションバージョンをデプロイが表示されたら下記を入力
  ・環境:sample-env
 3-8.[デプロイ]
  ※ヘルスがDegradedになる場合、EC2インスタンスへ接続し下記コマンドでチェック

$ cat /var/log/eb-engine.log
$ cat /var/log/cfn-init.log


4.動作確認
 4-1.作成されたEC2インスタンスSSH接続
 4-2.下記を実行し設定が反映されていることを確認

$ yum list installed | grep docker
docker.x86_64                       18.03.1ce-3.amzn2                @amzn2extra-docker
$ yum list installed | grep dnsmasq
dnsmasq.x86_64                      2.76-16.amzn2.1.3                @amzn2-core
$ cat /etc/passwd | grep myuser
myuser:x:50:893::/tmp:/sbin/nologin
$ cat /etc/group | grep groupOne
groupOne:x:894:myuser
$ cat /etc/group | grep groupTwo
groupTwo:x:45:myuser
$ cat /tmp/test1.txt
test1
$ cat /tmp/test2.txt
[空白]




感想

パッケージインストールのバージョン設定が苦戦した。。( ;∀;)