DevOps

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

1
本番環境でのDockerを使用した永続ストレージ-ソリューションとその理由
私は最近、モノリシックSaaSアプリケーションをコンテナー化されたマイクロサービスに分割したい会社で働き始めました。しかし、永続ストレージの基本的な部分を把握するのに苦労しています。なぜそれほど多くの異なる競合プラットフォームがあるのですか?Portworx、Rexray、StorageOS、Flocker、Inifintなど。 私の質問 誰かが単にNFSサーバーを起動し、階層的なフォルダー構造をストレージバックエンドとして使用しないのはなぜですか?これらのツールの1つを使用すると、どのようなメリットがありますか? Dockerでこのようなものを使用することはどれほど危険ですか?Dockerベースの環境で致命的なデータ損失の一般的な原因は何ですか? どの永続ストレージソリューションを推奨しますか、またその理由は何ですか?私の会社はSaaSプラットフォームを運用しています。データペイロードはサイズが小さい(5kb-100kb)。データ処理は、リソース消費量が中小です。全体的なボリュームは中程度ですが、増加し続けています。モノリシックアプリケーションを個別のコンテナ化されたマイクロサービスとしてクラウドに完全に移行したいと考えています。データウェアハウスを含みます。 多少は関係ありませんが、関連しています。Rancher/ Cattleとは対照的に、Kubernetesをオーケストレーターとして使用することの利点は何ですか?中小規模のプラットフォーム用にKubernetesが過剰設計されていませんか?ワンクリックインストール以外に、ランチャーでKubernetesを使用する利点はありますか? 洞察をありがとう。世間知らずでごめんなさい。すべてのドキュメントと補足資料を歓迎します。 編集:コンテキストでは、基盤となるクラウドプラットフォームとしてAzureを使用しています。

3
システム思考とは?
Gene KimによるDevOpsの説明の「最初の方法」には「システム思考」が必要ですhttps://itrevolution.com/the-three-ways-principles-underpinning-devops/ 「システム思考」の能力はどこで学べますか?「システム思考」に詳しくない人が、その人が日常の業務で「システム思考」を始めることができるようにするためのリソースにはどのようなものがありますか?

2
ロールバック/ロールフォワードとMTTRメトリックの間の適切な関係は何ですか?
データをキャプチャして平均修復時間(MTTR)メトリックの測定を開始する最良の方法を理解しようとしています。「ロールバック」がMTTRにプラスまたはマイナスの影響を与える方法に頭を抱える必要があります。 シナリオ1 堅実な監視が行われていると仮定すると、インシデントを比較的迅速に検出する(MTTIが低い)コードがデプロイされます。識別の時点で、2つの主要な可能なパスがあります(そうです、私は議論の目的で過度に単純化しています)。 デプロイメントをロールバックし、安定性をすばやく戻しますが、本番環境では意図した機能はありません。 インシデントを解決し、意図された機能をライブに保つ追加の変更をロールフォワードします。 このscenaroでは、サイトの安定性がすぐに回復する可能性があるため、MTTRはかなり低くなっています。とはいえ、意図した変更の結果は有効ではないため、コード/機能/変更はまだ進行中です。目標が低いMTTRである場合、回復メカニズムとしてロールバックを奨励するように見えます。 シナリオ2 このシナリオでは、MTTRは、予想されるコード/機能/変更が本番環境で適切に機能するのにかかる時間によって厳密に測定されます。ロールバックしても、「修正済み」のコード変更が製品化されるまで、MTTRタイマーはまだ実行中です。この場合、MTTRは単なる「ちょっと、物事は安定している」のではなく、ビジネス結果の安定性に結びついているようです。 さて、答えはMTTRが真空での指標として使用されていないのと同じくらい簡単かもしれませんが、むしろ変更失敗率と組み合わせて-頻繁なロールバックによって引き起こされる超低MTTRは、非常に高い変更失敗率を指す可能性があります。とは言っても、MTTRの測定値をビジネスの成果から切り離すという考えでは、私には正しくないように思われることがあります。 私はこれをかなり考えすぎているかもしれませんが、他の人がどのようにMTTRを測定しているか、および「回復」の最終時点は何であるかについて知りたいです。それを単に安定性として使用していますか、それとも他の要因が「回復」の意味を決定するのに使用されていますか?
8 metrics 

1
ブラケット( `[` `]`)を使用することと、DockerfilesのCMDオプションでコマンドを指定することの違いは何ですか?
なぜCMD ["mysqld"]結果は次のようになります: db_1 | 2017-05-14T16:34:11.829163Z 0 [Note] mysqld (mysqld 5.7.18) starting as process 1 ... db_1 | 2017-05-14T16:34:11.833159Z 0 [Note] InnoDB: PUNCH HOLE support available db_1 | 2017-05-14T16:34:11.833190Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins db_1 | 2017-05-14T16:34:11.833199Z 0 [Note] InnoDB: Uses event mutexes db_1 | 2017-05-14T16:34:11.833211Z …

