Solist Work Blog

List of all blog posts

Ansibleをもっと楽にする

Ansibleを使っていてめんどうなことは

  1. playbookを作っているときしょっちゅうコマンドをたたかなければいけない

  2. コマンドが終わるまで待っているのがめんどう

  3. エラーがでないか見張っているのがめんどう

これらをめんどくさくないようにしないとansibleを使うのがめんどくさいのでなんとかする。 まずいちいちansible-playbookがあるgithubディレクトリに移動するのがめんどうなので どこからコマンドを叩いてもいいようにした。 ansible-playbookコマンドが終わったらもといたディレクトリに勝手に戻るようにした。 fzfで適応するplaybookを選択できるようにした。 fzf-ansibleコマンドをたたくのもめんどうなので C-x C-a で起動するようにした。

コマンドの説明

anbile-playbook実行中

ansible が終了すると通知が来るようにしたので他の作業がしやすくなりました。 通知はクリックするまで消えないので見逃すことはないでしょう。

終了すると通知が来る

ansibleがerrorをはくとすぐに通知されるので見張ってなくてよくなりました。

エラーのときも通知が来る

.zshrc


.zshrc に以下を書いておきます。 local repositoryname=‘ansible-vps’ ここにansibleのリポジトリ名を設定するだけ mac は 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

install


ghqとhubとfzfとansibleが必要なのでインストールしておく。

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で消しておきます。