share facebook facebook2 twitter menu hatena pocket slack

2015.11.16 MON

Ansible Galaxyにdstatのロールを公開する

古渡 晋也

WRITTEN BY古渡 晋也

はじめに

こんにちは。インフラエンジニアレベル1のf_prgです。
業務では、AnsibleやChefも使っております。
Chefのsupermarketにはdstatのcookbookを公開しているのですが
AnsibleにもAnsible Galaxyに公開してみようと思います。
https://supermarket.chef.io/cookbooks/dstat

ansible-galaxyに登録する

私はTwitterアカウントと連携してログインしました。
ソーシャル系アカウントが使えるのは便利ですね。

ansibleのroleを作成する

下記の初期コマンドを実行します。
Mac上で構築して、gitにpushしました。

[f_prg@ansible-galaxy] $ ansible-galaxy init dstat
- dstat was created successfully
[f_prg@ansible-galaxy] $ ls dstat/
README.md       files           meta            templates
defaults        handlers        tasks           vars

ここでのtaskやファイルなどは割愛します。
https://github.com/fprg/ag-dstat
ご興味がありましたら、こちらをご覧ください。

作成したロールをローカルに対して実行します

EC2(Amazon Linux)にAnsibleをインストールします

[root@ip-10-10-0-85 ~]# pip install ansible

Ansible Galaxyからロールをインストールします

[root@ip-10-10-0-85 ~]# ansible-galaxy install f_prg.dstat
[root@ip-10-10-0-85 ~]# ls /etc/ansible/roles/f_prg.dstat/
defaults  files  handlers  meta  README.md  tasks  vars

/etc/ansible/roles/の下にインストールされました。

プレイブックを用意します

ローカル実行できるように、playbook.ymlを作成しました。

- hosts: localhost
  connection: local
  sudo: true
  roles:
    - { role: f_prg.dstat }

プレイブックを実行します

実行する際に、-iオプションはinventory_hostsが必要ですが
今回はlocal実行なので/dev/nullを指定してます。

[root@ip-10-10-0-85 ~]# ansible-playbook ./playbook.yml -i /dev/null

ローカルで実行したのでsourceコマンドで読み込まなきゃいけないですね。
インベントリホストに対して実行すれば、sshログインしたら使えるようになります。

[root@ip-10-10-0-85 ~]# source /etc/profile.d/dstat.sh

まとめ

簡単に、自分のロールを公開できました。
GitHub.comとの連携もしてますから、Pull Requestとかで
Social CodingもInfrastructure as a codeも活かせそうですね。

今回の成果物です。
https://galaxy.ansible.com/list#/roles/4259

参考資料・リンク

https://galaxy.ansible.com/list#/roles/4259
https://supermarket.chef.io/cookbooks/dstat

元記事はこちら

Ansible Galaxyにdstatのロールを公開する

古渡 晋也

古渡 晋也

縁があって、cloudpackにジョインしました。 JAWS-UG さいたま支部コアメンバーとしても活動しております。 cloudpackにてインフラ設計・構築・運用をしております。 HadoopやMongoDBなどいろいろ経験しております。 あと、開発もできるエンジニアです。 開発可能な言語はC, C++, C#, アセンブラ, PHP, Ruby, JavaScript, Java, Objective-Cです。