Ansibleで環境構築時にサーバ名のアスキーアートも登録出来るようにする方法
この記事はAnsible Advent Calendar 2016 - Qiitaの5日目の記事になります。
こんにちは。@nissy0409240です。
色々なサーバへ同時にSSHログインして作業をすることがよくあると思います。
そして色々なサーバで作業していると様々なヒヤリとする経験に遭遇します。
例えば、開発サーバと勘違いして本番サーバにログインしてしまい、
取り返しのつかないコマンドを入力しそうになる。
そんな怖い経験をしたことがある方は沢山いらっしゃると思います。
そのような事態を防ぐため、SSHログイン時にサーバ名を表示させる
という工夫をするケースがよく見られます。
具体的には/etc/motdファイルにサーバ名のアスキーアートを記述し、
ログイン時にアスキーアートが表示されるようにするといったものです。
しかし、この作業は環境構築後に直接/etc/motdファイルを編集しなくてはならず、
うっかり忘れてしまうケースもよく見られます。
ansibleで環境構築時に/etc/motdファイルも同時に登録出来るようにする
そこで、ansibleで環境構築時に/etc/motdファイルも同時に
サーバー名のアスキーアートを登録出来るようにしようと考えました。
今回は文字列をアスキーアートで表示してくれるfigletというツールを使って
下記の様なplaybookファイルを作成します。
--- - hosts: vagrants become: yes user: vagrant tasks: - name: yum install epel-release, deltarpm yum: name={{item}} state=latest with_items: - epel-release.noarch - deltarpm - name: yum install packages yum: name={{item}} state=latest with_items: - figlet - name: execute figlet module shell: "figlet figlet_demo | sudo tee -a /etc/motd"
上記playbookファイルではyumとepelパッケージをインストール後、
figletモジュールをyumを使ってインストールし、
最後にshellモジュールを使って、
サーバ名のアスキーアートを/etc/motdファイルに記述しています。
今回は「figlet_demo」という名前のサーバを構築します。
実際に構築する
それでは、Vagrantがインストール済かつAnsibleが動く環境で実際に構築してみます。
$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'bento/centos-7.1'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'bento/centos-7.1' is up to date... ==> default: Setting the name of the VM: figlet_demo_default_1480869765046_64483 ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 => 2222 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... default: Warning: Remote connection disconnect. Retrying... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... ==> default: Configuring and enabling network interfaces... ==> default: Mounting shared folders... default: /vagrant => /path/to/figlet_demo ==> default: Running provisioner: ansible... PLAY [vagrants] **************************************************************** TASK [setup] ******************************************************************* ok: [192.168.33.10] TASK [yum install epel-release, deltarpm] ************************************** changed: [192.168.33.10] => (item=[u'epel-release.noarch', u'deltarpm']) TASK [yum install packages] **************************************************** changed: [192.168.33.10] => (item=[u'figlet']) TASK [execute figlet module] *************************************************** changed: [192.168.33.10] PLAY RECAP ********************************************************************* 192.168.33.10 : ok=4 changed=3 unreachable=0 failed=0
無事、構築出来たようなので、SSHログインしてみます。
$ vagrant ssh Last login: Sun Dec 4 16:43:53 2016 from 192.168.33.1 __ _ _ _ _ / _(_) __ _| | ___| |_ __| | ___ _ __ ___ ___ | |_| |/ _` | |/ _ \ __| / _` |/ _ \ '_ ` _ \ / _ \ | _| | (_| | | __/ |_ | (_| | __/ | | | | | (_) | |_| |_|\__, |_|\___|\__|___\__,_|\___|_| |_| |_|\___/ |___/ |_____| [vagrant@localhost ~]$
無事、指定したサーバ名のアスキーアートが表示されました。
最後になりますが、今回作成したVagrantfileとplaybookはこちらになります。
github.com
なお、このレポジトリでは簡略化のため、figlet以外の内容(gitなどのミドルウェアのインストール等)は省略しています。
また、今回使用したboxファイルは下記のものになります。
https://atlas.hashicorp.com/bento/boxes/centos-7.1
最後までお付き合い頂き、ありがとうございました。
※参考
サーバ管理に役立つ(かもしれない)FIGletというツール | /var/log/azumakuniyuki
SSH接続時にmotdでメッセージを表示・非表示 - Qiita
サーバログイン時にカッコイイメッセージを表示する(CentOS 7.1編) - Qiita
sudoでリダイレクトするときにハマること - ぱせらんメモ