はじめに
ansible-playbookコマンドは既に手に馴染んでいる人が多いかと思います。
手に馴染んでいるがあまりに、playbookのチェックをしたいのに、--check
オプションを付け忘れて、そのまま実行されてしまった…orz
という経験があるのではないでしょうか。
本記事はそういった失敗を事前にどのように防げるのかを、記載します。
ansible-playbookコマンドについて
ansible-playbookコマンドをおさらいすると、以下の通りとなります。
ansible-playbook playbook.yml
ansible-playbook playbook.yml --check
この--check
でansible-playbookの実行モードが切り替わります。
いわゆるdry-run
です。
この仕様により、本来dry-run
を行いたいのに、--check
を付け忘れて、実行されちゃった…orz
となってしまうため、これをどうにかしたいのです。
解決策
解決策として、alias
を利用します。
例えばrm
コマンドは-i
オプションを利用することで、削除時に確認を挟むことが可能です。
この発想を応用します。
alias ansible-deploy='ansible-playbook'
alias ansible-check='ansible-playbook --check'
このように、実行したい場合はansible-deploy
、チェックだけの場合はansible-check
を実行することでヒューマンエラーを回避可能です。
このままだと、ansible-deploy
を間違って打ってしまうこともあるためちょっと不安です。
なので、実行時に確認を入れることで対策を行います。
これのための設定が以下です。
ansible-deploy='fn_ansible_deploy'
function fn_ansible-deploy() {
function usage() {
cat << "EOS"
ansible-playbook(デプロイ)を安全に実行できるようにしたファンクションです。
yesで実行します。
EOS
}
echo -e "Do you really deploy?"
echo -e "Please check target server and tags before deploy"
echo -n -e "if you are ok. please input \e[32;1myes\e[m: "
read yesno
if [ $yesno = "yes" ] ; then
ansible-playbook $@
else
echo "process exit"
return 1
fi
}
これを.bashrc
などに記載しておくことで、安全に実行することが可能です。
yes
を入力しない限り、ansible-playbook
が実行されないので、間違ってコマンド打っちゃった…orz
でもセーフ!ってなるので、おすすめです。
コメント