1
Jenkins Artifactoryプラグインがマルチスレッドでダウンロードされない
私の会社では、JenkinsのArtifactoryプラグインを使用してダウンロードしようとするのに苦労しています。これは、リポジトリに小さなファイルがたくさんあり、プラグインが1つのスレッドで動作するため、本当に時間がかかるためです。ダウンロード用のスレッド数を設定できるJFrog CLIをテストしましたが、実際にはそれがうまく機能しています。それでも、元のプラグインを使用する必要があります。 これの回避策はありますか?多分それはArtifactoryサーバー構成と関係があるのでしょうか? 注:私が心配している会社で開発が行われているため、小さなファイルがたくさんあります。保存する前にすべてのファイルをアーカイブすることを考えましたが、アップロードされたすべてのzipファイルはおそらく異なるチェックサムを持っているため、ストレージの点でおそらく非経済的でしょう。


2
Windowsマシンで発生する可能性のある散発的なエラー
AnsibleプレイブックでWindowsホストを使用すると、オンとオフの問題が発生します。pywinrm 0.2.2がインストールされたAnsible 2.3を実行しています。ローカル管理者ユーザーで基本認証を使用しています。 タスクを実行すると、この問題が発生することがあります。 [WARNING]: FATAL ERROR DURING FILE TRANSFER: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/ansible/plugins/connection/winrm.py", line 267, in _winrm_exec self._winrm_send_input(self.protocol, self.shell_id, command_id, data, eof=is_last) File "/usr/local/lib/python2.7/dist-packages/ansible/plugins/connection/winrm.py", line 248, in _winrm_send_input protocol.send_message(xmltodict.unparse(rq)) File "/usr/local/lib/python2.7/dist-packages/winrm/protocol.py", line 207, in send_message return self.transport.send_message(message) File "/usr/local/lib/python2.7/dist-packages/winrm/transport.py", line 191, in send_message raise WinRMTransportError('http', error_message) …

1
JenkinsでVault SSH OTPバックエンドを使用する
シークレットを保存するようにVaultを設定しています。OTP認証を使用したSSHバックエンドは、アクセス用のSSHキーの管理を停止するための良い方法のように見えます。 SSHバックエンドが機能していて、JenkinsをSSH-OTP認証で接続して、展開キーも削除できるようにしています。 Vault用のJenkinsプラグインを確認しましたが、Vaultからシークレットを取得する場合にのみ機能します。 この目的のためのプラグインまたはJenkinsのハッキングはありますか。それ以外の場合は、独自のプラグインを作成することはできますか? 注:現在、JenkinsはSSHキーを使用しています。キーの使用を排除し、デプロイのためにホストにSSHで接続する必要があるたびにVaultからSSH OTPを取得するようにJenkinsを構成します。

2
ファブリックのJavascriptベースの代替
似DevOpsチームのツールがあります生地のスクリプト言語としてJavaScriptを使用しては?特にリモート実行側に興味があります。 私が見つけたほとんどのツールは、python(例:fabric)またはRuby(例:Capistrano、Chef)に依存しています。ただし、私のチームでは、これらの言語を他の目的で使用することはありません。これらの言語はすばらしいかもしれませんが、Web開発業界ではJavaScriptほど普遍的ではありません。 私が最小限のpythonスキルを持っていることを除いて、私が欲しいものに理想的であるので、ファブリックについて言及します(悲しいことに)。

2
Ansible 2.3.0以降の暗号化変数の構造化のベストプラクティスは何ですか?
このドキュメントは、Ansible 2.3以降!vault |、変数とキーをボールトファイルに入れて完全に暗号化する代わりに、プレフィックスを使用して特定の変数を暗号化できるようにする必要があることを示しています。 notsecret: myvalue mysecret: !vault | $ANSIBLE_VAULT;1.1;AES256 66386439653236336462626566653063336164663966303231363934653561363964363833313662 6431626536303530376336343832656537303632313433360a626438346336353331386135323734 62656361653630373231613662633962316233633936396165386439616533353965373339616234 3430613539666330390a313736323265656432366236633330313963326365653937323833366536 34623731376664623134383463316265643436343438623266623965636363326136 other_plain_text: othervalue 現在のところ、構造は次のとおりです。 ansible/group_vars/testing/vars ansible/group_vars/testing/vault 暗号化された変数をボールトからvarsディレクトリに移動してansible-vault decrypt ansible/group_vars/testing/vars実行すると、次のように返されます。 ERROR! input is not vault encrypted data for ansible/group_vars/testing/vars この保管された変数は、提供された保管庫の秘密で復号化され、通常の変数として使用されます。ansible-vaultコマンドラインは、オンザフライでデータを暗号化するためのstdinとstdoutをサポートしています。これは、お気に入りのエディターからこれらのvaultされた変数を作成するために使用できます。AnsibleとYAMLの両方が復号化の必要性を認識できるように、!vaultタグを必ず追加する必要があります。| ボールトの暗号化は複数行の文字列になるため、これも必要です。 ご質問 暗号化する必要がある変数は、コマンドラインを使用して1つずつ暗号化する必要がありますか? 古いAnsible構造を再構築するためのベストプラクティスは何ですか?たとえば、ボールトファイルを削除して、すべての暗号化された変数を変数ファイルに入れますか?

