Jenkins EC2-Pluginの再接続をトリガーする方法は?


0

max-open ulimitが低いアップストリームAMIの問題を解決しようとしています。

制限ファイルに入力することができます。スレーブを手動で切断/再接続すると、新しい制限が適用されます。

ulimitの変更をcloud-initに入れることもできますが、masterはcloud-initが完了する前に接続します。

cloud-initで唯一のことは、ulimitファイルを書き込むことです。どのように「高速化」するのかわかりません。

ユーザーデータ:

#!/bin/sh

echo 'ec2-user hard nofile 65535' > /etc/security/limits.d/20-jenkins-maxfiles.conf

初期化スクリプト:

#!/bin/bash

echo Cloud-init status:
cloud-init status

echo Setting max-open soft to hard limit.
ulimit -S -n hard

echo Current limits:
ulimit -a

ec2-pluginの「Initスクリプト」で切断/再接続をトリガーしたり、接続を遅延させてcloud-initを終了させる方法はありますか?


具体的にどのAMIを使用していますか?cloud-initスタートアップを尊重する必要があります。
10月

Amazon Linux 2. ami-009d6802948d06e52のデフォルトは4096です。Init cloud-init statusスクリプトの先頭に追加すると、ログに「status:running」と表示されます。
レーバイン

場合によっては起動タイミングに影響するSpotInstanceオプションを使用しています。これは5回のうち約4回の問題です。
レーベイン

私がインターネットで読んだものから、cloud-initは// systemd起動シーケンスで実行され、ulimitファイルにパッチを適用する前にsshdを起動できます。そこから「合理的な」パスが1つだけ表示されます。必要なものにパッチを当てたAMIを再構築します。また、ec2 jenkinsプラグインには初期化スクリプトが記載されています。これがcloud-configに注入されるものですか?:(のようなもの読んissues.jenkins-ci.org/browse/JENKINS-12771
10月

ec2-pluginには、ユーザーデータと初期化スクリプトの両方があります。init-scriptは、スレーブへのすべての接続で実行されます。通常のec2ごとのユーザーデータ。私が観察したことから、init-scriptをユーザーデータに挿入するわけではありません。
レーベイン

回答:


0

これは、初期スクリプトを部分的に実行した後にJenkinsに再接続させるという問題には対応していませんが、このコンテキストでは異なるcloud-initスクリプトタイプが問題を解決するようです。

Cloud Boothookcloud-initスクリプトタイプとして使用すると、SSHの開始前に実行され、他の多くのサービスsystemdが開始される可能性があります。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#supported-user-data-formats

https://cloudinit.readthedocs.io/en/latest/topics/format.html#cloud-boothook

クラウドブートフック

  • #cloud-boothookまたはContent-Type:text / cloud-boothookで始まります。

  • このコンテンツはブートフックデータです。/ var / lib / cloudの下のファイルに保存され、すぐに実行されます。

  • これは利用可能な最も早い「フック」です。一度だけ実行するメカニズムは提供されていません。ブートフックはこれ自体を処理する必要があります。環境変数INSTANCE_IDのインスタンスIDが提供されます。この変数を使用して、インスタンスごとに1回のブートフックデータのセットを提供します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.