thirose’s blog

openstackやpythonなどなど

ansible-vaultで作ったpasswordに改行が入るときの対応

ansible-vaultでパスワードを暗号化してセットしたつもりで展開されたら改行が入ってしまっていて、 以下のようなことになっていることがあります。 mysql_endpoint = mysql+pymysql://USER:PASSWORD @HOSTNAME:3306/database @から改行されてしまって、確認…

json.dumpsした値が期待した通りか確認するunittest

python3.7以前の辞書(dict)とJSONオブジェクトは順序立てられてません。 今回はだいぶ古いpythonなため、順序立てられていませんでした。 そのため、dictをjson.dumpsしたりすると、順番が崩れたりします。 オプションとして、 json.dumps(dict, sort_keys=T…

keyやクラス変数の確認

pythonにて、dictに特定のkeyあるかなーとか、クラス変数に期待した変数はあるかなーという確認する方法をたまに忘れるからメモです。 dict型 >>> dict = {'ptyhon_key': 'python_value', 'ruby_key': 'ruby_value'} >>> if 'java_key' in dict: ... print(d…

Drone CIで Python-MySQLを使おうとしたら少しハマったのでその対応

今までunittestとかなかったpython2で動いてたスクリプトがあって、あまりにも変更するのが怖いからとりあえずテスト書いて、CIで動くと便利だよねーって思い DroneCIの設定を始めました。 まずはこんな感じかなとdrone.ymlを準備しました。 --- kind: pipel…

特定のIPだけ許可したい時の判定方法

プライベートクラウドを運用していると、当然 DNS as a Serviceなんかも提供することになるのですが、OpenStackでは、Designateが第一選択肢として上がると思います。 そして、プライベートクラウドで外部IPを登録されてしまっては困るので、そういった部分…

「ジェームズ・クリアー式複利で伸びる1つの習慣」を読んで習慣の作り方を考える

今回読んだのは、「ジェームズ・クリアー式複利で伸びる1つの習慣」という本で、読むきっかけは知人がよかった言っていたからだ。自分は、飽きやすい方だというのを自覚していて何かとやめがちで、習慣とか作る前に大体飽きるか他のことに興味をもってしまう…

ひよこと学ぶ ITエンジニアのための インプット・アウトプット エッセンシャルガイド を読んで

ひよこと学ぶ ITエンジニアのための インプット・アウトプット エッセンシャルガイド techbookfest.org という本が出版されたので読んでみた。 仕事の中でまとめるドキュメントなども含めて、言語化したとにモヤッとすることがあったり、 ブログとかも途中で…

Pixel3でおサイフケータイを初期化する前にPixel3を初期化してしまった時のおサイフケータイの初期化方法

Pixel4aを買ったので、Pixel3(simフリー)を初期化して近くのゲオに持っていった。 そこで店員におサイフケータイが初期化されてないことを店員から告げられ、買取価格も26400円から100円(ジャンク品)になるとのことだったので、一旦買取は諦めて家に持ち帰っ…

龍高飯店

家の近くにあるおいしいと評判な中華を食べに行ってきた。 梅雨の合間の夏日でとても暑かったので、冷やし淡々麺を頼みました。 大きいトマトも入ってて辛さもちょうどよくとても美味しかったです。 ジャンボ鉄鍋焼餃子 4本セットなんですが、とっても大きく…

Docker-Compose を使って volumeをマウントするときにpermission errorが返ってくる

前提 Docker/Kubernetes 実践コンテナ開発入門 の 2.6 Composeによる複数コンテナの実行 で 以下のようにvolumesをマウントするところでの問題です。 version: "3" services: master: container_name: master image: jenkins: latest ports: - 8080:8080 vol…

python で json.loads() したときに 特定の制御文字列が入ってるとJSONDecodeErrorが返ってくる

問題 今回は以下のような文字列を json.loads() してみたときにおきた問題があったときの対応をまとめました。 sample_text = '{"key": "value \t value"}' 再現させる >>> import json >>> sample_text = '{"key": "value \t value"}' >>> >>> json.loads(s…

上海観光

Open Infrastructure Summitでの初中国、初上海。時間がなくてほとんど観光地については調べずに行きました。 日本から3時間程度で行ける国で、上海に行って思ったのは日本よりやってることが飛び抜けていてとても栄えてる印象でした。 幸い、少しだけ時間が…

Open Infrastructure Summit Shanghai

11/4~11/6に行われたOpen Infrastructure Summitに参加してきました。 初サミットは昨年のバンクーバーなので今回が2回目です。前回と違い今回は(通らなかったけど)proposalを出したし、ある程度背景もわかった状態での参加なので前回より理解度は高いかと思…

英語の復習メモ

expression should have + 動詞の過去分詞 should have ~: ~すべきだった という表現になるのですが、どういった場面で使われるのか、というと、 たとえば、I should've introduced myself. I'm ~ みたいな何かしなくていけないけどするの忘れてましたねー。…

keystoneの複数の認証メソッドが絡んだ認証の問題とその解決

概要 keystoneの複数の認証方法がある環境でおこった、一部ユーザがログインできなくなる問題がありました。 今回の記事ではkeystoneの認証の流れと、その中でおこった今回の問題の原因への対応をまとめました。 keystone Keystoneとは、OpenStackの認証やユ…

designateでworkerを2以上に増やすとservice_statusが更新されない原因と解決策

English version -> medium.com designateの各サービスのworker数をデフォルトの1から2以上にした時、service_statusが更新されないのでその原因を調べた。 まず、worker数が1の時の起動の流れを確認 すると、designate/service_status.HeartBeatEmitter.sta…

designateでdeadlockが発生する原因と解決手段

English follow is here => Designate got the DBDeadLock – Hirose Takahito – Medium designateを使っていてたまにdeadlockがおきていることに気がついたので、その原因を探っていきました。 原因は登録/更新/削除のフローで起きる構造になっていたのでそ…

KeystoneのTime-based One-time Password(TOTP)を設定してみた

TOTPとは、どういうログインになるのか...それを知りたく設定してみました。なお当初期待していたログインはMulti Factor Authentication(MFA)的なのを期待していましたが、挙動としては期待していたものと少し違いました。 ここで自分のやりたかったことち…

A tour of Go の More Types の exercise

Exercise: Slices この問題を読んでいくと、 この関数は、長さ dy のslice と書かれているので、imageのsliceのlengthはdyが入ることになる。そうなると、image := make([][]uint, dy) となるのが自然な気がします。 次に、各要素が8bitのunsigned int型で長…

A tour of Go の Flow control statements の exercise

最近インフラ周りでも、golangのOSSが増えてきてコードを読まないといけないことが増えたからgolangのチュートリアルで書き方を覚えようと思い始めた。 exercise-loops-and-functions.go 関数とループを使った簡単な練習として、平方根の計算を実装してみま…

yumでDBが壊れた場合の対処

稀にしか遭遇しなくて、毎回忘れて調べてるので備忘録 久々にyum upgradeとかyum installとかしようとするとエラーがでます。 error: rpmdb: BDB0113 Thread/process 159007/140390399924224 failed: BDB1507 Thread died in Berkeley DB library error: db5…

flask+gunicornでgeventを使い、非同期処理にする

flask+gunicornなバックエンドでworker-classがデフォルトのsyncで同期処理をしていたのを非同期処理ができるように設定を変更しました。 同期処理の何が問題かというと、backendの処理に時間がかかる and プロセス数以上にリクエストがきてしまった場合、pr…

Designateのビルドをしてたら、UnicodeEncodeErrorがでてきた

今回はOpenStackのDesignateでおきたエラーですが、他のミドルウェアでも起きる可能性はなくないと思うので、エラーとその対応をまとめます。 今回はpythonの2.7.13が必要だったけど、CentOSのpythonが2.7.5だったため、pyenvを入れて対応しようとしていた時…

SAMLを使ったSSOログインの設定と問題

SAMLを使ったログインをOpenStackで実現する場合は、mellon または shibbolethといったモジュールを使用することになります。参考資料 今回はmellonとは、mod_auth_mellon のことで、それを検証してみたのでその中で気が付いた問題をまとめました。 セットア…

Ansibleでvault使う時は変数ごと暗号化する

OpenStackをdeployするのにAnsibleとか使うと便利だったり?します。 便利かどうかはさておき、Vaultをファイル単位で暗号化しgithubで管理し始めると、何をどう変更したのかわからない。 という問題が発生します。そこで変数ごと暗号化していくのが変更を管…

keystoneのtoken

KeysoneのTokenには、Project Scoped Token, Domain Scoped Token, Unscoped Tokenがあります。(System scoped tokenは除外します) 各Tokenにどういう用途があるのか、まとめました。 Project Scoped Token これは、管理者よりユーザが一番使うであろうToken…

Moto E5を買った

昨年の夏ぐらいからそろそろiPhone5sから他のに変えようと考えはじめ、google pixelとかpixel2とか考えてたらいつのまにか1年が経とうとしてたこのタイミングでMoto E5を見つけたので購入。 当初は片手で操作出来ないと嫌だなーというのが第1にあったんだけ…

python3.5.0だけtracebackの返値が違っていたバグに当たった

今回はたまたま、openstackのnovaclientを使っていたらバグを発見しました。 その時のログはこちら -> This report is written about novaclient. · GitHub バグの内容 python3.6を普段使ってるけど、もともとpython3.5.0で動いていたスクリプトで、普段と違…

バンクーバーに行ってきた

OpenStack Summitに参加するため、バンクーバーに行ってきました。そっちの感想等は他のブログにまとめています。 最近は仕事で英語が必要になり、レアジョブで英会話レッスンをひたすらしてたけど不安といえば少しは不安でしたが、心強い英語が堪能な同僚が…

OpenStack Summit Vancouver 2018

最近仕事でOpenStackの開発・運用に関わっていてその関係もあり、OpenStack Summitに参加させてもらいました。 OpenStack Summit | Vancouver 2018 OpensStackって何? そもそもOpenStackって何?って思った方もいるかと思いますが、プライベートクラウドを…