DevOps

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

5
機能フラグトグルの使用を開始するように開発者を説得する方法
機能フラグの切り替えは良いアイデアであり、開発者が記述するコードに実装する必要があると仮定します。例えば、Etsy は彼らの文化の大部分として彼らに誓います。 機能フラグトグルの使用を開始するように開発者を説得する(そして強制する)良い方法は何ですか? 機能フラグトグルの詳細については、Q:機能フラグトグルの使用方法、Q:機能フラグトグルとは何か、およびMartin Fowlerのブログのテーマに関する Pete Hodgsonの記事で説明されています。

4
Gitフローを簡素化するために開発ブランチを取り除く方法
継続的に開発されたWebプロジェクト(製品ではない)には、現在gitフローにほぼ基づいた次の分岐戦略があります。 開発ブランチ:最新の作業バージョン マスターブランチ:リリースされるバージョン/リリースされるバージョン 機能ブランチ:開発中の機能 ホットフィックスブランチ:リリースバージョンの緊急バグ修正 マスターは読み取り専用で、開発ブランチまたはホットフィックスブランチからのプルリクエストによって更新されます。各更新により、リリース候補が構築され、ステージングシステムに展開されます。リリース候補は、手動の承認後に実稼働に展開されます。 フィーチャーブランチはオフに基づいて作成されている開発、または最後のマスターにマージされたことにコミットから。開発する機能ブランチからのプルリクエストが構築され、統合テストと受け入れテスト(自動および手動)が実行される無料のテストシステムにデプロイされます。テストとレビューに成功すると、PRはマージされ、次のリリースの一部になります(開発からマスターへのマージ)。 私の目標 これを簡素化し、開発ブランチを削除したいと思います。開発ブランチには主に歴史的な理由があり、常に正常にテストされたバージョンであるため、マスターから切り離しておく必要はないと思います。これを削除すると、追加のマージがなくなるため、リリースプロセスも簡素化されます。 次の制約があります。 リリースは予定されており、完全に自動化するべきではありません 機能ブランチは通常短命ですが、一部は数週間マージされないままになります(たとえば、再設計)が、同様にテストする必要があります(現在、開発のためのオープンプルリクエストとして) 場合によっては、通常のリリース以外で単一の機能をリリースして、事実上それを修正プログラムに変更する必要があります。現在の戦略では、機能ブランチをリベースし、直接マスターにマージできます ステージングでの外部システムとの受け入れテストが失敗した後、機能を保留する必要があることも起こります 移行についてわからない場合: 現在、テスト用のプルリクエストを作成し、リリース用のコミットをマージしています。これを統合できますか? マスターが最新リリースより前である場合のホットフィックスの処理方法。ホットフィックスブランチからリリースを直接ビルドおよびデプロイする必要がありますか? 既にマージされたリリースから除外されるべき機能に対処する賢明な方法はありますか?これらの場合、独立した開発ブランチは本当に利点ですか?とにかく、ほとんどの場合、手動でコミットを元に戻して元に戻すことになります。

1
Ansible vaultシークレット用のGit clean / smudgeフィルター
ansible-vaultコマンドを使用して、秘密を含むファイルを自動的に暗号化および復号化するために、gitでclean / smudgeフィルターを設定しようとしています。 ansible-vaultコマンドの特徴は、it等ではないことです(同じデータで呼び出されるたびに異なるバイナリを作成します)。 このブログページで提案されている実装から始めました。残念なことに、それは正しく機能しませんでした。汚れが呼び出されると(git checkout、または単にgitステータス)、秘密ファイルはgit用に変更されたように見えます。 だから、gitがインデックスにあるバイナリをクリーンフィルター処理された現在のファイルと比較するのではないかと思い、これらのスクリプトを次のように構築しようとしました。 #!/bin/sh -x # clean filter, it is invoked with %f if [ ! -r "$HOME/.vault_password" ]; then exit 1 fi tmp=`mktemp` cat > $tmp # get the plain text from the binary in the index tmphead=`mktemp` git show HEAD:$1 > $tmphead contenthead=`echo "embedded" …

2
SecOpsとは?
最初にSecOpsという言葉を聞いたとき、DevOpsが開発者と運用チームを統合するのとほぼ同じ方法で、セキュリティと運用チームを接続することを目的とする管理アプローチと考えました。 しかし、セキュリティはDevOpsパズルの一部ではありませんか? DevOpsには、コンポーネントの監視、バージョン管理、ベンチマーク、コードレビュー、継続的な監視などのプロセスが既に含まれています。 SecOpsはDevOpsチームに他に何を追加できますか?

