標準エラー出力を標準出力へ

表題の通り。ちょっとした小技のメモ。たいしたことはない。

■ 環境

  • Linux

■ 状況

下記のようなことをやりたかった。

$ nginx -V | grep --color=auto security
nginx version: nginx/1.10.0 (Ubuntu)
built with OpenSSL 1.0.2g  1 Mar 2016
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads
$

security“という文字列を探したかったのであるが、見つからない?そもそも全行が出力されている?というところで気がついた。標準エラー出力に出ているのか。そのせいで`grep`が効いていないのだな、と。というわけで下記で実施。

$ nginx -V 2>&1 | grep --color=auto security
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads
$

これで目的の文字列である”security“が赤文字で目立つように表示された。満足である。

以上。

less +F

知らなかったので表題をメモしておく。

■ 環境

  • Amazon Linux

■ tail -f / tailf / less +F

似たようなことをこれらのコマンドで実現できる。前に`tailf`の方が性能(?)メモリ使用量(?)的に良いとかって話を聞いた記憶があって`tailf`を使うようにしていたのだが、`less`でも同じようにできるということで、こっちを使うようになった。

$ less test.log

通常通りに`less`で、随時追記されるファイルを開いても良い。この後`Shift + F`で追記された分を追うこともできる。また`Ctrl + C`で通常のモードにも戻れるので便利である。

ちなみに`tail -F`というオプションもあるが、”logrotate“等でファイル名が変わっても、指定したファイル名を追随してくれるオプションである。日付が変わるタイミング等で変更することが多いので、あまり役立ったことはない。

以上。

tac

表題のコマンドについて。単なるメモ。

■ 環境

  • Amazon Linux

■ tac

下記のようなテキストファイルがあるとする。

$ cat test.txt
1 apple
2 grape
3 peach
4 kiwi
5 cherry
$

このテキストファイルに対して`tac`コマンドは下記のような結果を得られる。

$ tac test.txt
5 cherry
4 kiwi
3 peach
2 grape
1 apple
$

`tac`コマンドの名の通り、逆順に内容を`cat`してくれる。

さてこのコマンドはどのパッケージに入っているのか。

$ which tac
/usr/bin/tac
$
$ rpm -qf /usr/bin/tac
coreutils-8.22-15.52.amzn1.x86_64
$

そんなに使用頻度の高いものなのだろうか…。自身ではほぼ使ったことがない。

以上。

Slack Module

初めてのAnsible』を読んで知った表題のModuleを試してみた。

■ 環境

  • Ansible 2.2.1.0

■ Slack Module

Slack – Send Slack notifications – Ansible Documentation
http://docs.ansible.com/ansible/slack_module.html

よくわからなかったのが”token“のところである。

Custom Integrations
https://my.slack.com/apps/manage/custom-integrations

Incoming WebHooks“から作成もしくは既存のものの詳細に記載されている”Webhook URL“から抽出した。自身の環境ではマスクしているが下記のようなURLであった。

https://hooks.slack.com/services/X0X00XX0X/X0XX0XXXX/XXxxxXxXxxxxxxX0x0xxXxxX

https://hooks.slack.com/services/“以降の文字列を”token“に指定したところ、正しく通知された。

icon_emoji“や”username“も指定できるので、playbookが正常に終了した場合にSlackに通知するといったことができるようになった。

    - name: slack notification
      slack:
        token: "X0X00XX0X/X0XX0XXXX/XXxxxXxXxxxxxxX0x0xxXxxX"
        channel: "#test"
        username: "withsin"
        icon_emoji: ":withsin:"
        msg: "テスト。"
      become: no
      delegate_to: localhost

以上。

■ 関連

初めてのAnsible

■ 感想

現在の仕事でChefからAnsibleへ置き換えを行っている。Ansibleは前にもやったことがあり、改めて読んでみようと思いつつも積ん読状態にあった本を引っ張り出して少しずつ読んでみた。以前触った時よりも随分とモジュールも増えており、またそもそも知らなかったモジュールも多々あって勉強になった。

■ メモ

3.6 host_vars / group_vars ディレクトリ

知らなかったのでメモとして。今までは`vars_files`で読み込ませるようにしていた。

4.6 組み込み変数

`group_names`等の各種変数をメモ。ちょうど使いたいタイミングで存在を知れた。

4.7 コマンドライン上での変数の設定

$ ansible-playbook test.yml -e @vars.yml

という書き方ができる。

6.6 aptキャッシュの更新

cache_valid_time=3600

`apt`モジュールで使える。

6.10 データベースとデータベースユーザの作成

  • postgresql_user
  • postgresql_db

MySQLもあるのかな?と思ったらやっぱりあった。

  • mysql_user
  • mysqldb
  • mongodb_user

とかもあるようである。

6.11 テンプレートからのlocal_settings.pyファイルの作成

xip.io

こんなサービスがあったのか。これは使えそうである。

7.1 コントロールマシン上でのタスク実行

下記のモジュールが使えそうだな、と思いメモ。

  • local_action
  • wait_for

7.2 ホスト以外のマシン上でのタスクの実行

  • delegate_to

7.4 一度の一つのホストでの実行

  • serial
  • max_fail_percentage

7.5 1回だけの実行

  • run_once

7.9 ホスト指定のパターン

:& 積集合

7.13.1 with_lines

  • slackモジュールがある?
  • → Slack Module で試してみた

8.4 pre_tasksとpost_tasks

へーと思ったので。

9.1. SSHマルチプレキシングとControlPersist

知らんかった。

9.4 並列処理

default forks = 5

14.3 Assertモジュール

そもそも知らなかった。。
表14-1. statモジュールが返す値

14.4.1 構文チェック

--syntax-check

14.4.4” チェックモードの “-C, –check” しか使ってなかったな。

14.5.1 step

タスクごとにスキップとかを使用できる。デバッグ時に良さそうだ。