当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【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
#!/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のインストール・配置」について。
連載の目次は【こちら】です。