DevOps

自動テスト、継続的デリバリー、サービス統合と監視、およびSDLCインフラストラクチャーの構築に取り組んでいるソフトウェアエンジニアのためのQ&A

1
シェフの料理本の整理
すべてのクックブックを保存するのに100%必要chef-repoですか?これは私には少し不便なようです。ソリューションのクックブックをアプリケーションのコードベースに保存するか、スタンドアロンのgitリポジトリとして保存したいと思います。 などのツールknifeがに存在する構成ファイルに依存していることは知っています.chef。

2
gitlab-ciランナーの有効期限が異なる複数のパス
buildGitlab-CIを使用してステージ間でディレクトリを解析する際に問題があります。 Gitlab-CIは、ステージ間で作成されたビルドアーティファクトをワイプして奇妙に見えます。ビルドステージとテストステージの間にビルドアーティファクトを保存しようとしていますが、ビルドステージには、保持したいビルドアーティファクトと、次のステージの実行に必要なビルドアーティファクトもあります。 artifactsオプションを使用して、異なるパスで複数の有効期限を設定することは可能ですか? paths(build / test *パス)の2番目の定義のみを保持し、最初にpaths宣言された(.dmg)を保持しない以下を試しました。 artifacts: paths: - build/*.dmg expire_in: 1 week paths: - build/test1 - build/test2 - build/test3 expire_in: 15 mins 私は試してみましたcachesが、うまくいかないようです...どんな提案でも大歓迎です!
7 gitlab 

3
受け入れ率の低い環境でDevOpsとツールを伝道する方法は?
革新的な破壊的テクノロジーについての刺激的な学習は、すべての人があなたにあなたの生産性を向上させることができるツールに興奮しているわけではないことに気付くかもしれないということです。 この質問は、あまり一般的なようにするには、のといけないこと何です-彼らはまた言うように、教訓 -異なる役割を持つ本物の経験に基づいて、組織内のドッカーを伝道の?

2
JenkinsはVPNを使用していますか?
Jenkinsジョブの実行中にVPNに接続する方法はありますか?(フリースタイルまたはパイプライン、どちらでも使用できます)。 誰かが何かを開発した可能性があると考えてプラグインリストを調べましたが、見つかった唯一のページは、実際のコードが開発されていないこのOpenConnectページだけでした。 私たちは、Ubuntu AWSボックスでJenkinsを実行しています。すべてをVPNで実行するのではなく、1つのジョブで接続と切断を行う機能を希望します。
7 jenkins  vpn 

3
docker-composeを使用してdockerフォルダーをホストにマウントできません
ここでは、mariadbイメージを使用するDockerコンテナーを作成し、以下のように3つのボリュームを作成しました。 docker-compose.yml version: '2.0' services: mariadb: image: mariadb:latest restart: always container_name: mariadb environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=testdb ports: - 3307:3306 volumes: - ./database:/var/lib/mysql - ./_conf/mariadb.cnf:/etc/mysql/my.cnf:ro - ./logs:/var/log/mysql 最初の2つのボリュームは正常に機能しますが、mariadb-logsファイルをlogsフォルダーに見つけることができません。logsホストとコンテナー(/ var / log / mysql)でフォルダーが空白で表示されるようです。ホストフォルダーがDockerファイルシステムにオーバーライドされると思います。 ./logs:/var/log/mysqldocker-composeからこのボリューム()を削除すると、コンテナーにログファイルが表示されます。 私の計画は、/var/log/mysql/ローカルマシンにフォルダーをマウントすることです。 よろしくお願いします!

1
gitlab-runnerをgitlabと同じdockerホストで実行するように構成するにはどうすればよいですか?
Doclabコンテナでgitlabインスタンスを実行しています。次に、同じホストでgitlab-runnerをセットアップします。両方が実行されています: docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 279473dceb2f gitlab/gitlab-runner:alpine "/usr/bin/dumb-ini..." About a minute ago Up About a minute gitlab-runner 6d7af0d6b946 gitlab/gitlab-ce:latest "/assets/wrapper" 2 hours ago Up 2 hours (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8022->22/tcp gitlab Dockerイメージを共有ランナーとして登録しました。 concurrent = 1 check_interval = 0 [[runners]] name = "default shared …

1
JenkinsからAWS Lambda関数をデプロイするにはどうすればよいですか?
私はジェンキンスを通じてデプロイしようとしている単純なラムダ関数を持っています- public String handleRequest(String input, Context context) { String output = ""; if (input.isEmpty()) { output = "No input provided"; } else { output = "Hello, " + input + "! Checking invocation - 1"; } return output; } 私は問題なくEclipseのAWS Lambdaプラグインを介してこれをデプロイして呼び出すことができます。 私はJenkinsのAWS Lambdaプラグインを使用しており、そのドキュメントに従っています。 私はGitリポジトリをソースとして提供しています。 アーティファクトの場所- src/main/java/ ハンドラー名- lambda.Hello(lambdaはパッケージ名、Helloはクラス名です)。lambda.Hello.handleRequest、 lambda.Hello::handleRequestおよびその他のバリエーションも使用してみました。 Jenkinsはビルドは成功したと言っていますが、AWSコンソールでテストすると、 …

3
Jenkins Pipelineとstash Pull Request BuilderがPRの作成/更新で機能しない
以下は、Jenkins Pipelineを使用するために必要な要件であり、Jenkins Pipelineに初めて参加しました。 開発作業を完了し、変更をBitbucketにプッシュした後、ユーザーはプルリクエストを作成します。 プルリクエストを承認するには、成功したJenkinsビルドが少なくとも1つ必要です。これにより、プルリクエスト用にチェックインされたコードのビルド結果のみを取得したいと思います。 プルリクエストが作成/更新されると、Jenkinsは実際の継続的な統合のために自動的にトリガーされます。 ビルド結果はBitbucketに報告されます。 Stash Pull Request Builderとstash Notifierを使用して、通常のフリースタイルプロジェクトで機能する上記のプロセスを実行しました。 Jenkinsパイプラインを使用して同様の機能を移行する必要があるため、以下のようにjenkinsジョブを作成しました。 PRブランチをチェックアウトしてビルドをトリガーするパイプラインスクリプトは次のとおりです node { stage('Checkout') { checkout( [ $class: 'GitSCM', extensions: [ [$class: 'CleanCheckout'], ], branches: [ [name: ''] ], userRemoteConfigs: [[ credentialsId: 'id', url: 'repourl.git' refspec: ('+refs/pull-requests/*/from:refs/remotes/origin/pr/*/from'), branch: ('origin/pr/${pullRequestId}/from') ]] ]) } stage('Build') { sh 'make' } …

2
ドッカーのビルド中とその後のアプリケーションテストの実行の長所と短所は何ですか?
dockerfileはアプリケーション環境を作成します(例:env変数、apt-getを使用したライブラリーのインストールなど)。また、そのgitリポジトリからPythonアプリケーションコードをプルしてコピーします。 ただし、ビルドされたコンテナーでテストを実行するために、アプリケーションテスト(一部のユニット、一部の統合)をdocker RUNコマンド(例RUN /bin/bash -c "source activate cool_env; pytest":)内に配置するか、CIスタック(例:Jenkins、Openshift)を使用してビルド後に配置するかについては、議論しています。 それぞれの長所と短所は何ですか?


3
テスターの将来の役割は何ですか?
新しいパラダイムが「あなたが構築し、実行する」(Werner Voegels、Amazon CTO)である場合、明らかにソフトウェアエンジニアにはるかに大きな責任とプレッシャーを課します。この変更は、テストチームのタスクに何をもたらしますか?


2
同じサブネットでAWS内部ロードバランサーを呼び出すアプリケーションがタイムアウトになる
背景: Amazonのvpcを使用して、やや複雑なネットワークを作成しました。2つのアベイラビリティーゾーンにまたがる3層ネットワークです。各レイヤーは、zone-aとzone-bにサブネットを持っています。プレゼンテーション層は上部にあり、アプリケーション層は中央にあり、コア層は下部にあります。 すべてのセキュリティグループとサブネットのACLは現在、すべてのインバウンドおよびアウトバウンドトラフィックを許可しており、問題の表面領域を減らすのに役立ちます。 プレゼンテーション層のルーティングテーブルは、すべてのトラフィックをインターネットゲートウェイに向けています。NATゲートウェイは分離されたサブネット内にあり、すべてのトラフィックをインターネットゲートウェイに向けています。 私のアプリケーションには、UI(React.js)とAPI(Node / Express)の2つのコンポーネントがあります。これらは、Dockerイメージとして展開されます。それぞれの前には、古典的なロードバランサーがあります。 UI-ELBはインターネットに面し、プレゼンテーションレイヤーに常駐し、トラフィックを80/443からポート8080にルーティングし、アプリケーションレイヤーサブネットに配置されている私のapp-ec2に関連付けられています。 私のAPIの前には内部ロードバランサーがあります。API-ELBはアプリケーション層(app-ec2と同じサブネット内)にあり、ポート80/443のトラフィックを受け取り、ポート3000のコアのapi-ec2にルーティングします。 どちらのロードバランサーも、インスタンスにトラフィックを渡す前に証明書をオフロードしています。 私は両方のロードバランサーをRoute53でエイリアスとして関連付け、アプリケーションできれいなURL(https://app.website.com)で参照しています。各ロードバランサーは、定義されたヘルスチェックに合格し、使用中のすべてのec2インスタンスを報告します。 最後に、APIで、cors nodejsパッケージを使用してcorsを有効にしました。 これが私のネットワークの簡単で汚い図です。 問題: APP-ELBは私をアプリケーションに正常にルーティングします。ただし、アプリがGETリクエストをAPI-ELBに送信しようとすると、最初にエラーコード408でタイムアウトするOPTIONSリクエストが送信されます。 変になるところ デバッグ中に遭遇した奇妙なことのいくつかは次のとおりです。 app-ec2インスタンスにSSH接続して、API-ELBに対して正常にcurlを実行できます。私は多くを試しました、そしてそれらはすべてうまくいきます。いくつかの例は以下の通りですcurl -L https://api.website.com/system/healthcheckとcurl -L -X OPTIONS https://api.website.com/system/healthcheck。常に必要な情報を返します。 アプリケーション全体をネットワークからパブリックデフォルトvpcに移動しましたが、想定どおりに機能します。 すべてのネットワーク要求をコンソールに書き込むapi-ec2があります。ヘルスチェックリクエストは表示されますが、app-ec2からのリクエストは表示されません。これは、トラフィックがapiに到達していないことを私に信じさせる。 本当に私を完全に失った最大のことは、内部api elbのカーリングが機能することですが、同じ正確なURLへのaxiosリクエストは機能しません。これは私にはまったく意味がありません。 私が試したこと 私は当初、ACLルールとセキュリティグループで遊んでいて、何か間違ったことをしていると思っていました。結局、私は「ねじって」と言って、すべてを開いて、その部分を方程式から外そうとしました。 私はAPIでCorsをいじるのに多くの時間を費やしてきました。最終的に、私が持っている構成に着陸しapp.use(cors())ます。これは、corsノードパッケージによって提供されるデフォルトのコールバックです。app.options('*', cors())ドキュメントで推奨されているものも含めました。 私は太陽の下ですべてをググっていますが、具体的にはエルブでいくつかの特別なカスタムヘッダーを定義する必要があるかどうか?しかし、何かを見つけることができないようです。さらに、アプリをネットワークの外に移動したところ、問題なく動作しました。 私は他にもたくさんのことを試したと思いますが、これらが最も適切なようです。何が欠けていますか?これは非常に曖昧で広範な問題であり、膨大な投稿になる可能性があることは承知していますが、それを読む際の洞察と時間に感謝します!

2
Dockerコンテナー内で実行されているNode Microサービスをどのように監視しますか?
「Docker化されたアプリケーションはどの程度健全ですか?」に関するこの記事 は監視の問題を説明していますが、Dockerコンテナー内のマイクロサービスを実際に監視する方法の良い例は提供していません。 現在、マイクロサービスを監視するためにPM2モニターを使用していますが、それらをDockerコンテナーに配置すると、それぞれが独自のDockerコンテナーで実行されるすべてのさまざまなマイクロサービスの1つの画面内でこのデータにアクセスできなくなります。 Dockerswarmモニタリングはコンテナーの状態を通知しますが、コンテナー内で実行されているマイクロサービスは通知しません。 この問題を解決する確かな実証済みの方法は何ですか?

2
フロントエンドでのみ実行されるサイト監視ブラウザ専用ツール?
Nagiosのようなインフラストラクチャ監視ツールやはるかに「低レベル」のカールは、DevOpsコミュニティでよく知られています。 しかし、フロントエンドで同様の方法でいくつかのAPIを追跡したいだけの場合、この機能をサポートするために、多かれ少なかれ成熟した人気のあるツールまたはコンポーネントは何ですか?つまり、Nagiosに似ていますが、ブラウザ内で完全に実行されます(サーバーからJSライブラリとともに静的構成ファイルをロードしても問題ありません)。

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