2019-01-01から1年間の記事一覧

DockerfileのCMDでワイルドカードを使用する

以下のようにCMDにワイルドカードを含むDockerfileを作成し、実行するとエラーになってしまう。 $ cat Dockerfile FROM busybox CMD ["ls", "/bin/*"] $ docker run --rm built_image ls: /bin/*: No such file or directory リファレンスを参照すると、シェ…

docker build時に名前解決でエラーになる

docker buildすると以下のようなエラーが出力されてしまう。 Failed to open TCP connection to github.com:443 (getaddrinfo: Try again) (SocketError) 環境 macOS 10.14.6 docker 19.03.2 対策 以下にて、docker daemonにDNS設定を追加する。 Preferences…

SSH越しにroot権限が必要なテキストの内容をコピペする

$ ssh -t hostname "sudo cat /var/log/messages" | pbcopy もしくは、 $ ssh hostname "su - -c 'cat /var/log/messages'" | pbcopy 必要に応じてパスワードを入力する。 環境 macOS 10.14.6 参考 ssh - SSH先のテキストの内容をローカルのクリップボードに…

AnsibleでAWSの任意のNATゲートウェイを削除する

NATゲートウェイは、存在するだけで1時間ごとに課金される模様(料金 - Amazon VPC | AWS)。 不要になったら簡単に削除できるように、Ansible化しておきたい。 環境 Ansible 2.8 方針 ec2_vpc_nat_gateway_factsモジュールのfiltersオプションを使用して、…

MySQLでRENAME DATABASEするワンライナー

MySQLに"RENAME DATABASE"構文は存在しないため、"RENAME TABLE"構文で全テーブルをリネームする手法が取られるようです。 環境 MySQL 5.7 ワンライナー new_db_name、old_db_nameを適宜置き換えてください。 パスワードは、お好みの方法で指定してください…

Gitでリモートブランチの更新の有無を戻り値で判定する

Git

git diffにquietオプションを指定すると、戻り値で判定できる。 差分がなければ0が返り、あれば1が返る。 $ git diff --quiet master origin/master $ echo $? 0 $ git reset --hard xxxxxx $ git diff --quiet master origin/master $ echo $? 1 環境 git …

Ansibleメモ

環境 Ansible 2.8 registerを使わずに、なければ空のファイルを作成し、あれば何もしない - name: Create an empty file if file not exists copy: dest: /tmp/file.txt content: '' force: no 追加したyumリポジトリを無効化する - name: Disable epel repo…

Ansibleでgroup_varsが読み込まれないと思ったら

Ansibleでgroup_varsが読み込まれないとしばらく悩んでいたら、デフォルトでは変数を優先度に従って上書きするようだ。 $ cat group_vars/db.yml mysql: root: password: password $ cat host_vars/db1.yml mysql: cnf: server_id: 100 上記の場合、host_var…

Ansibleで接続ユーザー名とホームディレクトリを取得する

ansible_factsから取得できる。 環境 ansible: 2.8.0 例 tasks: - name: debug debug: var=ansible_facts['env']['USER'] - name: debug debug: var=ansible_facts['env']['HOME'] 参考 Using Variables — Ansible Documentation

EC2からSoftetherVPNクライアント接続したい

EC2をSoftetherVPNクライアントにしようとして、接続時に少々トラブったのでメモ。 Ubuntu16.04では、問題なかった。 環境 Amazon Linux 2 SoftEther VPN Client Ver 4.29 インストール VPN Serverのインストール手順を、適宜クライアントに読み替えてインス…

Rubyでバイナリ(ASCII-8BIT)文字列を扱うならString#bが便利

Rubyで文字列をバイナリ(ASCII-8BIT)エンコーディングで扱いたいときは、String#bが便利です。 "\xFF\x00".b.encoding # => #<Encoding:ASCII-8BIT> 環境 Ruby 2.6.1 参考 class String (Ruby 2.6.0) 関連 RubyでString.newデビューした - 料理とソフトウェアは似ている</encoding:ascii-8bit>

RubyでString.newデビューした

Rubyでバイナリ文字列と文字列リテラルを比較すると、、、 it { expect([255].pack("v")).to eq "\xFF\x00" } Failure/Error: it { expect([255].pack("v")).to eq "\xFF\x00" } expected: "\xFF\u0000" got: "\xFF\x00" (compared using ==) 環境 Ruby 2.6.…

Rubyをドキュメント生成せずにbuild(install)してみた

Rubyをドキュメント生成せずにbuild(install)した場合、ファイルサイズをどの程度削減できるか比較してみた。 環境 Ruby 2.6.1 ruby-build 20190130 ドキュメント有り $ ./xbuild/ruby-install 2.6.1 /opt/ruby $ du -sh /opt/ruby/ 154M /opt/ruby/ ドキュ…

Gitをソースからビルドしたらなんかでかい

Git

ファイルサイズがでかい 最新バージョンのGitを使いたかったので、ソースからビルドすると、 パッケージインストールした場合と比べて、ファイルサイズが大きい気がする。 バージョンも環境も違うことを承知の上で、サイズを比較すると、、、 ソースからビル…

Debian8(Jessie)のタイムゾーンを非対話的に変更する

環境 Debian8(Jessie) 方法 # echo "Asia/Tokyo" > /etc/timezone # dpkg-reconfigure -f noninteractive tzdata

docker buildがcode 137でexitする

どうやら、Dockerに割り当てたメモリが枯渇すると発生する模様。 メモリの割当を増やすと解決しました。 環境 macOS 10.14.2 Docker 18.09.1 参考文献 Docker Container exited with code 137 `build` fails on component non-zero exit code when `docker b…

RubyのI18n.tで明示的にロケールを指定する

I18n.t("hello", locale: :ja) 参考文献 Rails国際化 (I18n) API | Rails ガイド 備考 Hashで指定することを忘れるのでメモ。

RubyのArrayから順序を保ったまま固まりを抽出する

例えば、こんな感じのデータがあったとします。 data = [ { x: 0, y: 1 }, { x: 1, y: 1 }, { x: 2, y: 1 }, { x: 3, y: 0 }, { x: 4, y: 0 }, { x: 5, y: 1 }, { x: 6, y: 1 }, ] ここから、順序を保ったまま、y == 1のデータだけを抽出したいとします。 En…