4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

アプリケーションのデプロイにAWX + Ansibleを活用してみた話

Last updated at Posted at 2018-12-19

はじめまして! 2018年4月に新卒でインフラチームへ配属された int_sorarinu です!
この記事は Willgate Advent Calendar の19日目の記事です!

はじめに

皆さんはアプリケーションのデプロイ手法というものに頭を悩ませ夢を膨らませていた経験はないでしょうか。
かく言う私もこれまで Capistrano や CodeDeploy などを活用して夢を膨らませていた経験があり、その中で今回 Ansible に夢を託してみたという記事を書きます。

Ansible

オープンソースの構成管理ツールで主に大量なサーバに対してソフトウェアをインストールしたり、設定ファイルを設置したりするのに利用されるものです。

基本的にはサーバの構成管理なのでアプリケーションのデプロイに利用されることはあまりないのではないでしょうか。
実際私も「Ansibleでアプリケーションのデプロイをやってます!」というところは見たことも聞いたこともありません。

しかし、Ansibleに夢を託す為にも今回はペライチのPHPソースをAnsibleでデプロイしてみました。

デプロイ用Playbook

Playbook
---

- name: git clone Repository
  git: repo=git@bitbucket.org:xxxxxxxxxxx/xxxxxxxx.git dest=/usr/src/xxxxx force=yes

- name: chown nginx:nginx /usr/src/xxxxx
  file: path=/usr/src/xxxxx state=directory owner=nginx group=nginx mode=0755 recurse=yes

- name: make symbolic link /usr/src/xxxxx/index.php to /var/www/app/index.php
  file: src=/usr/src/xxxxx/index.php dest=/var/www/app/index.php owner=nginx group=nginx state=link

やっていることは非常に単純で、 git clone してきてドキュメントルートに対してシンボリックリンクを作成しているだけです。実際にプロダクトへ導入するとなった際には、マイグレーションのコマンドを発行したりする必要があります。

Ansibleのコードは出来ましたが、実際にデプロイする際に ansible-playbook -i servers site.yml -l appservers -u username -k -K --vault-password-file vault_pass --tags "deploy" のような長いコマンドを一々発行することになります。

実際のプロダクトでアプリケーションのデプロイを行う人の身にもなってあげれば、デプロイシェルを用意するなりChatOpsを導入するなりしなければいけません。

そこで今回、 AWX を利用してデプロイ環境を整えることにしました。

AWX

RedHat社が提供しているAnsibleを拡張するためのソリューション Ansible Tower のOSS版で、Playbookの実行結果を可視化できるダッシュボードやロールベースのアクセス権限管理などができるツール。
AWX Git Repository

スクリーンショット 2018-12-19 13.32.52.png

AWXの管理画面から、認証情報やインベントリなどの各種必要な情報を作成し、最後にテンプレートを作成することで利用ができるようになります。

スクリーンショット 2018-12-19 13.38.50.png

作成したテンプレートは赤丸で囲ったロケットマークをクリックするだけで実行されます。
スクリーンショット 2018-12-19 13.41.16.png

また、LDAPアカウントとAWXアカウントを紐づけておくことができるため、LDAPのユーザグループなどによって実行できるPlaybookなどが設定できるため、権限管理なども容易にできるようになります。(開発者は Dry-Run だけ流せるみたいなことが出来ます)

おわりに

雑になってしまいましたが、アプリケーションのデプロイでAWXとAnsibleを活用する方法をまとめてみました!
もちろんCapistranoやCodeDeployなどを利用することのメリットも多いですが、こうしてAnsibleに夢を託すことも面白いと思います。

デプロイ手法にお悩みの方がいらっしゃいましたら夢を託してみてはいかがでしょうか!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?