問題タブ [cloud-init]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-ec2 - EC2インスタンスが起動するたびにcloud-init起動スクリプトを実行するにはどうすればよいですか?
AmazonLinuxAMIに基づくAMIを実行しているEC2インスタンスがあります。このようなすべてのAMIと同様に、すべてのインスタンスに渡されたユーザーデータに基づいて起動スクリプトを実行するためのcloud-initシステムをサポートします。この特定のケースでは、私のユーザーデータ入力は、他のいくつかの起動スクリプトをソースするインクルードファイルです。
インスタンスを初めて起動すると、cloud-init起動スクリプトが正しく実行されます。ただし、インスタンスのソフトリブートを実行すると(たとえば、を実行して) 、2回目に起動スクリプトを実行せずsudo shutdown -r now
にインスタンスが再起動します。システムログを見ると、次のことがわかります。
これは私が望んでいることではありません-インスタンスの存続期間ごとに1回だけ実行される起動スクリプトを持つユーティリティを見ることができますが、私の場合、通常の起動スクリプトのように、インスタンスが起動するたびに実行する必要があります。
rc.local
考えられる解決策の1つは、最初に実行した後にスクリプトを手動で挿入することです。ただし、cloud-init環境とrc.d環境は微妙に異なり、最初の起動時とその後のすべての起動時にスクリプトを個別にデバッグする必要があるため、これは厄介なようです。
cloud-initに常にスクリプトを実行するように指示する方法を知っている人はいますか?これは確かに、cloud-initの設計者が検討したであろうことのように聞こえます。
amazon - setUserData が aws のスクリプトを実行していない
cloud-init にスクリプトを実行させる方法を見つけようとしています。現時点では、読み取り専用の myscript というファイルがあります。
!/ビン/sh
echo 'Hello world - ユーザーデータを実行しました!' > /root/helloworld sudo mkdir scripttest
次に、私の Java コードには String usrdata = new String(); があります。usrdata= "myscript"; req.setUserData(usrdata); req.setUserData(org.apache.commons.codec.binary.Base64.encodeBase64String(usrdata.getBytes()));
実行中のインスタンスに SSH で接続すると、これが機能していないようです。なぜ何か考えはありますか?
windows - Windows の Cloud-Init に相当するものは何ですか?
Windows では、ストック ブートストラップ プロセスが少し不足しているようです。
Linux には cloud-init があり、パッケージをインストールし、ファイルを保存し、ユーザー データから bash スクリプトを実行します。
Windows には ec2config がありますが、現在、システムが「準備完了」、つまりすべての初期再起動が完了している場合に cmd または powershell スクリプトを実行するサポートはありません。
サードパーティのオプションがあるようです。たとえば、RightScale には、この機能を実行する RightLink エージェントがあります。
利用可能なオープンソースのオプションはありますか? この機能を Ec2Config に追加する予定はありますか? これを自分で構築する必要がありますか?
何か不足していますか?
amazon-ec2 - ubuntuec2-instanceのcloud-initper-bootスクリプト
ubuntu11.10ec2インスタンスでcloud-initを使用してスクリプトを開始しようとしています。
スクリプトscript.sh
をフォルダに入れました/var/lib/cloud/scripts/per-boot
。
内容script.sh
はシンプルです:
再起動後、次のエラーが発生します。
それを修正する方法はありますか?
amazon-s3 - cloudinit を使用してプライベート S3 アセットを新しい EC2 インスタンスに (安全に) ダウンロードするにはどうすればよいですか?
CloudFormation を使用して Tomcat ウェブサーバー スタックを管理していますが、新しいアプリケーション バージョンの未加工の AMI 管理にうんざりしています。シェフの方向に進みたいのですが、今は時間がありません。代わりに、Web サーバーのインスタンス化における単純な問題を克服しようとしています: 新しいマシンがスピンアップしたときに「現在の」WAR をダウンロードするにはどうすればよいですか?
私の考えでは、プライベート S3 バケットと cloudinit を利用することでしたが、IAM クレデンシャルをどうするかについて少し困惑しています。それらをテンプレートのユーザー データに入れることもできますが、特にそのファイルのバージョン管理を行っているため、そうするのは気が進まないのです。私が考えることができる唯一の代替手段は、AMI 自体で環境変数を使用することです。それらは平文である必要がありますが...ええと、私のインスタンスに侵入できれば、私のWebサーバー全体を圧縮してダウンロードできます. IAM ユーザーが他の目的で再利用されず、定期的にローテーションされる限り、問題を解決する合理的な方法のように思えます。何か不足していますか?cloudinit を使用してプライベート S3 アセットを安全にダウンロードするにはどうすればよいですか?
amazon-ec2 - Cloudformation テンプレートで IAM ロールの一時認証情報を使用できますか?
アプリケーションの最新バージョンをダウンロードするためにプライベート S3 バケットにアクセスする必要があるスタックを構築しています。私はIAM ロールを使用しています。これは、EC2 インスタンスに特定のロールを割り当てることができる比較的新しい AWS 機能であり、その後、IAM ポリシーと結合されます。残念ながら、これらのロールには、インスタンス化時に生成された一時的な API 資格情報が付属しています。それは不自由ではありませんが、この cloud-init スクリプトのようなことをすることを余儀なくされました (関連するビットだけに簡略化されています):
何よりもまず、これは機能し、かなりうまく機能します。それでも、CloudFormation のソース アクセスに対する既存のサポートを使用したいと思います。具体的には、 S3 バケットなどの保護されたデータを取得するための認証リソースcfn-init
の使用をサポートします。内からこれらのキーを取得したり、IAM ロールを認証リソースに関連付けたりする方法はありますか?cfn-init
別の方法として、ソースを他の認証済みサービスの背後に配置することも考えられますが、現時点では実行可能なオプションではありません。
別の有望なリードはAWS::IAM::AccessKey リソースですが、ドキュメントではロールで使用できることは示唆されていません。とにかくやってみます。
chef-infra - CloudInit を使用するだけでなく、Amazon Cloud Formation で Puppet/Chef を使用するのはなぜですか?
「プリベーク」されていない AMI EC2 インスタンスを使用する予定です。つまり、スピンアップすると、AWS Linux のベア インストールになります。ブートストラップ プロセスは、python、tomcat など、必要なさまざまなインストールを取り込みます。最小で 3 つのインスタンス、最大で 8 つのインスタンスがあります。
これらの要件を考えると、Amazon Cloud Formation (CloudInit) を使用するよりも Puppet/Chef を使用する方が便利ですか?
私が見ることができる最善の方法は、Puppet を使用した場合、スクリプトと比べて何が起こっているかを確認する監査が容易な宣言型プログラミングを使用できることです。また、CloudInit には 16k のスクリプト サイズ制限があり、これに遭遇する場合と遭遇しない場合があります。
CloudInit から Puppet または Chef に移行した人はいますか? 特定の理由で、ここで私の質問に答えてください。
ubuntu - Cloud-initのブートごとのスクリプトは何もしません
私はcloud-initを初めて使用します。最終的な目標は、EC2スポットインスタンスがアクティブになるたびにRスクリプトを実行することですが、それをテストするために、オンデマンドのUbuntu 12.04インスタンスを作成し、単純なスクリプトを作成しましたが、その後は何も起こりません。リブート。これが私が取ったステップです:
- 新しいUbunut12.04インスタンスを起動しました
- 案内する
/var/lib/cloud/scripts/per-boot
sudo vi script.sh
- 次のコードを追加しました。
#!/ bin / sh
echo "test"
sudo reboot
この時点で、インスタンスが再起動したときに「テスト」印刷が表示されるはずだと思いましたが、そこには何もありません。見に行ったのです/var/log/cloud-init.log
が、異常など異常はありません。
私は明らかに何かが欠けているので、正しい方向へのヒントは大歓迎です!
ありがとう!
amazon-ec2 - Puppetエージェントデーモンがファクトファクトを読み取っていません(EC2、cloud-init)
私はファクトからファクトを読み取るためにpuppetを使用しており、それに基づいてモジュールに異なる構成を適用しています。
問題:
人形エージェントはこの事実を見ていません。puppet agent --test
インタラクティブに実行すると、期待どおりに機能します。スクリプトから非対話的に実行する場合でも、正常に機能するようです。エージェント自体だけが台無しになっています。
プロセス:
UbuntuベースのアプリスタックをEC2にデプロイしています。userdata(#cloud-config)を使用して、/ etc/environmentに環境変数を設定します。
次に、すぐに#cloud-configで、/ etc/environmentをソースします。次に、i apt-get install puppetのみ(#cloud-configステップのシーケンスのあいまいさを排除するためにpackage:puppetの使用をやめました)
インスタンスが起動したら、ファクトが利用可能であることを確認します。実行facter tl_role
すると「開発」が返されます。次に/var/ log / syslogを確認しますが、パペットエージェントはこの事実を認識していないようです。カタログをコンパイルできず、値が表示されるはずの場所に何も(空白)ないため、これを知っています。この事実に応じて変数が設定されます。
ただし、puppet agent --test
インタラクティブに実行すると、カタログが正常にコンパイルおよび実行されます。#cloud-configスクリプトからこれを実行しても(puppetをインストールした直後)、問題なく機能します。
この事実を人形エージェントが利用できるようにするにはどうすればよいですか?エージェントサービスを再起動しても違いはなく、カスタムファクトを認識しません。インスタンスを再起動しても違いはありません。
ここにいくつかのコードがあります:
EC2ユーザーデータ:
主な人形のマニフェスト:
そして、$ sitedomainが想定されている場所でエラーが発生したため、$tl_roleが設定されていないように見えます。
何か案は?これは私の脳を爆発させています...
amazon-web-services - cloud-init を使用して Chef をインストールおよび構成できますが、実際には実行できませんか?
私は、ユーザー データと cloud-init を備えた動作中の CloudFormation テンプレートを持っており、ホストされている Chef サーバーに正常に接続してビルドしています。AWS EC2 ストック イメージで Ubuntu 12.04 を使用しています。
私自身の目的のために、私はこれを続けたいと思っていますが、
1) Chefをサービスとして実行するように構成せず、オンデマンドでのみ実行します(「sudochef-client」)
...代わりに、またはこれを補完するために
2) 以前と同じように Chef のインストール/構成全体を実行しますが、サービスとしてではなく、一度だけ実行します
cloud-init の例を調べても、適切なフックが見つかりませんでした。このユースケースを可能にするための Chef の設定があるかどうか疑問に思いました。update-rc.d を使用してchef-clientを無効にしようとしましたが、すでに実行されているため機能しませんでした。
EC2 インスタンスに関連付けられた CF テンプレートのユーザーデータのフラグメントを次に示します。