DevOps

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

1
サービス制限警告のAWS Trusted Advisorアラートを設定するにはどうすればよいですか?
Trusted Advisorのサービス制限のいずれかがWARNまたはERRORステータスになったときに、AWSが私にメールを送信してほしいだけです。私は彼らのガイドを確認し、サポートとチャットしてみましたが、誰もそれを実現することはできないので、私はここに連絡しています。 使用事例 多くのEC2インスタンスとCloudFormationスタックを起動し、すべてが多くのリソースを使用します。どういうわけか、私たちは常に検証スプリントの真ん中で知らない制限に達し、AWSが私たちの制限にぶつかるのに甘い時間を費やしている間、1時間ブロックされました。サービス制限の1つに近づいているときに、メールでdevopsに何らかのイベントを設定したいのですが。週に1回程度の頻度でチェックしても問題ありませんが、そのような細分性が可能であれば、1日に1回のほうが望ましいでしょう。 試み CloudWatchイベントを設定しようとしましたが、サービス制限が更新されたときにメールで通知するしかありませんでした。 オプション AWSの内部にはデフォルトの機能がないとサポートから言われたので、カスタムイベントオプションを探しています。または、可能であれば、Jenkins2とAWS CLIを利用するものも受け入れます。Jenkinsを使用する方法であれば、メールを送信する必要はありません。答えが変わった場合、私はおそらくdevopsチャネルを緩めるでしょう。

1
「Push on Green」とは何ですか?
Googleや他のDevOps組織内で、彼らは「Push on Green」について話します。私は、自動テストの正常な実行に基づく継続的デリバリーの実践であり、おそらくライブ環境への展開であると信じています。 「Push on Green」とは具体的には何ですか、それを適用する意味は何ですか?

2
Jenkins PipelineでDockerを実行するときの正しい権限設定は何ですか?
新しいjenkinsパイプラインをまとめて、コードへの新しいプルリクエストをテストしようとしています。ubuntu:14.04画像でdockerを使用して、本番環境をシミュレートしています。 以下は最小の動作例です: #jenkinsfile stage('Checkout and provision'){ docker.image('ubuntu:14.04').withRun('-u root'){ checkout scm sh 'chmod -R 770 ./' sh './init-script.sh' } } そして #init-script.sh sudo add-apt-repository ppa:ondrej/php sudo apt-get update -y sudo apt-get dist-upgrade -y sudo apt-get install \ apache2 \ php \ php-mysql \ php-xml \ libapache2-mod-auth-mysql \ libapache2-mod-php \ php5-curl \ …
11 jenkins  docker 

1
Nexusアーティファクトリポジトリの負荷分散
Nexusの負荷分散は現在、Sonatypeではサポートされていません。ただし、Nexusインスタンスを2つ目の前に配置して、スマートプロキシを有効にするか、新しい機能を使用する場合を除きます。 それでも、ファイルシステムをのGlusterFSと共有し、Apacheロードバランサー構成とUIのネクサス構成でスティッキー/storageを有効にしようと試みました。 UIでは、NexusコンテナーがCookie値を設定するためのプロパティを尊重していないように見えるので、惨めに失敗しています。現在、次の構成を使用しています。 ストレージの場合、制限GETとHEADリクエストのみで機能するようですが、それでもPOSTsを開く必要があります。スケジュールされたジョブの付随的な影響についても確信が持てなかったため、「セカンダリ」ノードではすべて無効にされました。 誰かが負荷分散ネクサスの信頼できる構成をある程度達成しましたか?UIは実際には負荷分散されることは重要ではありません。ストレージについては十分満足しています。