4
継続的インテグレーションは、継続的な配信/展開とどのように関係していますか?
これは、continuous-integrationの現在の内容からの引用です: ...統合の問題を防止または最小化するために、開発者の作業コードのコピーを共有コードベースに頻繁にマージするプロセス。 わかった。しかし、その後、継続的な配信と 継続的な展開もあり、それは私が継続的に少し迷子になるところです: どのように継続的な統合はに関連し、連続配信および/または連続展開を経由して行(複数可)に沿ってどこかにいることを想定して、integrationあなたは結局deliveringすべてが可能になるターゲット環境でdeployed。 継続的デリバリーと継続的デプロイメントの違いは何ですか? 昔、DevOpsがDevOpsと呼ばれる前に、次のような新しいDevOps用語を理解するのに役立つ用語を使用していました。 pre-prodターゲットに昇格(または降格)し、必要に応じて何らかのタイプの再生成プロセス(コンパイル、バインドなど)と組み合わせて、関連するすべてのコンポーネントを実行可能ファイルにまとめます。それは、継続的インテグレーションに似ている/近いはずなのか、そうでないのか? FTPのようなものを使用してターゲット環境に配布します(標準のコピーがギャップを埋めることができない場合)が、ターゲットでまだアクティブにしないでください。それが連続配信に似ている/近いはずなのか、そうでないのか? インストール(またはアクティベートそれは近い/類似していなければならないものだなど、)一部のターゲット環境では、バインド、停止/起動操作のようなものと組み合わせて連続展開、かどうか?

6
自分の会社に合った、良いDevOpsを雇うにはどうすればいいですか?
優れた開発者は、ジョエルテストのルール11に適合する必要があります。 新しい候補者はインタビュー中にコードを書きますか? ただし、Dockerコンテナー、JenkinsまたはAWSの構成方法などについてはほとんど何も知りません。応募者がそのようなタスクを管理できるかどうかをテストする良い方法は何でしょうか。 サブ質問:優秀なdevopsの従業員はビルドチェーンを一度設定すれば、それ以降は動作するはずだと思います。その後、彼または彼女が会社の開発者になることを期待できますか(DEVops)?DevOpsは比較的「新しい」仕事なので、中小企業が必要なときにdevopsの従業員を共有したり、フリーランサーとして雇う方が良いでしょうか。 この用語についての私の混乱は、このようなstackexchange(=上記のスクリーンプリントの元になったリンク)のような求人に由来しています。 私はこれを参考にしたが、この質問につまずいたら読みたいと思うかもしれない意見がある可能性のある記事を見つけました:https : //hackernoon.com/devoops-some-common-anti-patterns-1850ac2f5074

2
バリューストリームマッピングとは
バリューストリームマッピングについて、またソフトウェアを提供するプロセスを含む製造プロセスのバリューストリームを分析するためにそれをどのように使用できるかについて多くのことを聞きました。ソフトウェア開発および運用チームのコンテキストで正常に配信されるのを見たことはありません。 バリューストリームマッピングとは何ですか?それをソフトウェア配信にどのように適用できますか?

2
リージョン間レプリケーションは、S3リージョンの停止に対して100%確実です。
Amazon S3には、リージョン/ゾーンの停止に対して非常に耐障害性があるクロスリージョンレプリケーションのオプションがあります。 それは、停止について暴言を述べている人々がこの側面を利用しなかったことを意味しますか? または、リージョン間レプリケーションは完全に無防備ではなく、助けにはならなかったでしょうか?
19 amazon-s3 

5
テスト環境で継続的な統合に起因する不安定性を回避する方法は?
ターゲット環境を頻繁に更新する継続的統合プロセスを使用しているため、「変更」があるたびに「すぐに」変更をテストできます。それはCIの目標の一部ですよね? ただし、管理者や顧客など、テストサイクルに関係する他の人もいると仮定します。他の人にあなたの今後の変更をレビュー(破壊?)させようとするのは理にかなっていますよね? しかし、他の人々が真剣にテストしようとしている環境で継続的に変更を提供し続けると、次のような複数の問題が発生する可能性があります。 they 問題を報告するのに時間を浪費する可能性があり、(詳細な)レポートを保存するまでに、問題を自分で再現することさえできなくなります(たとえば、誤って同じ問題に遭遇し、環境で既に修正しているため)。 you 何らかの問題に遭遇した環境はもはや同一ではないため、彼らが報告した問題を再現できない可能性があります(あなた(!!!)が環境をオーバーレイした可能性があります)。 それで、あなたはそのような(イライラする)状況を避けるために何をすることができますか(物事を構成する方法?)

