Solist Work Blog

ソフトウェアエンジニア / IT navigator

Ansibleを使いやすくする

Ansibleを使っていてめんどうなことについて考えます。

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

  2. コマンドが終わるまで待っていなければいけない

  3. エラーがでないか見張っていなければいけない

これらを改善しないとAnsibleを使うのが億劫になるのでなんとかしなければいけません。 まずいちいちansible-playbookがあるGitHubディレクトリに移動するのが億劫なので、 どこからコマンドを叩いてもいいようにしましょう。 ansible-playbookコマンドが終わったらもといたディレクトリに勝手に戻るようになっており、 fzfで適応するplaybookを選択できるようになっています。

コマンドの説明

playbookを適応するymlを選択するとAnsibleの処理が始まります。

anbile-playbook実行中

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

ghqhubfzfAnsibleが必要なのでインストールしておきます。

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で消してください。

タグ一覧

お仕事のご相談などはこちらからどうぞ

お仕事の依頼はこちらからどうぞ