かべぎわブログ

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

Ansibleのwith_nestedの動きを確認してみる

概要 with_nestedディレクティブをつかうと2つ以上の配列をまわすことができます。 playbook例 こんなかんじのplaybookでwith_nestedされた結果をdebugで出力してみます。 動きを見てみる 実際に実行してみて動きを見てみます。 ansible-playbook -i ansible…

Ansibleのwith_itemsで複数の変数を利用する

概要 Ansibleのwith_itemsディレクティブで複数の変数を利用する方法をご紹介します。 playbook例 こんなかんじでwith_itemsの項目を{}で囲ってあげます。 実行例 msgの部分を見るとちゃんと指定したとおりに出力されていることがわかる。 $ ansible-playboo…

Ansibleのwith_itemsで一気にいろいろyumインストールする

概要 Ansibleのwith_itemsディレクティブというループ処理(シーケンシャル呼び出し処理)を実行できるものを利用して、いろいろ一気にyum installしてみたいと思います。 playbook例 playbookはこんなかんじです。 今回の例ではdockerとnginxをインストールし…

Ansibleでshellをつかってもchanged_whenで絶対にchangedにしない

概要 Ansibleでshellやcommandモジュールを利用すると、結果が常にchangedになってしまいます。 なんか気持ち悪いなーということで絶対にchangedにしない方法です。 playbook例 changed_when: Falseとすることで絶対にchangedにはならなくなります。 実行例 …

cd - で一つ前にいたディレクトリに戻る

概要 cd -コマンドを利用することで一つ前に自分が居たディレクトリに戻ることができます。 コマンド例 $ pwd /Users/kabegiwa/Downloads $ cd $ pwd /Users/kabegiwa $ cd - /Users/kabegiwa/Downloads おわりに これでまちがってcd実行してホームディレク…

pipをプロキシ環境で利用する

概要 pipコマンドをプロキシ環境で利用する方法についてご紹介します。 コマンド例 こんなかんじでオプションをつけてあげることでプロキシをとおした環境でもpipを利用することができます。 pip install awscli --proxy http://example.proxy:8080 [試して…

Google Apps Script でカレンダーをスプレッドシートにエクスポートする

概要 Google Apps Scriptを利用して自分のGoogle カレンダー上の1日分の予定をスプレッドシートにエクスポートしてみたいと思います。 スクリプト スクリプトはこんなかんじ CalendarApp.getDefaultCalendar().getEvents(oneDayAgo, now)でカレンダーの予定…

Ansibleのec2.pyの結果のJSONをホストグループ形式のファイルにしてみる

AnsibleでAWSのイントラを管理するときに利用するec2.pyの結果で応答されるJSONを人間に優しいホストグループ形式に変換してみたいと思います。 スクリプトはこんなかんじ スクリプト自体はこんなかんじです。 シェルスクリプトでsedで変換かけているだけで…

commコマンドで2つのテキストファイルの比較結果を出力する

あんまり知られてないような気がするけれど結構便利なcommコマンドについてまとめてみます。 commコマンドとは? commコマンドとは、2つのソートされたテキストファイルを比較できるコマンドです。 ファイルを比較して、片方のファイルにしか存在しない行や、…

Ansibleでプロキシ経由でインターネットに接続する

概要 社内イントラなど、プロキシを経由しないとインターネットと接続できないのでyumでインストールができない。など色々あると思います。 今回はAnsibleでプロキシを経由してインターネットと接続してみたいと思います。 playbook例 以下のようにenvironme…

Ansibleで新規ホストへのssh接続時にyes/noを確認しないようにする

概要 Ansibleではターゲットへssh接続をしています。 ですので、sshのデフォルトの動きとして新規ホストへの接続時は以下のように「接続するかい?いいかい?」と聞かれます。 Are you sure you want to continue connecting (yes/no)? ですので今回はそれを…

AnsibleでAnsibleをインストールする

概要 AnsibleでAnsibleをインストールします。 なんとAnsibleを実行するだけでAnsibleをインストールすることができます。 playbook rpmをwgetしてきて、epelリポジトリを追加して、yumでAnsibleを実行しています。 おわりに おわれ Ansible実践ガイド 第2版…

Pythonで引数をランレングス符号化する

趣味と実益を兼ねてPythonでランレングス符号化(圧縮)するスクリプトを書きました。 スクリプト こんなかんじ。 #実行結果 こんなかんじで利用できます。 $ ./run_length.py aaabbbbbcccdddefffgggggh a3b5c3d3e1f3g5h1 おわり おわれ Python 1年生 体験し…

AnsibleでCentOSにAWSCLIをオフラインインストールする

概要 Ansibleを利用してCentOSにAWSCLIをオフラインインストールしてみます。 playbook例 ちょっとした制限事項と前提 なんらかの方法でAnsibleを実行するサーバにAWSCLIのバンドルされたインストーラを格納する必要があります。 ↓これ https://s3.amazonaws…

Ansibleでwhenをつかってエラーハンドリングしてみる

概要 whenディレクティブを利用してAnsibleのplaybookでエラーハンドリングしてみます。 概要 playbook ちょっとした解説 実行結果 コピーの結果ファイルが変更されたとき コピーしてもファイルに変化がなかったとき コピーが失敗したとき コピーがスキップ…

