技術TIPS

ファイル構成をYAMLでコード化する

SIOS Coati開発チームの清水です。

突然ですが、みなさんはファイル構成のコード化をどのようにおこなっていますか?

SIOS Coatiでは、環境の構築をAnsibleで行っています。Ansibleは非常に便利(どのくらい便利かは別の記事に譲ります)ですが、ちょっとしたひな形としてディレクトリやファイルを作るのには、少し大袈裟になりがちです。

たとえば個人的に、Pythonで開発をはじめるときは下のような構成が欲しかったりします。

このようにYAMLだとディレクトリの関係が綺麗に表現できます。

ならばいっそ、このYAMLからディレクトリ・ファイルをファイル構成を自動展開するスクリプトがあったらいいなと思ったので、作成しました。

普段からよく使う構成をYAMLにしておけば、ディレクトリ構成をドキュメント化しておく必要もありませんし、チーム内でひな形をお手軽に共有することもできます。

 

スクリプトと使い方を本記事の末尾に記載しますので、興味があるかたはぜひお試しください(スクリプトのご利用はあくまで自己責任でお願いいたします)。

なお実行にはPython3とPyYAMLライブラリが必要となるため、あらかじめインストールしてください。


ソースコード

template.py を作成し、以下のコードをコピー&ペーストしてください。

コマンドのフォーマット

サンプルコマンド

config.ymlの構成に基づいて、新しいファイル・ディレクトリを ./out ディレクトリ上に展開します。

なお、-o オプションを省略した場合は、カレントディレクトリ上に展開します。

もし、既にファイルが存在している場合は、その時点でプログラムは停止します(既存のファイルを変更することはありません)。

作成前にファイルの存在確認をする(Dry Run)場合は -d オプションを付与してください。


シンプルなコマンドですが、使いどころはあると思います。ぜひ使ってみてください!

複数のEC2インスタンスに一括でタグをつける

SIOS Coati開発チームの清水です。

今回はEC2インスタンスのタグに関する話題です。

SIOS Coatiでは監視したくないEC2インスタンスに COATI=DISABLEタグ をつけておくことで、監視対象から除外できます。

しかし、たくさんのインスタンスにひとつひとつタグをつけてまわるのは、割と大変です。そこで、今回はリソースグループのタグエディターを使用して、一気にタグをつけたり消したりする方法を紹介します。

続きを読む

Ansibleでデバッグする

SIOS Coati開発チームの清水です。

今回はAnsibleで開発するうえで知っておくと便利なデバッグTIPSを2つ紹介します。

  1. Playbook Debugger
  2. Step実行

どちらも公式のドキュメントに書かれていることなので、既に知っている方もいらっしゃるかと思いますが、もしご存知ではない方はこの機会に是非活用してみてください。 続きを読む

EC2のRHEL6にgit-lfsをインストールする

SIOS Coati開発チームの清水です。

今回はSIOS Coatiのサービスとは関係なく、開発メンバーがハマった技術TIPSを共有したいと思います。


SIOS Coatiチームではコードの管理にgitを利用しており、そのgitのエクステンションに、サイズが大きいファイルも扱いやすくする git-lfs があります。

今回は git-lfs を EC2 の Red Hat Enterprise Linux 6.7_HVM_20160219 AMI から作成したインスタンスにインストールします。
公式の インストール手順 をみると

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
sudo yum install git-lfs

を実行すれば良さそうです。いざやってみると…

だめでした。どうやらいくつかのパッケージがみつからないようです。

解決策

結論から書くと、yumで「rhui-REGION-rhel-server-releases-optional」リポジトリを有効にすると、git-lfsに必要なパッケージがインストールできるようになります。
これは git-lfs に必要な perl-Git がRHEL6のデフォルトのリポジトリには入っていないためで、別途、他のリポジトリからインストールできるように設定を変更してあげる必要があります。

リポジトリを有効にするには /etc/yum.repos.d/redhat-rhui.repo をルート権限で編集します。

sudo vim /etc/yum.repos.d/redhat-rhui.repo

その中にある [rhui-REGION-rhel-server-releases-optional]セクション の 「enabled=0」を「enabled=1」に変更して保存します。

[rhui-REGION-rhel-server-releases-optional]
name=Red Hat Enterprise Linux Server 6 Optional (RPMs)
mirrorlist=https://rhui2-cds01.REGION.aws.ce.redhat.com/pulp/mirror/content/dist/rhel/rhui/server/6/$releasever/$basearch/optional/os
enabled=1 ← 0 から 1 に変更する
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify=1
sslclientkey=/etc/pki/rhui/content-rhel6.key
sslclientcert=/etc/pki/rhui/product/content-rhel6.crt
sslcacert=/etc/pki/rhui/cdn.redhat.com-chain.crt

以上です!

修正後

無事インストールできました。