とーますメモ

Ruby on Rails / Goなどの学習メモ

digコマンドの使い方について

忘れやすいので自分用にメモ

オプション一覧が載っているページ
【 dig 】コマンド――ドメイン名からIPアドレスを調べる:Linux基本コマンドTips(158) - @IT

良さげなTipsが載っているページ
10 Linux DIG Command Examples for DNS Lookup

基本的に一番使うコマンド
ex) 全レコードを指定のDNSサーバ経由(8.8.8.8はGoogle)で取得

$ dig @8.8.8.8 example.com any +noall +answer
  1. noallを使用すると、全ての付随する情報(コメント、authority, status、answerなど)が非表示なる。

このオプションの後に、+answerをつけることで、answer以外の異情報を全て非常にしたスッキリした情報が表示される。

またデフォルトだとdigは/etc/resolv.confファイルに指定されているDNSサーバを使用するが、@8.8.8.8のGoogleのDNSサーバを使用する。
1.1.1.1のCloudflareでも良いが、NSレコードが見えないことがあったので、特に何かない限りは8.8.8.8を使用する。

常にこのオプションを使うなら、ホームディレクトリ直下に、「.digrc」ファイルを作成し、その中に以下のように書いて
普通にdigコマンドを入れれば、毎度長いコマンドを入力しないでも良い。

$ cat $HOME/.digrc
@8.8.8.8 any +noall +answer
$ dig example.com

備考

自分の勝手な勘違いだったのだが、digコマンドでapexドメインを指定すれば、付随するcnameなどのサブドメインなどの情報も一覧で見れると思っていたがそれは違った。
サブドメインについての情報は個別で検索しないといけない。

なので自分は、上記の.digrcを設定した上で以下のように複数ドメイン情報を一括で取得する

$ dig example.com blog.example.com

【SendGrid】"sendgrid.me 経由"を消す方法

以下のページを参照

独自ドメイン利用(Sender Authentication)および設定時のDNSレコードについて、詳しく教えてください – サポート
使いやすくなった独自ドメイン利用設定機能(Sender Authentication)のご紹介 | SendGridブログ

以下を行えばよかった。

・Domain Authentication (SPF/DKIM設定)
・Link Branding(トラッキングドメイン設定)

【Rbenv】Ubuntu18.04上で、Ruby 2.3.1がインストールできない

以下のコマンドでエラーが発生

$ rbenv install 2.3.1
...
...

/usr/include/openssl/x509.h:728:1: note: declared here
 DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl))
 ^
Makefile:301: recipe for target 'ossl_x509crl.o' failed
make[2]: *** [ossl_x509crl.o] Error 1
make[2]: Leaving directory '/tmp/ruby-build.20200630231630.9214.C0DTvB/ruby-2.3.1/ext/openssl'
exts.mk:208: recipe for target 'ext/openssl/all' failed
make[1]: *** [ext/openssl/all] Error 2
make[1]: Leaving directory '/tmp/ruby-build.20200630231630.9214.C0DTvB/ruby-2.3.1'
uncommon.mk:203: recipe for target 'build-ext' failed
make: *** [build-ext] Error 2

どうやらopenssl系のエラーっぽい。

ピンポイントで素晴らしいQiitaの投稿があったのでそのとおりにやったらインストールできた。
Ubuntu18.04にrbenvを使ってRuby2.3インストールしたらコケた話 - Qiita

Ruby2.4未満のバージョンはoppenssl 1.1と互換性が無いっぽいとのこと。

なのでlibssl1.0-devを入れてあげると良いとのこと。

$ sudo apt install libssl1.0-dev

Vagrant × AnsibleでUbuntu18.04環境を設定してみる - Webサーバ編 -

全体像は、Webサーバ1台、DBサーバ1台をVagrantで設定し、Ansibleでそれぞれのサーバに設定を行う。

インストール

簡単な流れは
1)VirtualBoxをインストール
2)Vagrantをインストール
3)Vagrantfileを編集

