Edited at

【連載01】212.環境変数を設定する

More than 3 years have passed since last update.

当記事はケーススタディの連載となっています。目次は【こちら】です。

最新のソースコードは【GitHub】で公開中です。

サーバの責務はこちらで確認ください。


1.環境変数(shellの自動起動スクリプト実行)設定概要


2.playbookファイルの相関


3.playbook(site.yml)

${ANSIBLE_HOME}/site.yml

メインとなるplaybook(site.yml)参照


4.環境変数(shellの自動起動スクリプト実行)設定のplaybook(/operations/0091_env.yml)

${ANSIBLE_HOME}/operations/0091_env.yml

playbook中のコメントの補足に関しては「6.補足説明」を参照。

# ===================

# ログイン時に読み混むbash_profile用ファイルを配置(profile_init.sh)
# ===================
- hosts: all
sudo: no
remote_user: root
tasks:

# ===================
# すべてのユーザーで使用する環境変数や
# 初期処理を記述したファイルを/etc/profile.d/配下におく。
# ===================
- name: 環境変数のコピー
shell: cp /var/opt/data/nfs/os/settings/profile_init.sh /etc/profile.d/profile_init.sh #【4.A:
単純にファイルを/etc/profile.d/配下にコピー】


5.起動スクリプト

${ANSIBLE_HOME}/sendfiles/os/settings/profile_init.sh


profile_init.sh

#!/bin/bash

#ホスト名を登録
admin=adminserv01
db=dbserv01
ap=apserv01

host=$HOST

#HISTORYを各端末で個別に作らない。
function share_history {
history -a
history -c
history -r
}
PROMPT_COMMAND='share_history'
shopt -u histappend
export HISTSIZE=9999

#すべての共通
alias vi='vim'

#APサーバとADMINサーバはJAVAを使用する
if [ "$host" = "$ap" -o "$host" = "$admin" ]; then
export JAVA_HOME=/usr/java/default
export CATALINA_HOME=/opt/tomcat
export CATALINA_BASE=/opt/tomcat
export PATH=${JAVA_HOME}/bin:${CATALINA_HOME}/bin:${PATH}
fi

if [ "$host" = "$admin" ]; then
export MAVEN_HOME=/opt/maven
export PATH=${MAVEN_HOME}/bin:${PATH}
fi

#RVENV実行
#export RBENV_HOME=~/.rbenv
#export PATH=${RBENV_HOME}/bin:${PATH}
#eval "$(rbenv init -)" >/dev/null 2>&1
if [ $USER = "root" ]; then
export RBENV_HOME=/root/.rbenv
export PATH=${RBENV_HOME}/bin:${PATH}
#REPLACE_EXECRBENV #【5.A:Rubyを後ほどrvenvでインストールした後#REPLACE_EXECRBENVをreplaceモジュールで置換】

fi



6.補足説明

4.A、5.Aについて。

/etc/profile.d配下に配置する起動スクリプトを単純にコピーする。

shellの内容はvimのalias設定やJAVA_HOMEの設定など一般的な設定。

【5.A】の部分は後ほどrubyインストール後に置換する。

※ruby実行ユーザーがrootなのはご愛嬌です(笑)


7.補足の補足(注意)

今回は事前にファイルを作成してそれを転送して終わるが、profile.d配下に配置するshをAnsibleのreplaceモジュールやlineinfileモジュールにて実装するのもいいかと思う。その場合、より効果の高い冪等性が得られると思う。

ただし冪等性を重要視するあまり、コストが高くなる可能性がある。我々がやることは冪等性を完全に守ることではなく、限られた時間の中で、より安全にサーバーを構築することかと思う。メリット/デメリットを考えて最良な選択をする事が重要だと思う。




次回は「213.NMONのインストール・配置」について。

連載の目次は【こちら】です。