3.1. Redmine用データベース接続情報ファイルの作成

パラメータ設定

作業に必要なモノ・情報 [resource]

リソース1: 一時ファイル用ディレクトリ

  • 今回は"${HOME}/tmp"を一時ファイル用ディレクトリとします。

ディレクトリが存在することを確認します。

コマンド:

ls -d ${HOME}/tmp

結果(例:存在する場合):

${HOME}/tmp

ディレクトリが存在しない場合は作成します。

コマンド:

mkdir -p ${HOME}/tmp

パラメータの指定

0.0. リージョンの指定

変数の設定

export AWS_DEFAULT_REGION='<リージョン名>'

0.1. DBインスタンス識別子の指定

変数の設定:

RDS_INSTANCE_IDENT='dbinstance-handson-cli'

0.2. データベース名の指定

変数の設定:

PSQL_DBNAME="redmine"

0.3. DBユーザの指定

変数の設定:

PSQL_USERNAME="redmine"

0.4. DBユーザパスワードの指定

変数の設定:

PSQL_USERPASS='#redmine123'

0.5. 一時ファイル用ディレクトリの指定

変数の設定:

DIR_TMP="${HOME}/tmp"

0.6. 接続対象識別子の指定

変数の設定:

CONNECTION_TARGET='dbinstance-handson-cli-ap-northeast-1-database-yml'

タスクの実施

1. 前処理

1.1. 状態確認に必要な情報の取得

Redmine用データベース接続情報ファイル名の指定

Redmine用データベース接続情報ファイル名を指定します。

変数の設定:

FILE_DATA="${DIR_TMP}/${CONNECTION_TARGET}" \
  && echo ${FILE_DATA}

結果(例):

${HOME}/tmp/dbinstance-handson-cli-ap-northeast-1-database-yml

1.2. 処理対象の状態確認

一時ファイル用ディレクトリの存在確認

コマンド:

ls -d ${DIR_TMP}

結果(例):

${HOME}/tmp

Redmine用データベース接続情報ファイルの不存在確認

コマンド:

! ls ${FILE_DATA}

結果(例):

ls: ${HOME}/tmp/dbinstance-handson-cli-ap-northeast-1-database-yml No such file or directory

1.3. 主処理に必要な情報の取得

データベースホスト名の取得

コマンド:

RDS_INSTANCE_ENDPOINT=$( \
  aws rds describe-db-instances \
    --db-instance-identifier ${RDS_INSTANCE_IDENT} \
    --query 'DBInstances[].Endpoint.Address' \
    --output text \
) \
  && echo ${RDS_INSTANCE_ENDPOINT}

結果(例):

dbinstance-handson-cli.xxxxxxxxxxxx.<リージョン名>.rds.amazonaws.com

2. 本処理

Redmine用データベース接続情報ファイルの作成

変数の確認:

cat << ETX

  # FILE_DATA:"${HOME}/tmp/dbinstance-handson-cli-ap-northeast-1-database-yml"
    FILE_DATA="${FILE_DATA}"
  # RDS_INSTANCE_ENDPOINT:"dbinstance-handson-cli.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com"
    RDS_INSTANCE_ENDPOINT="${RDS_INSTANCE_ENDPOINT}"
  # PSQL_DBNAME:"redmine"
    PSQL_DBNAME="${PSQL_DBNAME}"
  # PSQL_USERNAME:"redmine"
    PSQL_USERNAME="${PSQL_USERNAME}
  # PSQL_USERPASS:"#redmine123"
    PSQL_USERPASS="${PSQL_USERPASS}"

ETX

コマンド:

cat << EOF > ${FILE_DATA}
production:
  adapter: postgresql
  database: ${PSQL_DBNAME}
  host: ${RDS_INSTANCE_ENDPOINT}
  username: ${PSQL_USERNAME}
  password: "${PSQL_USERPASS}"
EOF

cat ${FILE_DATA}

結果(例):

production:
  adapter: postgresql
  database: redmine
  host: dbinstance-handson-cli.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
  username: redmine
  password: "#redmine123"

3. 後処理

完了条件の確認

Redmine用データベース接続情報ファイルの存在確認

コマンド:

ls ${FILE_DATA}

結果(例):

${HOME}/tmp/dbinstance-handson-cli-ap-northeast-1-database-yml

完了