AnsibleでCentOS7へジョークプログラムをインストールする

##はじめに

こちらは[Ansible Advent Calendar 2018](https://qiita.com/advent-calendar/2018/ansible "CircleCI Advent Calendar 2018 - Qiita") 2日目の記事です。

この記事ではAnsibleを利用したジョークプログラムのインストール方法を紹介します。インストールプログラムについては[こちらの記事](https://qiita.com/Hiroki_lzh/items/8cf206d54f91e29b3912 "仕事の役には立たない、Linuxにおけるジョークプログラムの話 - Qiita")を参考にさせて頂きました。

2日目の記事と言う事でAnsible Playbookの簡単な使い方のサンプル集になってます。


###想定環境

* OS / CentOS7
* Ansibleのバージョン / 2.7以降

###検証環境

[tomonorimatsumura/centos7-ansible - Docker Hub](https://hub.docker.com/r/tomonorimatsumura/centos7-ansible/ "tomonorimatsumura/centos7-ansible - Docker Hub") のイメージで動作確認してます。

### インストールするプログラム

* [ASCIIQuarium](https://robobunny.com/projects/asciiquarium/html/ "ASCIIQuarium")

ターミナルに水槽を出力するプログラムです。

![タイトルなし.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/749170e4-6e4e-814d-05f3-2461d84d76e2.gif)

* [beer-mug](https://github.com/misoton665/beer-mug "misoton665/beer-mug: 🍺 | GitHub")

作業時間等を計測するタイマーコマンドです。

![beer-mug.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/cdc2e4cb-221e-c6e5-a864-a5d7d082719f.gif)

* [CMatrix](https://github.com/abishekvashok/cmatrix "abishekvashok/cmatrix: Terminal based "The Matrix" like implementation | GitHub")

ターミナルに映画Matrixのオープニング風の画面を出力します。

![cmatrix.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/6a024117-6848-fdf9-79dd-2b3e15a0edbe.gif)


* [cowsay - Wikipedia](https://ja.wikipedia.org/wiki/Cowsay "cowsay - Wikipedia")

牛などが喋ります。

![cowsay.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/179d0a29-56f1-3d16-8c73-59e6494625dc.gif)


* [Cureutils](https://github.com/greymd/cureutils "greymd/cureutils: Useful command line tool for Japanese battle heroine Pretty Cure (Precure) | GitHub")

キュアエンジニアのためのコマンドラインツールです。

![cure.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/9e92ef70-04db-7711-a68e-00ed4475b006.gif)



* [fortune (UNIX) - Wikipedia](https://ja.wikipedia.org/wiki/Fortune_(UNIX) "fortune (UNIX) - Wikipedia")

英語の「迷言」をランダムに出力します。

![fortune.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/36a65ddc-bf22-e035-2afa-c7191b5605bd.gif)


* [Nyan Cat - Wikipedia](https://ja.wikipedia.org/wiki/Nyan_Cat "Nyan Cat - Wikipedia")

Nyancatをターミナル上で走らせます。

![nyancat.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/23bed26e-b256-26ae-bb2a-594be473ab8e.gif)


* [pong-command](https://github.com/kurehajime/pong-command "kurehajime/pong-command: pong is not ping. pong is CLI game | GitHub")

ゲームが開始されます。

![pong.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/af58e27c-39bd-a73c-7536-44227f007f7c.gif)


* [sl (UNIX) - Wikipedia](https://ja.wikipedia.org/wiki/Sl_(UNIX) "sl (UNIX) - Wikipedia")

汽車が走ります。

![sl.gif](https://qiita-image-store.s3.amazonaws.com/0/79373/6a47ce88-a333-c8f2-f706-6265cb75bd3b.gif)


##プログラムをすぐに試したい

上記のプログラムをインストールしたDockerイメージを作成しました。

[tomonorimatsumura/centos7-joke-programs - Docker Hub](https://hub.docker.com/r/tomonorimatsumura/centos7-joke-programs/ "tomonorimatsumura/centos7-joke-programs - Docker Hub")

Dockerがインストールされている端末上で以下のコマンドを入力するとすぐに試すことができます。 **Dockerイメージは2GB程になりますので利用する前にストレージの空き容量に注意してください。**

```bash
docker run -it tomonorimatsumura/centos7-joke-programs /bin/bash
```

##ASCIIQuarium

###インストール

[ansible-joke-programs/asciiquarium | GitHub](https://github.com/ansible-joke-programs/asciiquarium) からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
git clone https://github.com/ansible-joke-programs/asciiquarium.git
cd asciiquarium
ansible-galaxy install -r roles/requirements.yml -p /roles/
ansible-playbook -i localhost, -c local install.yml
```

###ASCIIQuariumを実行する

```bash
asciiquarium

#control + c で終了
```


##beer-mug

###インストール方法

[工事中]() からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
工事中
```

###beer-mugを実行する

```bash
beer-mug init
beer-mug start
# 何か作業をする
beer-mug end

#beer-mugが稼働しているかどうか調べる
beer-mug status
```


##CMatrix

###インストール

[ansible-joke-programs/cmatrix](https://github.com/ansible-joke-programs/cmatrix) からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
git clone https://github.com/ansible-joke-programs/cmatrix.git
cd cmatrix
ansible-galaxy install -r roles/requirements.yml -p /roles/
ansible-playbook -i localhost, -c local install.yml
```

###CMatrixを実行する

```bash
cmatrix

# q で終了
```

###コマンドオプション

|オプション|効果|
|:---:|---|
|-a| Asynchronous scroll |
|-b| Bold characters on |
|-B| All bold characters (overrides -b) |
|-f| Force the linux $TERM type to be on |
|-l| Linux mode (uses matrix console font) |
|-o| Use old-style scrolling |
|-h| Print usage and exit |
|-n| No bold characters (overrides -b and -B, default) |
|-s| "Screensaver" mode, exits on first keystroke |
|-x| X window mode, use if your xterm is using mtx.pcf |
|-V| Print version information and exit |
|-u|delay (0 - 10, default 4): Screen update delay |
|-C [color]| Use this color for matrix (default green) |
|-r| rainbow mode |


##cowsay

###インストール方法

[ansible-joke-programs/cowsay | GitHub](https://github.com/ansible-joke-programs/cowsay) からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
git clone https://github.com/ansible-joke-programs/cowsay.git
cd cowsay
ansible-galaxy install -r roles/requirements.yml -p /roles/
ansible-playbook -i localhost, -c local install.yml
```

###cowsayを実行する

```bash
cowsay hello

 _______
< hello >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
```

詳しい使い方は[こちら](https://www.wikiwand.com/ja/Cowsay "cowsay - Wikiwand")を参考にして下さい


##Cureutils

###インストール

[ansible-joke-programs/cureutils | GitHub](https://github.com/ansible-joke-programs/cureutils) からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
git clone https://github.com/ansible-joke-programs/cureutils.git
cd cureutils
ansible-galaxy install -r roles/requirements.yml -p /roles/
ansible-playbook -i localhost, -c local install.yml
```

###Cureutilsを実行する

```bash
cure version
```

###コマンドオプション

|コマンド|効果|
|:---:|---|
|cure date [OPTIONS] [+FORMAT]| Display date, time and Precure related events. |
|cure echo [OPTIONS] PATTERN | Print messages of Precure. |
|cure girls [OPTIONS] |Print girls' name. |
|cure grep [OPTIONS] PATTERN | Print lines matching a pattern. |
|cure help [COMMAND] | Describe available commands or one specific |
|cure humanize | Change precure_name to human_name. |
|cure janken | Let's play "Pikarin Janken" ! |
|cure precures [OPTIONS] | Print Precure names. |
|cure tr PATTERN REPLACE | Translate Precure related parameters. |
|cure transform | Change human_name to precure_name. |
|cure version | Output the version number. |

詳しい使い方については [こちら](https://qiita.com/greymd/items/666a26459aa1bd4cb06c "Cureutilsを使ったプリティでキュアキュアなターミナルライフの実現 - Qiita") を参考にして下さい

##Fortune

###インストール方法

[ansible-joke-programs/fortune | GitHub](https://github.com/ansible-joke-programs/fortune) からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
git clone https://github.com/ansible-joke-programs/fortune.git
cd fortune
ansible-galaxy install -r roles/requirements.yml -p /roles/
ansible-playbook -i localhost, -c local install.yml
```

詳しい使い方は [fortune(6) - Linux man page](https://linux.die.net/man/6/fortune "fortune(6) - Linux man page")を参考にして下さい

##Nyancat

###インストール方法

[ansible-joke-programs/nyancat | GitHub](https://github.com/ansible-joke-programs/nyancat) からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
git clone https://github.com/ansible-joke-programs/nyancat.git
cd nyancat
ansible-galaxy install -r roles/requirements.yml -p /roles/
ansible-playbook -i localhost, -c local install.yml
```

###Nyancatを実行する

```bash
nyancat

# control + c  で終了
```
###コマンドオプション

|オプション|効果|
|---|---|
| -i --intro | Show the introduction / about information at startup. |
| -t --telnet | Telnet mode. |
| -n --no-counter | Do not display the timer |
| -s --no-title | Do not set the titlebar text |
| -e --no-clear | Do not clear the display between frames |
| -f --frames | Display the requested number of frames, then quit |
| -r --min-rows | Crop the animation from the top |
| -R --max-rows | Crop the animation from the bottom |
| -c --min-cols | Crop the animation from the left |
| -C --max-cols | Crop the animation from the right |
| -W --width | Crop the animation to the given width |
| -H --height | Crop the animation to the given height |
| -h --help | Show this help message. |



##pong-command

###インストール方法

[ansible-joke-programs/pong-command | GitHub](https://github.com/ansible-joke-programs/pong-command) からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
git clone https://github.com/ansible-joke-programs/pong-command.git
cd pong-command
ansible-galaxy install -r roles/requirements.yml -p /roles/
ansible-playbook -i localhost, -c local install.yml
```

###pongを実行する

```bash
pong <何らかの文字>

# ゲームが開始される
# ESCキーで終了
```

##sl

###インストール方法

[ansible-joke-programs/sl | GitHub](https://github.com/ansible-joke-programs/sl)  からPlaybookを取得し ansible-playbook コマンドをroot権限で実行します。

```bash
git clone https://github.com/ansible-joke-programs/sl.git
cd sl
ansible-galaxy install -r roles/requirements.yml -p /roles/
ansible-playbook -i localhost, -c local install.yml
```

###コマンドオプション

|オプション|効果|
|:---:|---|
|-l|細長いSLが走る|
|-a|車内の客が「HELP!」と叫んでいる|
|-F|空（画面の上のほう）へ飛んでゆく|


##参考リンク

###元ネタ

* [仕事の役には立たない、Linuxにおけるジョークプログラムの話 - Qiita](https://qiita.com/Hiroki_lzh/items/8cf206d54f91e29b3912 "仕事の役には立たない、Linuxにおけるジョークプログラムの話 - Qiita")

###ASCIIQuarium
* [ASCIIQuarium](https://robobunny.com/projects/asciiquarium/html/ "ASCIIQuarium")


###beer-mug
* [misoton665/beer-mug: 🍺 | GitHub](https://github.com/misoton665/beer-mug "misoton665/beer-mug: 🍺 | GitHub")


###CMatrix
* [abishekvashok/cmatrix: Terminal based &quot;The Matrix&quot; like implementation | GitHub](https://github.com/abishekvashok/cmatrix "abishekvashok/cmatrix: Terminal based &quot;The Matrix&quot; like implementation | GitHub")


###cowsay

* [cowsay - Wikipedia](https://ja.wikipedia.org/wiki/Cowsay "cowsay - Wikipedia")
* [cowsay - Wikiwand](https://www.wikiwand.com/ja/Cowsay "cowsay - Wikiwand")
* [tnalpgge/rank-amateur-cowsay: Fork me if you want to maintain cowsay | GitHub](https://github.com/tnalpgge/rank-amateur-cowsay "tnalpgge/rank-amateur-cowsay: Fork me if you want to maintain cowsay | GitHub")


###Cureutils

* [Cureutilsを使ったプリティでキュアキュアなターミナルライフの実現 - Qiita](https://qiita.com/greymd/items/666a26459aa1bd4cb06c "Cureutilsを使ったプリティでキュアキュアなターミナルライフの実現 - Qiita") 
* [greymd/cureutils: Useful command line tool for Japanese battle heroine Pretty Cure (Precure). | GitHub](https://github.com/greymd/cureutils "greymd/cureutils: Useful command line tool for Japanese battle heroine Pretty Cure (Precure). | GitHub")

###Fortune
* [fortune (UNIX) - Wikipedia](https://ja.wikipedia.org/wiki/Fortune_(UNIX) "fortune (UNIX) - Wikipedia")
* [BSD Fortune | Thinkyhead](http://www.thinkyhead.com/fortune "BSD Fortune | Thinkyhead")
* [fortune(6) - Linux man page](https://linux.die.net/man/6/fortune "fortune(6) - Linux man page")


###Nyancat

* [Nyan Cat - Wikipedia](https://ja.wikipedia.org/wiki/Nyan_Cat "Nyan Cat - Wikipedia")
* [klange/nyancat: Nyancat in your terminal, rendered through ANSI escape sequences. This is the source for the Debian package 'nyancat'. | GitHub](https://github.com/klange/nyancat "klange/nyancat: Nyancat in your terminal, rendered through ANSI escape sequences. This is the source for the Debian package `nyancat` | GitHub")

###pong-command

* [kurehajime/pong-command: pong is not ping. pong is CLI game | GitHub](https://github.com/kurehajime/pong-command "kurehajime/pong-command: pong is not ping. pong is CLI game | GitHub")

###sl
* [sl (UNIX) - Wikipedia](https://ja.wikipedia.org/wiki/Sl_(UNIX) "sl (UNIX) - Wikipedia")
* [mtoyoda/sl: SL(1): Cure your bad habit of mistyping | GitHub](https://github.com/mtoyoda/sl "mtoyoda/sl: SL(1): Cure your bad habit of mistyping | GitHub")

###使用したAnsible Playbook

####ASCIIQuarium
* [ansible-joke-programs/asciiquarium | GitHub](https://github.com/ansible-joke-programs/asciiquarium)

####beer-mug

* 工事中

####CMatrix
* [ansible-joke-programs/cmatrix | GitHub](https://github.com/ansible-joke-programs/cmatrix) 

####cowsay

* [ansible-joke-programs/cowsay | GitHub](https://github.com/ansible-joke-programs/cowsay) 

####Cureutils

* [ansible-joke-programs/cureutils | GitHub](https://github.com/ansible-joke-programs/cureutils)

####Fortune

* [ansible-joke-programs/fortune | GitHub](https://github.com/ansible-joke-programs/fortune)

####Nyancat

* [ansible-joke-programs/nyancat | GitHub](https://github.com/ansible-joke-programs/nyancat)

####pong-command

* [ansible-joke-programs/pong-command | GitHub](https://github.com/ansible-joke-programs/pong-command) 

####sl

* [ansible-joke-programs/sl | GitHub](https://github.com/ansible-joke-programs/sl)