AnsibleのGathering Factsを実行しないようにする

今回はansible-playbookを実行するときに毎回実行されるGathering Factsを実行しないように設定してみたいと思います。 (意外と実行に時間がかかってるようなきがするので) そもそもGathering Factsってなにやってんの? ターゲットノードのメタデータ(IPア…

Ansibleのファクト変数を確認する

Ansibleのファクト変数を見てみたいと思います。 そもそもファクト変数とは? ターゲットノードのメタデータが格納されている変数のことです。 IPアドレスからCPUやディスクの情報などを見ることができます。 特に意識しなくてもデフォルトでansible-playboo…

Pythonで配列の要素を入れ替える

Pythonで配列の要素を入れ替える方法についてご紹介します。 こんなかんじ 実行するとこんなかんじ $ ./array_element_change.py ['A', 'B', 'C'] ['B', 'A', 'C'] ['A', 'B', 'C'] ['C', 'A', 'B'] まとめ array[0],array[1] = array[1],array[0]とするだけ…

Pythonで引数を昇順でバブルソートする

趣味と実益を兼ねてPythonでバブルソートするスクリプトを書きました。 スクリプト こんなかんじ。 #実行結果 こんなかんじで利用できます。 $ ./bubble_sort.py 2 3 1 4 5 ['1', '2', '3', '4', '5'] おわり おわり Python 1年生 体験してわかる!会話でま…

Linux構築時にいれておくと便利なhistoryの設定

概要 Linux構築時にいれておくとのちのちすごく便利になるhistoryの設定をご紹介します! ご紹介するやつ 概要 ご紹介するやつ タイムスタンプをつける コマンド実行時に出力される行数を設定する .bash_historyに記録する行数を設定する 記録しないコマンド…

PythonでImportError: bad magic number が出たときの対処法

事象 コマンドライン上でPythonを実行したところ、以下のようなエラーがでました。 その対処法です! ImportError: bad magic number in 'pathlib': b'\x03\xf3\r\n' 対処法 古いバージョンの.pycファイルがそのまま残ってしまっていたみたいなので削除。 fi…

pathlibで絶対パスを取得してみる

Python3.6で使いやすくなったと言われているpathlibをつかって絶対パスを取得してみたいと思います。 スクリプト 実行結果 このスクリプトを実際に実行してみるとこんなかんじです。 そのスクリプトが置かれている絶対パスと、スクリプト名を含む絶対パスが…

etckeeperをつかって/etcを管理してみる

etckeeperという/etc配下のファイルを管理するツールを使ってみたいと思います。 etckeeperとは? こんなかんじのツールです。 /etc配下を自動で管理してくれる Gitで管理できる yumコマンドが実行されると自動でコミットしてくれる 日付が変わると(cron.dai…

Amazon Linux2 に自作サービスを追加する

今回はAmazonLinux2のSystemdに自作サービスを追加してみようと思います。 手順 サービスとして追加するスクリプトの準備 ユニットファイルを作成する 各項目のちょっとした解説 サービスとして認識されたかどうか確認する サービスを有効化(enable)する サ…

Amazon Linux2 にepelリポジトリを追加する

概要 AmazonLinux2で利用できるamzn2-coreリポジトリではインストールできないものがでてきたのでリポジトリを追加する方法をメモ。 RHEL7用のリポジトリを追加しているだけ リポジトリを追加する手順 概要 リポジトリを追加する手順 すでに追加されているyu…

Joly Joyの真空パック器を買った

なんかわかんないけど急に素材の鮮度に意識が高くなったので真空パック器を買った。 雑開封の儀 外箱はこんな感じ 箱を開ける 本体 真空パックにするときにつかうふくろ なぞのやつ(たぶん水分が多いのを真空パックにするときにつかう) ユーザマニュアル(ち…

AWSCLIですべてのLambdaについているタグの一覧を表示するシェルスクリプト

概要 AWSCLIでLambdaのすべての関数についているタグの一覧を取得するシェルスクリプトを作成してみました。 aws lambda list-tagsはARNを指定することでその関数にアタッチされているタグを表示することができます。 ARN指定ですのですべての関数を見に行く…

Amazon Linux2からGitHubのリポジトリへPushする

Amazon Linux2からGitHub上のリポジトリへPushするやりかたです。 環境 Pushするまでの手順 事前準備 Gitをインストールする ローカルリポジトリを作成する git configでユーザ名とメールアドレスを設定する GitHubにssh接続するための鍵を作成する GitHubに…

Pythonのコマンドライン引数 雑チートシート(シェルスクリプトでできたことをやりたい)

シェルスクリプトの${なにがし}をPythonだとどうやって書くのかをまとめました。 (Linux上のシェルスクリプトを適宜Pythonにしたい) 雑チートシート Python ShellScript 説明 sys.argv[0] ${0} 自身のファイル名 sys.argv[1] ${1} 1番目の引数 len(sys.argv)…

Ansibleのwin_commandでは%path%などの変数はつかえないのでwin_shellをつかおう

Ansibleのwin_commandでは%path%などの変数はつかえないのでwin_shellをつかおうというはなし(戒め) やってしまったこと こんなかんじでwin_commandでPATHを追加しようとした。 win_command: setx /M path "%path%;C:\Program Files (x86)\wawawa" 得られた…