BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Ansible】Ansibleと牛

 こんにちは!
 BFT名古屋支店の、佐野です。

 今回はAnsibleに関連、というと実は若干怪しいかもしれないのですが、ちょっとした小話をさせていただきます。
 記事のタイトルとしてあげた通り、Ansibleと“牛”についての話です。
 正直な所そこまで真面目な記事というわけではありませんので、軽く読んで頂ければ嬉しく思います。


はじめに:Ansibleと牛の“つながり”

 突然となりますが、O'Reilly社から出版されているAnsibleの入門書「初めてのAnsible」は皆さんご存知でしょうか。
 O'Reilly社公式の方から引用させていただくと、以下の先にある本となります。

www.oreilly.co.jp

 このように牛が表紙を飾る形となっております。
 O'Reilly社から出されている技術本の表紙に、何らかの動物が描かれていることは知られているかと思います。
 (調べたところによると、そういうものはごく一部らしいのですが、イメージ的には殆ど描かれている印象があります)
 そしてAnsibleには、牛があてられたということになります。

 また、個人的にAnsibleにおいては牛がよく話題に出されるような感覚があります。
 この場合における“牛”とは、以下のような物です。

f:id:bftnagoya:20210204150111p:plain

 もしかしたら、別の何処かで見たことがあってご存知かも知れません。
 筆者も幾度か行われた研修の内でいくらかの例題としてこの牛を扱ったこともあり、何となくポピュラーなものなんだなという認識でなんとなく使っておりました。
 が、よく考えたらこの牛の正体とAnsibleの関連性については、あまり明るくありませんでした。
 ではこの牛は、ないしAnsibleと牛はどのような関係にあるのでしょうか。


Ansibleとcowsay

 勿体付けてしまった後でなんですが、早速先程の牛の正体についてお話すると、cowsayというメッセージを呟くウシのアスキーアートを生成するプログラムによって表わされるものです。
 このcowsayというものはコンピュータ(特にUNIX系)に関わる技術者達によって形作られた分化におけるジョークのひとつであり、20年以上前から広く長く使われているものになります。
 cowsay自体はPerlで作成されており、LinuxOSにインストールすると使えるようになるほか、Ansibleをはじめとした多くのツールに対応しています。

 Ansibleにおいては、cowsayをインストールした後にAnsibleの設定ファイルである/etc/ansible/ansible.cfgの223行目当たり、以下の部分の[cow_selection]のコメントアウトを外すことで、実行結果などに牛が表示されるようになります。
 (AnsibleやAnsibleTowerの再起動が必要になります)

以下はコメントアウトを外した状態の例です。

 # set which cowsay stencil you'd like to use by default. When set to 'random',
 # a random stencil will be selected for each task. The selection will be filtered
 # against the `cow_whitelist` option below.
 cow_selection = default
 #cow_selection = random

この状態で、AnsibleTowerで実行結果を出すと以下のようになります。

f:id:bftnagoya:20210204150115p:plain


Ansibleと牛の関係性

 さて、ここまで読まれた方は察してしまうかもしれませんが……
 Ansibleと牛の関係性は特にありません。
 ここまで引っ張っておいてすみません...

 しいて言えば、Ansibleはcowsayに対応しているということが、Ansibleと牛(cowsay)の関係性になります。
 O'Reilly社のAnsibleの入門書を初めとして、筆者が読んだ他の技術本にもcowsay関連の記事が載せられていて、やたら推してくる故にAnsibleと牛には深い関係が……と考えましたがそんなことはありませんでした。

 もしも筆者と同じように、Ansibleと牛には何か関係があるのかと勘繰っている人がいたら、
 「特に深い意味も関連性もないので気にしなくて大丈夫です」  と教えてあげるか、是非この記事を紹介してください。
 そういったちょっとした気になる疑問が、筆者の記事で晴れていくのなら嬉しく思います。

 ちなみに、O'Reilly社から出版されている技術本の表紙の動物について、どういった基準や理由で選ばれているのかは明かされていないようです。
 もしかしたらこのcowsayが絡んでいる、のかもしれませんし、やはり深い意味はないかもしれません。
 いずれにしても、想像の域を出ない話になります。


さいごに:牛を消す方法

 以上がAnsibleと牛(cowsay)のつながりの話になりますが、もしかしたら「知らないうちにcowsayが入ってAnsibleで牛が出るようになったから止めたい」という気持ちでこちらに辿り着いた方がおられるかもしれません。
 その場合、/etc/ansible/ansible.cfgの223行目当たり、cowsayの設定を行なう領域の最後に「nocows = 1」を入れることで、牛を消すことができます。

以下は実際に「nocows = 1」を入れ、牛とおさらばした状態の例になります。

 # set which cowsay stencil you'd like to use by default. When set to 'random',
 # a random stencil will be selected for each task. The selection will be filtered
 # against the `cow_whitelist` option below.
 #cow_selection = default
 #cow_selection = random
 nocows = 1