2
環境変数を保存するにはどうすればよいですか?
これは、環境変数/構造に関するメソッドとアドバイスに関する非常に幅広い質問です。しかし、最終的には「環境変数をどのように保存すればよいですか?」という非常に具体的な質問に対する答えを探しています。 まず、いくつかの説明: 私にとっての環境は3〜10台のサーバーであり、特定の顧客のインフラストラクチャを含める方法です。 各環境内にはいくつかの変数があり、それらはほとんどいくつかのキー入力(名前、サイズなど)から自動的に生成されます。 現状では、すべての環境変数を次のような構造に格納しています。 <playbook>.yml # Various playbooks for deployment roles/windows # Ansible role for Ubuntu roles/ubuntu # Ansible role for Ubuntu config/hosts/<name>.yml # Ansible inventory config/hosts/vars/<name>.json # Environment specific variables 現在、構成は上記のgitリポジトリのサブモジュールとして初期化されています。変数ファイルはかなり頻繁に変更されるため、これによりデータの変更に関する問題が発生し、コミット間で1回、2回、または3回でさえ、変更の追跡がますます困難になります。 個人的にはこれから先を見ますが、すべての顧客変数を一元化された/スケーラブルな方法で保存し、次にansibleを使用して動的なインベントリでそれに接続する必要があります。 Consulのように、必要とされる可能性のある部分を実行しているように見えるいくつかのテクノロジーがあることは理解していますが、それらは、小さなわずかに異なる多数のアプリケーションではなく、1つの大きなアプリケーションを提供する環境で最適に動作するようです。 基本的には、インベントリスクリプトを作成し、すべてのデータを目的外に構築されたデータベースに移動し、何も変更されていないかのように続行する必要があることを理解しています。これはおそらく、現在保存している多くのデータを潜在的に削減する方法であると考えています。おそらく、単にデータを再利用するだけでなく、データを保存するさまざまな方法を検討しています。 1つ、2つ、または3つの巨大な環境ではなく、多くの小規模な環境に対処する必要がある場合、誰かがコードとしてインフラストラクチャを実装した経験があることを願っています。 助言がありますか?

2
ジョブの出力が空でない場合にのみ通知を送信する方法
rundeckを使用してサービスのログファイルをスキャンし、そこにあるものに応じてアクションを実行しています。基本的に、レコードが存在しない、見つかった各アイテムに対して、gitリポジトリが初期化され、いくつかの残りのエンドポイントが呼び出されますが、それは重要ではありません。 予定どおりに実行するように、たとえば数時間おきにジョブを設定し、失敗時に通知を送信し、さらに少なくとも1つのアクションが実行された場合にのみ成功時に通知を送信します(つまり、タスクのシェルスクリプトが入力されました)ループは少なくとも1回)。スクリプトは、アクションを実行するアイテムが見つかった場合にのみstdoutに出力を出すように記述されています。 この要件で通知をトリガーする方法はrundeckにありますか?または、プラグインを最初から作成せずにスクリプトを作成する方法はありますか? 考えられる回避策の1つは、失敗通知トリガーをオフに切り替え、アクションが実行されたアイテムがない場合にスクリプトがゼロ以外の値を返すようにすることですが、私はそれを行うことには抵抗があります。

1
job-dslファイルをJenkins 2パイプラインにアップグレードするにはどうすればよいですか?
Jenkins job-dslの大規模なリポジトリをJenkins2パイプラインに移行するための一般的な方法はありますか?同じコードベースから生成されたアーティファクトの比較より少し進んだビルドの動作をテストする方法を探しています。 実際、Ansibleを介して導入された非常に大規模なインフラストラクチャがあり、トポロジ的に本番環境と同等の検証環境を取得しているため、問題はありません。300を超えるプロジェクトリポジトリからビルドするため、自動化できる検証手法にもっと興味があります。数千のジョブがいくつかのJenkinsマスターに分散しています。

1
TerraformでDigitalOceanチームにホストを作成するにはどうすればよいですか?
Digital Oceanのチームはごく最近で、Terraformでの使用に関するドキュメントはありません。 私が見つけることができるすべての情報は、それらを手動で操作する方法です。 私は私が次のようなことを言うことができることを望んでいました: resource "digitalocean_droplet" "host" { image = "${var.image}" name = "${var.host_name}" region = "${var.region}" size = "${var.size}" private_networking = "${var.private_networking}" ssh_keys = ["${var.ssh_fingerprint}"] team = "${var.team}" } team = "${var.team}"最後に注意してください。 TerraformはプロバイダーAPIの上のラッパーにすぎないため、これに関するフィールドのエンドポイントを見つけようとしているドキュメントを調べましたが、何も見つかりませんでした。 TerraformでDigital Oceanチームをどのように使用すればよいですか?またはmain、Terraformで自動化したいのですが、アカウントに行き詰まっていますか?
11 terraform 