1)と2)については以下の記事のとおりに設定。すごい簡単。
Vagrant+VirtualBoxでUbuntu環境構築 - Qiita

3)は以下の設定を行う。

使用するUbuntuのBoxイメージは「bento/ubuntu-18.04」を使用。

$ vagrant init bento/ubuntu-18.04

上記のコマンド実行後に、Vagrantfileが生成されるので、その中身を以下のように変更する。
1)ログイン時にどのホストにログインしているか分かりやすいようにホスト名をつける
2)固定IPを設定することで、Ansibleからアクセスできるようにする。(以下例では192.168.33.10)
3)AnsibleでNginxを設定した際に、http://127.0.0.1:8090/でアクセスしたいので、ポートフォワーディングの設定を行う
4)メモリは実際に想定されるサイズのメモリサイズを設定しておきたいので、とりあえず2GB(2048) を設定。

  config.vm.hostname = "dev-webserver"
  config.vm.network "private_network", ip: "192.168.33.10"

  config.vm.network "forwarded_port", guest: 80, host: 8090, host_ip: "127.0.0.1"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    # vb.gui = true

    # Customize the amount of memory on the VM:
    vb.memory = "2048"
  end

ネットワーク疎通確認は以下のコマンドで行う。

$ ping 192.168.33.10

Vagrant起動

起動

$ vagrant up

状態確認

$ vagrant status

全てのvagrant確認

$ vagrant global-status

シャットダウン

$ vagrant halt

再起動

$ vagrant reload

一時停止

$ vagrant suspend

一時停止から復帰

$ vagrant resume

実行中のマシンを停止し、削除

$ vagrant destroy

UbuntuにSSHでログイン

以下のコマンドでログインする

$ vagrant ssh
または
$ ssh vagrant@192.168.33.10

ログイン先の「/vagrant」は、Vagrantfileのディレクトリと同期しているので
ファイルの出し入れが必要な際はこのディレクトリを使用する。

ログアウトは単純にexitを打つだけ

$ exit

Sandbox環境を作成する

プラグインであるSaharaを使用する。サンドボックス環境を用意することでAnsibleによる試行錯誤(作ったり、壊したり)を行いやすいようにする。
詳細は以下のサイトを参考
VagrantにSaharaを導入 - Qiita

今回は、sshでサーバにログイン後、apt update&upgrade後にsandboxをonにした。
これでクリーンな環境にいつでも戻すことができる。

インストール

$ vagrant plugin install sahara

確認

$ vagrant sandbox status

sandboxモード開始

$ vagrant sandbox on

変更を決定

$ vagrant sandbox commit

変更を破棄し、ロールバック

$ vagrant sandbox rollback

sandboxモードを終了(commitしていないものは破棄される)

$ vagrant sandbox off

【Ansible】defaultsとvarsの違いって?使い分ける方法を調べた

vars/main.ymlにも変数が書けることは知っていたが、Ansibleを使い始めてから、ずっとdefaults/main.ymlを使用していた。
ただどのように使い分けるのかは知らないのでいたので、調べた内容をこの記事にまとめてみた。

色調べた結果、以下のサイトの説明が良かった。
Playbookを再利用しやすくするRoleの基本と共有サービスAnsible Galaxyの使い方 (2/4):Ansibleで始めるサーバ作業自動化入門(4) - @IT

defaultsとvarsの違いは読み込まれる変数の優先度です。defaultsはその名前の通り、変数のデフォルト値を意味し、優先度が最も低い変数になり、varsはvars_filesでのファイル読み込みと同じ優先度となります。

そのため、ユーザー名やパスワードのようなロールの利用者によって書き換えられることが望ましい変数はdefaults/main.ymlで定義し、設定ファイルのファイル名のようにロールの利用者が変更するべきではない変数はvars/main.ymlで定義するといいでしょう。

要は優先度。また使い方は上記のように

上書きされることが前提の変数は、最も優先度が低いdefaultsを使用し、
固定値、要は定数として使用したい場合は、優先度が高いvarsを使用する。