7
最小の作業ドッカーイメージを毎回作成する方法は?
目的:常に最小の作業用ドッカー画像を作成する 現在 REPOSITORY TAG IMAGE ID CREATED SIZE a-docker-image latest x 42 minutes ago 1.92 GB 試行 Dockerfileの最後にクリーンアップステップを追加します。 #clean RUN apt-get purge -y wget RUN rm -r a-build-dir RUN apt-get purge -y a-package 画像サイズを少し縮小しました: REPOSITORY TAG IMAGE ID CREATED SIZE a-docker-image latest y 2 minutes ago 1.86 GB 討論 さまざまなdockerイメージを作成しました。作成する画像のサイズを小さくしようとするたびに、常に大きすぎると感じます。githubの誰かによって既に作成されているスクリプトを探しています。このスクリプトは、作成されたイメージのサイズが可能な限り小さくなるように、イメージからすべての余分なパッケージを削除します。 …
19 docker 

7
Jenkinsを安全に再起動する方法は?
Jenkinsを数回再起動することを含む、Jenkinsインスタンスの構成を変更する必要があります。しかし、当社の開発者は十分な頻度でコミットしているため、3日間でジョブが実行されていないJenkinsを見たことはありません。 Jenkinsを安全に再起動するネイティブな方法(GUIまたはコマンドライン経由)がありますか?IE:ダウンする前に現在のジョブが完了するのを待ち、Jenkinsが戻ったときに開始するキューに入れられたジョブを追跡します。 プラグインがあることは知っていますが、それをインストールするには、Jenkinsを再起動する必要があります...
19 jenkins 

3
docker-compose無効な型、文字列でなければなりません
docker-compose.ymlファイルで次の環境変数を設定しています: version: '3' services: server: ports: - 13045:3000 environment: - NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}' 実行しようとするとdocker-compose up、このエラーが発生します: services.server.environment contains {"NODE_CONFIG": "{\"DATABASE_URL\":\"http://db:5984\"}"}, which is an invalid type, it should be a string 環境変数をJSON文字列に設定する必要があります(https://github.com/lorenwest/node-config/wiki/Environment-Variables#node_configを参照) ここで何か間違ったことをしていますか?これを何らかの方法で動作させることはできますか?

2
Ansibleでホストキーチェックをバイパスできますか?
私は、任意のポート転送ポートで動作するように微妙なハックでAnsibleプレイブックを実行しています(したがって、多くのマシンに直接アクセスせずに1台のマシンを使用できます)。 ansible_port変数を変更するための事前タスクがあるので、実際のタスクとロールの実行を開始すると、ランダムポート上のローカルホストのホストキーを受け入れるように求められます。 私は単純であり、セキュリティを気にしないので、sshが自動受け入れてリダイレクト/dev/null(またはロギング用の別のファイル)したいです。 これは可能ですか?
19 ansible 

2
メトリックの組み合わせに対してCloudWatchアラームを設定することはできますか?
たとえば、次のCloudWatchアラームをトリガーしたい: Number of messages sent- Number of messages deleted> = 6 上記はAWS SQSメトリックス用です。そして、そのアラームがオフに設定されている場合、そのメトリックがAWS Lambdaをトリガーするようにします。 私にできる方法はありますか?そうでない場合は、回避策があります [サーバーレスパラダイムを目指して] [私はそれをしたい。なぜなら、現在キューにある(利用可能な)メッセージの数を示すメトリックが存在しないからだ。だから、それを私に与えることができるメトリックがあれば、それは非常に役立つでしょう

8
Certbotプラグインをインストールする方法は?
このチュートリアルに従ってCertbotをインストールしました。 sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx そして今、証明書を設定したいのですが、dns-digitaloceanプラグインが必要です: # certbot certonly --dns-digitalocean Saving debug log to /var/log/letsencrypt/letsencrypt.log Could not choose appropriate plugin: The requested dns-digitalocean plugin does not appear to be installed The requested dns-digitalocean plugin does not appear to be installed 私はそれをインストールしようとしましたpip: pip install certbot-dns-digitalocean …
19 ssl  certbot 

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