サーバーからバッチスクリプトを実行して、データベースサーバーのパスワードなどのグローバル資格情報(シークレットファイル)を使用するJenkinsでジョブをトリガーするにはどうすればよいですか?
Jenkinsで1つのパラメーター化されたジョブを作成しました。このジョブは、サーバーに配置されたbashコマンドを実行してデータベースのバックアップを取ります。このバッチジョブでは、Jenkinsのグローバル資格情報のデータベースパスワードを使用します。Jenkinsコンソールから実行すると、このジョブは成功します。
ここで、パラメーターを渡して(クラムトークンを使用して)bashスクリプトを使用してこのジョブを実行したいのですが、bashはJenkinsグローバル資格情報セットに配置された資格情報を利用したいと考えています。このバッチスクリプトは、Jenkinsからのグローバル資格情報(この場合はデータベースパスワード)を利用できますか?
#!/bin/bash
##this generates the crumb token
crumb=$(curl -u "userid:pswd" -s 'http://<jenkins-url>:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
##this will call the remote job where i am passing the variables
curl -u "userid:pswd" -H "$crumb" -X POST http://<jenkins-url>:8080/job/backup-to-aws/buildWithParameters?MYSQL_HOST=db_host&DATABASE_NAME=testdb&AWS_BUCKET_NAME=<bkt-name>&DB_PASSWD=<how should i pass this secret credential stored in jenkins>
dbパスワードなどのJenkinsに保存されたグローバル資格情報を使用するサーバーからバッチスクリプトを実行したいと思います。サーバーからスクリプトを渡すときにこれらの資格情報を利用するにはどうすればよいですか?
curl -u "userID:pswd" -H "$crumb" -X POST http://<jenkins-url>:8080/job/Daily-Backup-Job/buildWithParameters?J_DB_NAME=mysql&J_DB_SERVER=db_host&J_BUCKET_NAME=<name-of-my-bucket>&J_DB_PASSWD=${DB_PASSWD}&J_AWS_PASS=${AWS_SECRET_ACCESS_PASSWORD}
このステートメントは正常に機能しました。$ {DB_PASSWD}と$ {AWS_SECRET_ACCESS_PASSWORD}は、実際にはjenkinsグローバル認証情報変数で定義されたパラメーターです。つまり、DB_PASSWDとAWS_SECRET_ACCESS_PASSWORDはそれぞれこれらの認証情報のIDです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加