3
Jenkins EC2プラグインでAMI IDをリモートで更新する方法は?
パッカービルドが実行された後、Jenkins EC2プラグイン構成でAMI IDを更新する方法を探していました。いくつかの掘削後、私はそれを行うための有望な方法を見つけたのIFパッカーの実行がジェンキンス自体によって行われ経由して、ポストビルドグルーヴィーなプラグイン(この遺跡をテストする、あなたの心が、良いに見えます) しかし、パッカービルドをどこでも実行でき、結果のAMI IDがリモートでJenkinsで、おそらく認証されたRESTを介して更新できるようにしたいですか?それは可能ですか?どこから探し始めますか?
8 jenkins  packer 

1
CircleCIでDockerへのデプロイを自動化するにはどうすればよいですか?
circle.ymlファイルとCircleCIアカウントは、すでにテスト用にDockerを使用するように設定されていますが、ビルドが成功したら継続的なデプロイに移行したいと思います。 これが私がこれまでcircle.ymlに持っていたものです: machine: services: - docker dependencies: override: - docker info - docker build -t pgeiss/appname . test: override: - docker run -d -p 8080:8080 pgeiss/appname; sleep 10 - curl --retry 10 --retry-delay 5 -v http://localhost:8080/res.json

3
オートメーションと.NETフレームワーク、どのツールを使用しますか?
Go、NodeJS、Java、Pythonなどのさまざまなプログラミング言語のデファクトで人気のあるツールの選択を知っています。しかし、.NETの世界でどのツールチェーンが合理的または(ホット)かさえわかりません。Octapusデプロイを使用していると聞きましたが、これはまだ有効な選択肢ですか?NuGetはまだ事実上​​のパッケージマネージャーですか?コード検査、自動QAなどについてはどうですか? .NETの完全なツールチェーンと、開発、自動テスト、および配信を検討する際に現在人気のあるものについて感じたいと思います。

1
Uberjarを監視するようにrunitを構成するためのAnsibleプレイブック?
Spring Bootマイクロサービスのデプロイには、Ansible 1.9を使用しています。CentOS 6を使用しており、サービスはrpmとしてパッケージ化されています。SysVinitやUpstartではなく、runitによって監視されるように実行可能jarファイルを構成する予定です。 RPM内にrunit構成をパッケージ化し、Ansibleに特定のプロパティのみをにデプロイさせることは理にかなっています/etc/sysconfigか?または完全なrunit構成にAnsibleを使用するより良い方法が存在するため、サービスはそのホスト構成から分離されますか?

3
凍結テスト環境を実装するにはどうすればよいですか?
「統合によって引き起こされるテスト環境での不安定性を継続的に回避するにはどうすればよいですか?」に関する質問への回答の一部を以下に示します。 通常、この環境はテスト中にフリーズします。 私の質問:凍結環境のサンプル実装は何ですか?つまり、誰もが(リリースマネージャーのような承認されたユーザーによって許可されている場合を除いて)そのようなフリーズされた環境では何も変更できないように技術的に強制するために何ができますか。 明確化: 銀行での年末処理中(例)の「凍結期間」とは何ですか(私が思う)について話しているのではありません。それは、年末の処理に影響を与える可能性のある新しい変更/修正が導入されるリスクを軽減するために、実稼働環境に変更を適用することを許可しないことです。 変更の承認/適用を許可されているユーザー(私の例のリリースマネージャーなど)は、例外的な場合にのみ変更を行うと想定します。テスト中に重大度の高い問題が発生した場合など、修正を次のリリースに延期することはオプションではありません(そのような修正なしでリリースがアクティブ化されると、本番稼働が危険になるため)。 これは、テスト中に自動更新を一時停止することに関するだけの可能性があります。重要なのは、別のチームがまだアプリケーションAに依存するバージョンXでアプリケーションBをテストしている間に、誰かがアプリケーションAをバージョンYにアップグレードしないようにすることです。テスト。

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