Twitterのプロテイン配布bot

Twitterで、フォローしているユーザのツイートの特定のワードに反応して、
リプライを送るbotの作り方について。

最近、Twitter、というかSNS全般に疲れを感じ、特に見なくなってしまったのだが、
そうなってくるとプロテインを配布する業務を自動化しないといけない。

マインクラフト用に作成したTwitterBot用アカウントが以前からあり、
先日マインクラフト用サーバを止めてしまい、仕事がなくなってしまったため、プロテイン配布の仕事を与えた。

続きを読む

CentOS7でbootできなくなったときの対処

自宅の環境ではKVM上でいくつかの仮想サーバが動いている。
仮想サーバのOSはCentOS7.8で、yum-cronを動かして放置していた。
先日、久しぶりにOS再起動をしたところ、OSが起動できなくなってしまった。
起動時のログを見ていると、以下のログが出ていた。

[    1.013801] List of all partitions:
[    1.015108] No filesystem could mount root, tried: 
[    1.016734] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    1.019481] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.0-1127.18.2.el7.x86_64 #1
[    1.022194] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
[    1.023881] Call Trace:
[    1.025034]  [<ffffffffb577ffa5>] dump_stack+0x19/0x1b
[    1.026803]  [<ffffffffb5779541>] panic+0xe8/0x21f
[    1.028402]  [<ffffffffb5d8b794>] mount_block_root+0x291/0x2a0
[    1.030085]  [<ffffffffb5d8b7f6>] mount_root+0x53/0x56
[    1.031749]  [<ffffffffb5d8b935>] prepare_namespace+0x13c/0x174
[    1.034253]  [<ffffffffb5d8b412>] kernel_init_freeable+0x222/0x249
[    1.036027]  [<ffffffffb5d8ab28>] ? initcall_blacklist+0xb0/0xb0
[    1.037817]  [<ffffffffb576e6b0>] ? rest_init+0x80/0x80
[    1.039407]  [<ffffffffb576e6be>] kernel_init+0xe/0x100
[    1.040978]  [<ffffffffb5792d37>] ret_from_fork_nospec_begin+0x21/0x21
[    1.042843]  [<ffffffffb576e6b0>] ? rest_init+0x80/0x80
[    1.044603] Kernel Offset: 0x34000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)

rootのファイルシステムがマウントできず、カーネルパニックを起こしているらしい。
調べてみた結果、yumとかで新しいカーネルバージョンにアップデートされると、
上記のエラーメッセージが出て、できなくなることがあるらしい。
対処としては、OS起動時にカーネルバージョン選択画面が出てくるので、
古いカーネルバージョンを指定して起動してあげれば起動できるようにはなるらしい。

さて、それはわかったが、KVMだとそれをどうやればいいんだろうということだ。
GUI環境がまったくなく、起動時にカーネルバージョンを指定することができない。
KVMのコマンドでカーネルバージョンの指定をする方法等調べてみたが、
その方法は見つけることができなかった。

直接bootの設定ファイルを書き換えて対処できないかと思考錯誤してみて、対処できたので、その方法をまとめる。

続きを読む

AWS MFAが有効になっているCLIのアカウント

最近、AWSを使う機会が多く、会社で触ることも多い。
会社の場合、色々と厳しいためCLIについてもMFAを有効化している。
"MFAトークンを使用して、AWS CLI 経由で AWS リソースへのアクセス"する方法について、AWS公式が以下の通り説明している。
MFA トークンを使用して、AWS CLI 経由で AWS リソースへのアクセスを認証する方法を教えてください。

毎回セッショントークンを作成して環境変数に設定するか、認証情報ファイルを編集する必要があり、これが非常に面倒だ。

そこで、簡単なツールを作ってみた。

続きを読む

Let’s Encryptの更新

先日、Let’s Encryptからメールが来た
Your certificate (or certificates) for the names listed below will expire in 20 days (on 29 Jan 19 18:00 +0000). Please make sure to renew your certificate before then, or visitors to your website will encounter errors.
期限切れるよ、という通知だが、無償でこんな監視までしてくれてるのだなぁとちょっと驚いた。
しかし、crondで定期的に更新するよう設定していたのに、いつの間にか動かなくなっていたらしい。
昔書いた設定時の記事はこちら
その時に設定していたコマンドは以下
# /usr/share/letsencrypt/letsencrypt-auto renew --force-renew && /bin/systemctl reload httpd
調べてみると、certbot と呼ばれるものを使うように変わったらしい。
このcertbotというものについて、WebrootプラグインとStandaloneプラグインというものがあり、
それぞれ特徴がある。それぞれの仕組みを解説しつつ、更新方法について記録。
なお、環境はCentOS7でApacheを動かしている環境となっている。 続きを読む

AnsibleとJenkins連携

AnsibleのPlaybookの実行について、Jenkinsで管理したいなと思って
自宅環境を揃えてみた。その記録。

Playbookを書くとき、今までAnsibleサーバ上でVimで書いていたため、
別の端末からGitで連携して書きたいと考えていた。

構想
* Jenkins用のサーバを1台構築
* JenkinsのサーバをGitサーバとしても構築
* Jenkinsから自身のサーバにあるGitのリポジトリからコードを取得、Playbookの実行


続きを読む