かべぎわブログ

技術的なことについてかけたらいいな…

rsyncでは最後のスラッシュのありなしに注意すること

概要 rsyncコマンドでちょっとはまったというか忘れがちというかやってしまいがちなのでメモ。 ポイント!!!! rsyncコマンドでは、コピー元のPATHの最後の/をつけるか否かでその挙動が変わります!!! たとえば以下のとおり。 コピー元の最後に/を付ける…

boto3のclientとresourceのちがい

AWS

概要 boto3におけるclientとresourceのちがいについて雑に調べたのでまとめる。 client 低レベルのサービスアクセスAPI 呼び出すたびにターゲットとなるリソースを明示的に指定する必要がある そのため抽象化するには不向きかも レスポンスがJSON形式 resour…

シェルスクリプトでFizzBuzzをつくる

概要 なんだかんだで一度もやったことがなかったのでシェルスクリプトでFizz Buzzをつくってみました。 スクリプト おわりに ワイン飲みながら所要時間6分くらい なかなかなのでは? [改訂第3版]シェルスクリプト基本リファレンス ──#!/bin/shで、ここまでで…

Ansibleのwin_fileでファイルやフォルダを作成/削除する

概要 Ansibleのwin_fileモジュールを利用して、Windows上にファイルやフォルダを作ったり、それを削除してみたいと思います。 ファイルを作成する 以下のようなかんじでファイルを作成することができます。 ファイルが存在しない場合は空ファイルが作成され…

rsyncでサーバ間の同期を鍵認証で行う

概要 rsyncコマンドをつかって鍵認証でログインする2台のサーバの同期をしてみます。 コマンド 鍵認証のサーバ間でrsyncを利用する際は-eオプションのあとに、sshコマンドを記述します。 以下はリモートからローカルに同期をとるときのコマンド $ rsync -av …

haltとかrebootとかはsystemctlのシンボリックリンクだった