1
Kubernetesの呪文とは何ですか?
質問 Kubernetesでの魔術の呪文とは何ですか? バックグラウンド UbuntuでKubernetesをフォローして、jujure-up kubernetesを実行すると、選択するスペルを尋ねるスナップショットが表示されました。しかし、これが何を求めているのかわかりません。 Conjure-upドキュメンテーションのスペル選択は、スペルと選択を伝えますが、それらがまだ何であるかは明確ではありません。したがって、どれを選択するか(コアまたは正規)およびそれらが何かについての説明と提案を探します。

2
CALMSパラダイムを通じてDevOps採用プロセスの最適化への道は?
DevOpsの採用の多くはたまたまキーワードマッチングの流れに沿って行われるため、私の意見では、テクノロジーのみに焦点が当てられています。 現在、DevOpsは単なるテクノロジー以上のものであり、DevOpsエンジニアは、ある程度のコーディングスキルを持つ優れたシステム管理者ではありません。 シニアDevOpsの役割/プロファイルとは、リーン、測定、オープンでコミュニケーション能力などのインフラストラクチャおよびソフトウェアエンジニアリングスキル以外にも、他の多くの基盤と実践でシニアリティーを提供することを意味します(誰がDevOpsにコミュニケーションスキルを正直に求めていますか?) それでは、求人広告/面接を何らかの方法でより効率的にすることができます-たとえば、質問するCALMSカテゴリも適用することによって?-「今、無駄のない原則をどのように適用しますか?最近のDevOpsプロジェクトで文化的側面はどのように扱われましたか?」のような質問につながります。 さらに詳しく: Cの ulture(紛争管理と障害に対する態度、自分と他人のために例えば戦略) utomation(ここではあなたが人形/ドッカーなどスキルについて尋ねます) L ean(リーンの基礎?廃棄物タイプ?) Mの easurementは(JMeterのようなツールを求めるが、サンプリング、データモデリングのようなものにも行きます。) Sのヘリング(明らかにナレッジマネジメントと応じたツール) 更新-では、なぜ雇用主/採用担当者は、以下に示すようにCALMSによる面接を構成しないのですか(さらに、「自動化」セクションはDevOps ツールチェーンモデルに沿って定式化できます(ドキュメントリンク、読み取り専用))? サイドノート- たとえば、カルチャーは実際にはもはやソフトスキルではありません。DevOpsにとって、それはこのドメインの他のすべてと同様に、コアスキルの1つです。
11 culture 


2
DevOpsオントロジーモデルを確立するための既知の取り組みは何ですか?
今日、多くのドメインで、ドメインデータを機械可読にするセマンティックオントロジーがあります。DevOpsと関連ドメインには非常に多くの用語があり、ベンダーによって確立されることが多いですが、Jenkinsの宣言的パイプラインのような他のツールにも適用できます。 DevOpsドメインのオントロジーを確立するための現在の取り組みは何ですか? 参考文献/参考文献: オントロジー開発101:初めてのオントロジーを作成するためのガイド オントロジー(情報科学) オントロジーリポジトリ メディアリソース1.0のオントロジー

1
データベース設定に関してDrupal(またはその他のソフト)インストールを自動化する場合のベストプラクティス
自動化するDrupalおよびCiviCRMのインストールがあるとします。 ただし、これらを連携させるには特定の設定が必要です(一部のファイル編集とデータベース設定)。 修正バージョンをインストールして(例:Drupal 4.7.5 + CiviCRM 4.5.6)、それらをインストールして構成してから、編集したファイルとデータベースを保存しますか? それとも、ビルドスクリプトにもっと力を入れて、データベースとファイルでこれらの構成を編集するためにいくつかのクエリとsedを作成する必要がありますか?

1
アサーションと制約
構成ファイルを作成するためのテンプレートを作成しています。このファイルを使用するサービスは、識別子の長さに制限を設けています。 識別子がたとえば6文字より長い場合、サービスは構成の適用の途中で失敗し、ノードを不整合な状態のままにします。 アサーションを実行してデプロイメントトランザクションの失敗をトリガーし、ターゲットノードのサービスが正しく設定されないようにするにはどうすればよいですか? 私の特定の状況はソルトですが、他のシステムでも問題がどのように解決されるかを知りたいと思います。

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