以前「レンタルサーバーで自作プログラムを動かしてみる」という記事を書きました。
当該記事では触れませんでしたが、Go言語で書いたプログラムをレンタルサーバー上でビルドするとエラーが起こることがありました。
エラーメッセージを見る限りではどうやらメモリ不足のようで、何度かビルドを繰り返すとうまくいくこともあったので見て見ぬ振りをしていました。
でもちょくちょくエラーが出るのはあまり気持ちのいいものではないのでビルドは別のマシンで行い、生成されたモジュールをレンタルサーバーにデプロイするようにしました。
デプロイするにあたり「Ansible」を使ってみたので記事にしたいと思います。
Ansibleとは
Ansible(アンシブル)は、レッドハットが開発するオープンソースの構成管理ツールである。
サーバを立ち上げる際、あらかじめ用意した設定ファイルに従って、ソフトウェアのインストールや設定を自動的に実行する事が出来る。
特に大規模なコンピュータ・クラスターを構築する時に、時間の短縮やミスの削減に有用である。
構成管理に加え、オーケストレーションやソフトウェアデプロイメントの機能を持つ。出典: フリー百科事典『ウィキペディア(Wikipedia)』
インストール
CentOS 8のVPSにインストールしました。
(EPELを使えるようにしておく必要があります)
sudo dnf install ansible
設定ファイルの編集
/etc/ansibleディレクトリの中に設定ファイルがあります。
hostsファイルにデプロイ先の情報を登録します。
「wing」の部分はサーバー群の名称になります。
デプロイの際にこの名称を使用します。
Playbookファイルの編集
発行するコマンドなどを列挙したファイルを編集します。
ファイル名やパスはお好みで…。
hostsのところにサーバー群の名称(hostsファイルに記載したもの)を指定します。
tasksのところに処理を列挙します。
nameは見出しみたいなもの、その後のcopyはAnsibleのcopyモジュールを使うという指定で、その後のsrc、dest、modeはcopyモジュール内で使うパラメーターの指定です。
ローカルのsrcにあるファイルを、wingサーバー群のdestにSFTPで転送する、という処理になります。
preserveはパーミッションを可能な限りそのまま引き継がせる指定です。
デプロイ処理を実行
実際のデプロイ処理はansible-playbookコマンドで行います。
ansible-playbook {playbookファイル}
(デフォルトで/etc/ansible/hostsを読み込みます)
「-C」を付けるといわゆるDry-Runモードになります。
ansible-playbook -C {playbookファイル}
まとめ
今回はひとまずデプロイだけですが、GitHubからpullしてきて、buildして、デプロイする、という処理を書けば更に省力化が図れそうです。
もっと勉強しないと…。
コメント