いくつかの.NETアプリのCIプロセスを自動化しようとしていますが、完璧な世界では、それぞれにWindowsEC2インスタンスを起動したいと思いますbootstrapインストールするインスタンスChef Soloを実行してから、Chefレシピを実行して、いくつかの依存関係とパッケージ化されたソフトウェア自体をインストールします。
しかし-私は初心者であり、どこから始めればよいのかは言うまでもなく、それが実現可能であるとしてもわかりません:)
私はAWSのコマンドラインツールにかなり精通しているので、AMIを起動できますが、それを超えるとかなり行き詰まります。 ChefがプリインストールされたカスタムAMIを構築することは避けたいと思います。それは、多くの利点を奪うからです。
これは本質的に私がしなければならないことだと思いますが、(当然のことながら)Linuxに焦点を当てています。
http://www.opinionatedprogrammer.com/2011/06/chef-solo-tutorial-managing-a-single-server-with-chef/
誰かが以前にこれまたは同様のことをしたことがある誰かへのリンクを持っていますか?または私がやりたいことを達成するためのより良い方法は?
助けていただければ幸いです。
ほとんどのWindows bootstrapリソースは、Hosted Chefに焦点を当てており、knife-windows
プラグインを使用しています。
ただし、これはChefsoloで可能になるはずです。
chef-client
を使用してAMIを構築していない場合、最初のステップは、そこに フルシェフWindowsインストーラー を取得することです。
幸いなことに、私が覚えているように、winrm
はWindowsAmazonAMIでデフォルトで有効になっています。潜在的なbootstrapソリューション: https://stackoverflow.com/a/13284313/2205881
bootstrap他のものを同時に; Ruby Windowsインストーラーなど。同じプロセスで、クックブック、ロールなどを取得し、Chefプロビジョニングを開始できます。 。
[〜#〜]更新[〜#〜]
インスタンスの作成時に--user-data-file
を使用して、これを少し異なる方法で開始しました。これは、AWS API、コマンドラインツールで使用するか、インスタンスの起動時にWebインターフェイスに貼り付けることができます。
私は、パッケージマネージャーである Chocolatey を使用してchef-clientをインストールしています。
<script>
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
cinst chef-client
</script>
基本的に:<script>
は、処理するバッチファイルがあることをAWSのユーザーデータスクリプトに通知します。@powershell...
(etc)は、Chocolateyを ドキュメント からインストールするコマンドです。cinst chef-client
は chef-client
パッケージ をインストールします。
これには、ユーザー入力は必要ありません。ユーザーデータはローカル管理者として実行されます。
すべてのAmazonAMIは、後続のブートではなく、最初のブート(デフォルト)でユーザーデータを実行します。したがって、これは、RDPに接続したり、管理者パスワードを取得したりすることなく、chef-client
を配置するための非常に簡単な方法です。
別の方法は、Powershellで記述された「ユーザーデータスクリプト」を渡すだけです。次のようなテキストファイル(hello.ps1)を作成するだけです。
<PowerShell>
#アプリケーションをダウンロードしてインストールするためのコードはここにあります
</ powershell>
次に、インスタンスを起動するときに、userdataファイルを渡すだけです。
ec2run --region "us-east-1" "$ AMI" `
--group "$mygroup" ` --subnet "$mySubnet" --instance-type "m1.medium" ` --key "$myKey" ` --user-data-file "hello.ps1"
S3からバイナリをダウンロードし、単一のPowerShellスクリプトを介して完全にインストールを行うことができます。 ここ 参考のためにAmazonからのいくつかのドキュメントです