概要 haltとかrebootとかpoweroffとかそういう起動/停止/再起動系のコマンドはsystemctlのシンボリックリンクだった。 こんなかんじ $ ls -l `which halt` lrwxrwxrwx 1 root root 16 1月 16 18:45 /usr/sbin/halt -> ../bin/systemctl $ ls -l `which reboo…

systemctlでよくつかうオプションまとめ

概要 なんか意外と忘れがちなsystemctlコマンドのよくつかいそうなオプションをまとめてみる。 概要 サービスの起動 サービスの停止 サービスの再起動 サービスのリロード 自動起動の有効化 自動起動の無効化 自動起動が有効か確認する ユニットがアクティブ…

Lambda(Python)でAMIとそれに紐付いたスナップショットの世代管理をする

概要 Lambda(Python) を利用してAMIとそれに紐付いているスナップショットの世代管理をしてみようと思います。 スクリプト例 ちょっとした説明 タグにauto_backupと書いてあるAMIの世代管理をしてくれます。 上の方の変数generationに指定した数だけAMIを保…

systemdのユニットの種類についてまとめる

概要 systemdのユニットの種類について勉強し直したのでまとめメモ。 そもそもsystemdとは? Linuxの起動システムで、UpstartやSysVinitの代替として開発された。 2014年にRHEL7/CentOS7に採用された。 2015年にDebian/Ubuntuに採用された。 systemdはユニッ…

$RANDOMの精度があまりよくないという話をきいたのでしらべてみる

概要 $RANDOMは乱数としてはそんなに精度が高くないみたいなはなしを聞いたような聞かなかったようなきがしたので雑に調べてみる。 調べ方 echo ${RANDOM}を無限ループでぶん回す 1億行くらいになったら止める ばらつきを集計する 1. echo ${RANDOM}を無限ル…

シェルスクリプト上で乱数を扱う方法まとめ3選

概要 シェルスクリプトを書いていて、乱数が使いたいなーと思ったときにつかえるコマンドをご紹介します。 ${RANDOM}をつかう bashのシェル変数である${RANDOM}を利用します。 この変数は参照されるたびに0~32767の値を返します。 手っ取り早いですが、あま…

Pythonのshutilのcopytreeでファイルを再帰的にコピーする

概要 Pythonのshutilのcopytreeを利用してファイルを再帰的にコピーしてみようと思います。 コード例 shutil.copytree('コピーもと', 'コピーさき') です。 実行してみる forudaBBBがないことを確認 $ ls -l forudaAAA/ forudaBBB/ ls: forudaBBB/ にアクセ…

Pythonのshutilのcopyfileでファイルをコピーする

概要 Pythonのshutilのcopyfileを利用してファイルをコピーしてみようと思います。 コード例 shutil.copyfile('コピーもと', 'コピーさき') です。 実行してみる saki.txtなんてものがないことを確認(moto.txtはある) $ ls -l moto.txt saki.txt ls: saki.…

Pythonのpathlibのmkdir()でディレクトリを作成する

概要 Pythonのpathlibのmkdir()をつかってディレクトリを作成してみます。 コード例 実行してみる ディレクトリができた!!! $ ls -ld /home/ec2-user/tsukuri ls: /home/ec2-user/tsukuri にアクセスできません: No such file or directory $ ./pathlib_m…

Pythonのpathlibで相対パスと絶対パスを取得する

概要 Pythonのpathlibモジュールを利用して、相対パスと絶対パスを取得してみたいと思います。 コード例 実行してみる こんなかんじで相対パスと絶対パスが出力されていることがわかります。 $ ./blog_python/path.py blog_python/path.py /home/ec2-user/bl…

Ansibleのshellとwin_shellに複数行のコマンドを記載する

概要 Ansibleのshellとwin_shellモジュールの中で複数行にわたるコマンドを記載してみたいと思います。 playbook例 実行してみる こんなかんじでechoが3行出力されていることがわかる。 $ ansible-playbook shell_fukusuu.yml -v PLAY [localhost] *********…

Route53のホストゾーンを削除するときはレコードセットを全部削除しておく

AWS

概要 Route53でHosted Zoneを削除するときになんかエラーがでたのでそれの解決方法 こんなエラーがでた Before you can delete a hosted zone, you must first delete all resource record sets except the NS and SOA resource record sets for the zone ap…

Lambda(Python)でインスタンスの特定のタグの値がなんなのかを出力する

概要 Lambda(Python3)をつかってEC2インスタンスについているあるタグの値がなんなのかを出力してみます。 スクリプト tag_keyに出力したいタグのkeyを指定します。 実行結果 たとえば、こんなかんじでタグがついていたとします。 それをこのLambdaを実行す…

Ansibleのstart-atを利用してplaybookの途中から実行する

概要 Ansibleのplaybookを途中から実行する方法をご紹介します。 これを利用することでplaybookの途中でエラーでとまっちゃったんだけど初めからやり直すのめんどくさいなーというときに便利です!!! playbook例 playbookはなんでもいいです。 てきとーにd…

Lambda(Python)で特定のVPCの中のサブネットの一覧を出力する

概要 Lambda(Python)を利用して、特定のVPCの中のサブネットの一覧を出力してみたいと思います。 スクリプト例 Lambdaのスクリプト的にはこんなかんじ。 実行結果 { 'Subnets': [{ 'AvailabilityZone': 'ap-northeast-1c', 'AvailableIpAddressCount': 250, …

Pythonで配列をuniqする

概要 Pythonで配列の要素をuniqして、重複を排除してみたいと思います。 コード例 こんなかんじの配列があったとします。 test_array = [ 'AAA', 'BBB', 'BBB', 'CCC', 'AAA' ] それをこんなかんじでsetにつっこんであげます。 uniq_array = list(set(test_a…

CloudWatchで日と曜日を指定するときはどちらかに?をつかう

AWS

わりと忘れがちなのでメモ。 概要 CloudWatchのスケジュールのcron式で日と曜日を指定するときに、ちゃんと設定しているはずなのに以下のようなメッセージがでてきたのでそれの回避方法です。 Parameter ScheduleExpression is not valid. 回避方法 こんなか…

Pythonでいま昭和何年か調べる

概要 新元号になっても平成を使い続けるかもしれないというニュースを見たので。 平成に対応できずに便宜上昭和を使い続けているレガシーな企業で役に立つと思う(役に立つとは言っていない) できたもの 実行してみる $ date 2018年 5月 16日 水曜日 21:15:01…

Ansibleでjinja2のifをつかって条件分岐させる

概要 Ansibleのplaybookの中でjinja2の記法をつかって条件分岐させてみたいと思います。 playbook例 prodがhonならhonban、kaiならkaihatsuと出力するように設定しています。 実行してみる honbanと出力されていることがわかります。 $ ansible-playbook jin…

Ansibleのwait_for_connectionをつかってOSの再起動を待つ

概要 Ansibleのwait_for_connectionを利用してターゲットノードのOSを再起動の完了を待ってみようと思います。 playbook例 shellでサーバの再起動を実施しています。asyncとpollを指定することでsshコネクションが切断されても処理をそのまま続けることがで…

AnsibleでターゲットのIPアドレスを取得する

概要 Ansibleを利用してターゲットノードのIPアドレスを取得してみたいと思います。 playbook例 実行してみる IPアドレスが出力されていることがわかります! $ ansible-playbook default_address.yml -v PLAY [target] ***********************************…

複数のAWSマネジメントコンソールを利用するときのChromeの設定のすすめ

AWS

概要 AWSのマネジメントコンソールを複数アカウント/ユーザ分利用することがまれによくあると思います。 別のアカウントでマネジメントコンソールを立ち上げたときに以下のような画面が出てしまって、セッションが全部切り替わってしまって、あーーーーーー …

Pythonで平成があと何日あるのか計算する

概要 Pythonをつかって平成があと何年で終わってしまうのか計算してみたいと思います。 前提 2019/05/01から新元号になります。 というわけで平成最後の日は2019/04/30です。 できたもの こんなかんじでやってます。 標準ライブラリのdatetimeを利用して計算…

Ansibleのblockinfileモジュールをつかってテキストファイルに行を追加する

概要 Ansibleのblockinfileモジュールをつかってテキストファイルに任意の行を追加してみたいと思います。 playbook例 実行してみる $ ansible-playbook blockinfile.yml -v PLAY [localhost] ************************************************************…

Ansibleのreplaceモジュールをつかって文字列を置換してみる

概要 Ansibleのreplaceモジュールを利用して、テキストファイルなどの文字列を置換してみようと思います。 playbook例 ちょっとした説明 destで置換したいファイルを指定します。 regexpで置換したい文言を指定します(正規表現可) replaceで置換後の文言を指…