Ansibleを使いやすくする
Ansibleを使っていてめんどうなことについて考えます。
-
playbookを作っているときしょっちゅうコマンドをたたかなければいけない
-
コマンドが終わるまで待っていなければいけない
-
エラーがでないか見張っていなければいけない
これらを改善しないとAnsibleを使うのが億劫になるのでなんとかしなければいけません。 まずいちいちansible-playbookがあるGitHubディレクトリに移動するのが億劫なので、 どこからコマンドを叩いてもいいようにしましょう。 ansible-playbookコマンドが終わったらもといたディレクトリに勝手に戻るようになっており、 fzfで適応するplaybookを選択できるようになっています。
playbookを適応するymlを選択するとAnsibleの処理が始まります。
Ansibleが終了すると通知が来るようにしたので他の作業がしやすくなりました。 通知はクリックするまで消えないので見逃すことはないでしょう。
Ansibleがerrorをはくとすぐに通知されるので見張ってなくてよくなりました。
ansibleを使うための.zshrc
.zshrc に以下を書いておきます。 local repositoryname=‘ansible-vps’ ここにAnsibleのリポジトリ名を設定するだけでよいです。 macOS は notify-send がないので適当に書き換えてください。
function ansible-fzf() {
local repositoryname='ansible-setup-server'
ghq root && cat ~/.config/hub | grep user && \
cd $(ghq root)/github.com/$(cat ~/.config/hub | grep user | awk '{print $3}')/${repositoryname}
if [ $? = 0 ]; then
local selected_yml=$(ls | grep .yml$ | fzf-tmux -d --reverse --prompt="Ansible > ")
if [ -n "$selected_yml" ]; then
ansible-playbook --ask-vault-pass ${selected_yml}
if [ $? = 0 ]; then
notify-send -u critical 'Ansible' 'Your playbook execution ended' -i utilities-terminal
else
notify-send -u critical 'Ansible' 'Error has occured' -i dialog-error
fi
fi
cd -
fi
}
zle -N ansible-fzf
bindkey '^x^a' ansible-fzf
このようにfzf-ansibleコマンドのショートカットキー C-x C-a を設定するとコマンドを打ち込まなくてよいので楽です。
fzf ansible hub install
ghq と hub と Ansible と fzf が必要なのでインストールしておきます。
sudo pacman -S hub ansible fzf
go get -u -v github.com/motemen/ghq
~/.gitconfigを
[ghq]
root = ~/src
GOPATHを
export GOPATH=$HOME
export PATH="$PATH:$GOPATH/bin"
としておくとgoのsrcとGitHubをghqで一緒くたにできるので便利です。
mkdir tekitou
cd tekitou
git init .
hub create
を一回実行すると認証があるので済ませると ~/.config/hubにoauth_token ができるので以降は自動的にできるようになります。 tekitouリポジトリができてしまうのでGitHubで消してください。
ブログ記事を投稿したらTwitterでお知らせいたします。ブログを気に入っていただけた方はお気軽にフォローしてください。
— Solist Work (@SolistWork) 2018年11月27日
関連記事
最新記事
タグ一覧
-
ansible (2)
application (8)
chrome (1)
command (14)
django (1)
docker (3)
document (1)
emacs (14)
git (2)
google (1)
hugo (1)
kubernetes (1)
linux (20)
makefile (6)
mariadb (2)
melpa (1)
postgresql (2)
python (1)
security (2)
terminal (11)
thinkpad (2)
work (6)
zsh (10)