現在シェフを使用してJenkinsインスタンスを管理対象ノードに展開しています。私は次のパブリックスーパーマーケットの料理書を使用しています:https://supermarket.chef.io/cookbooks/jenkins。シェフ:Jenkinsのセキュリティを有効にすると、プラグインのインストールが失敗する
私は認証を有効にするために、私のレシピファイルに次のコードを使用しています:これは、インスタンス上でセットアップセキュリティへの最初の時間を素晴らしい作品
jenkins_script 'activate global security' do
command <<-EOH.gsub(/^ {4}/, '')
import jenkins.model.*
import hudson.security.*
def instance = Jenkins.getInstance()
def hudsonRealm = new HudsonPrivateSecurityRealm(false)
hudsonRealm.createAccount("Administrator","Password")
instance.setSecurityRealm(hudsonRealm)
instance.save()
def strategy = new GlobalMatrixAuthorizationStrategy()
strategy.add(Jenkins.ADMINISTER, "Administrator")
instance.setAuthorizationStrategy(strategy)
instance.save()
EOH
end
レシピは、管理対象ノード上で実行されます。 Jenkinsサーバーの管理者権限を持つ管理者ユーザーを作成します。 Jenkinsインスタンスのセキュリティを有効にすることに加えて、プラグインもこのレシピを使用してインストールされます。セキュリティが有効にされた後
は、まだ存在していません(ただし、インストールされるように指定されている)プラグインのインストールが失敗:
ERROR: anonymous is missing the Overall/Read permission
が、私はこれが新しく作成された管理者アカウントに関連するエラーであると仮定し、シェフが管理者ユーザーではなく匿名ユーザーを使用してプラグインをインストールしようとしています。この権限の問題を回避するためにレシピファイルに設定する必要があるものはありますか?
ここでの目標は、プラグインが望ましくないバージョンにアップグレードされたり完全にアンインストールされた場合、レシピを実行するとプラグインの変更が再インストールされる/ロールバックされることです。現在、Jenkinsインスタンスでセキュリティを有効にしている場合、これは可能ではないようです。
EDITまた、現在、私はこのようにプラグインを修復する必要があるたびに、私は、セキュリティを無効に全体のレシピ(プラグインのインストール+セキュリティ有効)を実行する必要があることに留意すべきです。
ありがとうございました!
私が見つけた1つの解決策は、RSAキーを使用しているようです。 Cookbookのドキュメント(https://supermarket.chef.io/cookbooks/jenkins)によると: "この値が設定されていると、ジェンキンスのCLIコマンドにインテリジェントに認証情報が追加されます(すべてのHWRPが使用する基本エクゼクティブクラス)。レシピを使用して設定している唯一のユーザーは、最初の管理者です。 – J0991
[料理の本](https://github.com/TYPO3-cookbooks/jenkins-chefci/blob/e1b82e679074e96de5d6e668b0f10549c48b58d1/recipes/_jenkins_chef_user.rb)をご覧ください。 – StephenKing
これは素晴らしいリソース@StephenKingです。私は秘密鍵でジェンキンスのユーザーを作成しているのが分かります。 Jenkinsの公の調理帳(https://supermarket.chef.io/cookbooks/jenkins)から_master_war.rbレシピにそのユーザー設定コードを追加する以外に、そのコードを動作させるために必要な追加手順はありますか?あなたの例は、可能な解決策として私がそこに見た線に沿ったものです。私は秘密鍵を持つユーザーをまだ作成していません(初めてシェフに掘り下げる)。どんな情報もありがとう! – J0991