このシリーズではTerraformおよびOracle Cloudであなたのインスタンスを管理するためのResource Managerの使い方を学んできました。パート1では開発者向けのTerraformの基礎を学びました。パート2ではTerraformをインストールし、スクリプトを記述し適用しました。パート3ではTerraformスクリプトをResource Managerと組み合わせて実行し、パート4ではResource Managerを使っての変数値の入力とバリデーションプロセスをスキーマドキュメントに組み込みました。このポストでは、どうやってTerraformのInfrastructure as Codeを分散させるか、また、どうやってTerraformとResource ManagerをCI/CDパイプラインによるビルドプロセスに組み込むかについて説明することで、シリーズのまとめとしていきます。CI/CDツールについてここではGitHubおよびGitHubアクションズを用いていきますが、他のCI/CDツールでもプロセスはほぼ同様のはずです。
GitHub Actionsを使った配布可能なスタックの作成
ここでまずはじめに簡単に触れておきたいのが、Terraformスクリプトから配布可能なスタックを作成する方法についてです。基本的にはその方法とは、他の開発者が自身のテナンシーであなたの作成したスクリプトを実行できるよう、他の開発者に共有できる.zipファイルを作成するということになります。明らかにそのファイルはあなた自身のテナンシーでは利用できるでしょうが、配布するためにいいやり方についてはいくつかポイントがあります。GitHub Actionsを使ってZIPを作成するのはとても簡単で、単にbuild-stack.yamlというYAMLファイルをリポジトリの.github/workflowsディレクトリに加えるだけです。
このワークフローでのgistでは、毎回新しい'tag'バージョンがGitHubにプッシュされます。このワークフローでは以下が行われます:
- コードのチェックアウト
- GitHubのアーティファクトとしてZIPをパブリッシュ
- GitHubリリースを作成
- パブリッシュされたアーティファクトをリリースとしてアップロード
そしてYAMLファイルは以下の通りです。
わたしのデモリポジトリでは、このファイルを保存、タグ付けしてGitHubにプッシュしています。ジョブが完了したら、あなたのリポジトリの"Releases"ページに行くとZIPがパブリッシュされていることを確認できるでしょう。
Tip: あなたの最新のリリースは常に https://github.com/[user name]/[repo name]/releases/latest
.で見つかります
'Oracle Cloudにデプロイする'ボタンをプロジェクトに追加
ここまでで他のひとにも使えるZIPができました。そうしたら今度は'Oracle Cloudにデプロイする'ボタンをREADME.mdに追加して、みんながワンクリックであなたのスタックをデプロイできるようにしておきませんか?こちらのドキュメントにあるフォーマットに従って、READMI.mdにマークアップをコピペしましょう。
このポスト用の動くコードはわたしのリポジトリにありますので、チェックしてみてください:https://github.com/recursivecodes/oci-resouse-manager.demo
まとめ
このポストではGitHub Actionsでアセットを作成してパブリッシュし、'Oracle Cloudにデプロイ'ボタンをGitHubリポジトリに追加する、というここまでのTerraformシリーズの中で簡単ではありましたが重要なテーマを扱いました。次のポストでは、パイプラインの中からResource Managerスタックおよびジョブを作成し、CI/CDワークフローの中からそのジョブを直接適用する方法について学んでいきます。
0 件のコメント:
コメントを投稿