多くのroleではバージョン指定だったり、IDやPWなどの変更を許容する変数を使用したほうが使い勝手良いので
defaultsを基本的に使用し、上書き元の変数はhost_varsやgroup_varsで設定する方針にする。

[他参考]
Ansible2 変数の優先度 - Qiita

ムームードメインからNamecheapにドメイン移管してみた。

現在、使用しているレジストラはムームードメインなのだが、できればSSL証明書取得も同じアカウントで管理したり、TTL設定などの細かい設定もしたかったので
経験がてら、ドメイン移管を初めてやってみることにした。

どのレジストラに移管するか?

レジストラを選定するにあたり、以下のサイトを参考にする
Registrar Stats: Top Domain Registrars - DomainState.com

f:id:Thoames1212:20200608084738p:plain

このリストから以下の会社に絞った。

Godaddy (https://jp.godaddy.com/)
あまり評判が良くないのかも?
https://qiita.com/righteous/items/8f0fe26702c6877c05e7

Namecheap (https://www.namecheap.com/)
一番安い!WhoisGuardも永久無料

Name.com (https://www.name.com/)
ネットですごい参考になった記事の作者が使用していたので検討

Gandi.net
知り合いが使用していて、オススメされたので検討
ドメイン名取得するならこれからはGandi.netが良いと思った理由 - Qiita
ドメインレジストラ Gandi.net でリセラーとしてアカウント登録するメリットとデメリット - Qiita


結局、一番金額が安くて欲しかった機能もあるNamecheapを選んだ。
(Godaddyでも良かったが、個人的にはNamecheapのUIのほうが良かった)

ドメイン移管の流れ

以下のサイトさんを参考
ドメインを海外レジストラ「namecheap」に移管する方法(ドメイントランスファー) | From Okayama To Everywhere
ムームードメインからお名前.comへドメイン移管を行う
ドメイン移管の流れについてまとめてみました(ムームードメイン→お名前.com) | 大阪市天王寺区SOHOホームページ制作 | デザインサプライ-DesignSupply.-

1) ムームードメインのWHOIS情報の「情報公開」設定が「弊社情報代理公開」になっている場合は、自分の登録情報(お客様の情報)に変更

2) 1)を行うと表示される認証コード(Auth Code)をメモっておく。
※ ドメイン一覧→ドメインの詳細情報内

3) NamecheapでTransfer申請を行う。そのときに2)でメモった、Auth Codeを使用する。

すごい簡単。

疑問だったこと

1) ドメイン移管したら残っている期間はどうなるか?
自分の場合148日残っている段階で移管した。この場合、1年契約+残っている期間が適用され、結果的に513日間、ドメインが使用できることになった。

2) ムームードメインで代理公開を解除後、ドメイン移管申請を行うが、申請後からドメイン移管が完了するまでに代理公開に再設定可能か?
Namecheapのサポートに聞いてみたところ、そちら側で可能ならやっても問題ないとのことだったので、ムームードメインの代理公開を行ってみてがエラーが出た。
要はできなかった。

3) 移管元で設定していたDNS設定はどうなるか?
同じ設定がNamecheapでもされていた。素晴らしい。

ドメイン移管後

ドメイン移管後は、ムームードメインのドメイン一覧から移管したドメインが見えなくなるものだと思っていたが、すぐに消えない。
12時間後ぐらいには消えていなかったが、24時間後ぐらいに再度確認したら消えていた。

まとめ

ドメイン移管は思っていたよりすごい簡単だった。また移管してよかったと思うのが、Namecheapはサポートがすごく良かったこと。
ムームードメインは、お問い合わせフォームでしか直接サポートの人に連絡する方法がなく、しかもすぐに連絡が返ってこない。
でもNamecheapはLiveチャットサポートがあるので、チャットウィンドウを開けば30秒ぐらいですぐに対応してくれた。
英語でしか現在は対応してもらえないが、今後日本語のサポートができれば、かなり需要があると思う。

備考

ブラックフライデーや、サイバーマンデーをだとかなり安い金額でドメイン購入や移管ができるっぽい。