Twitterで、フォローしているユーザのツイートの特定のワードに反応して、
リプライを送るbotの作り方について。
最近、Twitter、というかSNS全般に疲れを感じ、特に見なくなってしまったのだが、
そうなってくるとプロテインを配布する業務を自動化しないといけない。
マインクラフト用に作成したTwitterBot用アカウントが以前からあり、
先日マインクラフト用サーバを止めてしまい、仕事がなくなってしまったため、プロテイン配布の仕事を与えた。
Twitterで、フォローしているユーザのツイートの特定のワードに反応して、
リプライを送るbotの作り方について。
最近、Twitter、というかSNS全般に疲れを感じ、特に見なくなってしまったのだが、
そうなってくるとプロテインを配布する業務を自動化しないといけない。
マインクラフト用に作成したTwitterBot用アカウントが以前からあり、
先日マインクラフト用サーバを止めてしまい、仕事がなくなってしまったため、プロテイン配布の仕事を与えた。
自宅の環境では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を使う機会が多く、会社で触ることも多い。
会社の場合、色々と厳しいためCLIについてもMFAを有効化している。
"MFAトークンを使用して、AWS CLI 経由で AWS リソースへのアクセス"する方法について、AWS公式が以下の通り説明している。
MFA トークンを使用して、AWS CLI 経由で AWS リソースへのアクセスを認証する方法を教えてください。
毎回セッショントークンを作成して環境変数に設定するか、認証情報ファイルを編集する必要があり、これが非常に面倒だ。
そこで、簡単なツールを作ってみた。
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.期限切れるよ、という通知だが、無償でこんな監視までしてくれてるのだなぁとちょっと驚いた。
# /usr/share/letsencrypt/letsencrypt-auto renew --force-renew && /bin/systemctl reload httpd調べてみると、certbot と呼ばれるものを使うように変わったらしい。
AnsibleのPlaybookの実行について、Jenkinsで管理したいなと思って
自宅環境を揃えてみた。その記録。
Playbookを書くとき、今までAnsibleサーバ上でVimで書いていたため、
別の端末からGitで連携して書きたいと考えていた。
構想
* Jenkins用のサーバを1台構築
* JenkinsのサーバをGitサーバとしても構築
* Jenkinsから自身のサーバにあるGitのリポジトリからコードを取得、Playbookの実行