DevOps

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

1
Sensu TCP接続の問題
仮想マシン上で実行中の新しいsensu / uchiwaスタックがあります。これは「スタンドアロン」インストールです。redis、rabbitmq、sensu-server、sensu-api、sensu-client、uchiwaはすべて同じマシンにインストールされます。client.jsonがサブスクライブする単一のチェックがあります。 要するに、何かが間違っているように見えます。uchiwaダッシュボードにログインすると、「Datacenter sensu-81が返されました:500 INTERNAL SERVER ERROR」という警告メッセージが表示されます。 sensu-client、sensu-apiおよびsensu-serverログは、これらのメッセージのみこれらのメッセージで満たされています。 ==> /var/log/sensu/sensu-api.log <== {"timestamp":"2017-05-11T21:00:34.758243+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"} {"timestamp":"2017-05-11T21:00:34.758784+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"} ==> /var/log/sensu/sensu-client.log <== {"timestamp":"2017-05-11T21:00:35.973060+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"} {"timestamp":"2017-05-11T21:00:35.974858+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"} ==> /var/log/sensu/sensu-server.log <== {"timestamp":"2017-05-11T21:00:37.489540+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"} {"timestamp":"2017-05-11T21:00:37.489704+0000","level":"warn","message":"transport connection error","reason":"possible …

1
パブリックIPv6でDocker SwarmコンテナーにDNS名を割り当てる
公開されているIPv6でDockerコンテナー(Swarmモードで実行)をセットアップする方法を理解しようとしています。 Docker Swarmがメッシュルーティングを使用していることは知っていますが、DNS名をアドレスに動的に割り当てる方法がよくわかりません。 例として、Gitサーバー(HTTP 80 443およびSSH 22を使用)git.example.comと通常のWebサーバーexample.com(HTTP 80 443を使用)を実行するとします。どちらもパブリックIPv6アドレスを持っていますが、IPv6アドレスを(たとえばCloudFlareで)ハードコードしたくありません。結局、これはDevOpsです。 これを行うにはどうすればよいですか?これには自分のDNSサーバーを実行する必要があると思います。 注:さらに調査を行った結果、残念ながらEnterprise Editionの一部にすぎないDocker HTTP Routing Mesh(HRM)でこれが可能であるようです。これに対する同様のオープンソースのアプローチを知っている人はいますか?

2
chefデータベースクックブックは非推奨
私は頻繁にchefデータベースクックブックを使用していますが、非推奨になっているため、更新を受け取りません。彼らはgithubの問題を無効にしさえしたので、私が遭遇した問題が議論され、可能な解決策が提案されたかどうかをチェックすることは不可能です。非推奨の通知では、このクックブックの機能は個々のデータベースクックブックに移動されることになっていますが、これは少なくともMySQLではまだ実装されていません。このクックブックに代わるものはありますか、それとも何百もの他のものと一緒に別のフォークを作成するのに悩んでいますか?
7 chef 

2
.NETプロジェクトのバイナリリポジトリの最良の方法
私は.NETプロジェクトに非常に慣れていないので、.NETプロジェクトのバイナリを保存するのに最適なツールはどれかと思います。.NETプロジェクトのバイナリをアーティファクトに保存するのはどのように良いのですか。その理由は何ですか。一般的に1つの回答が可能ですコメントは役に立ちます。

1
Ansibleを使用してdocker-composeをデプロイするベストプラクティスは何ですか?
Ansibleは、システムにdocker-composeをデプロイし、その後コンテナーを起動するために使用されます。 ansibleがローカルシステムから実行されると、Docker-composeファイルはAnsibleを使用してデプロイされます。 コードがbitbucketにプッシュされると、ファイルのコンテンツは次のようになります。 ../../../../docker-compose.yml CIはこれもシステムにデプロイします。 構造 project/ansible project/docker-compose.yml project/ansible/roles/role/files/docker-compose.yml 討論 docker-compose.ymlを2か所で変更する必要があることを防ぐために、シンボリックリンクが作成されていますが、このファイルにはコンテンツではなくリンクが存在するため、bitbucketでは無視されているようです。 このQ&Aは次のことを示しています。 シンボリックリンクによって参照されるデータはリポジトリに保存されません。 docker-compose.ymlでコードの重複を避けるためにシンボリックリンクを作成すると、問題が発生するようです。

3
分散システム設定でのSQSメッセージの公平な分散を確実にする方法は?
複数のサーバーがあり、それぞれにSQSキューをポーリングするスクリプトがあります(すべて同じキューをポーリングします)。 それで、それらすべてのクライアント(つまり、ここの私のワーカーサーバー)へのメッセージの公平な配布を保証できる方法はありますか?たとえば、キュ​​ーに100のメッセージがある20-20-20-20-20場合、5つのワーカーがある場合などです。 AWS ELB(Elastic Load Balancer)はそれを行うのに役立ちますか?はいの場合、どのように?そうでない場合、AWSエコシステムには、私がそれを行うのに役立つ代替サービスがありますか? それとも私はこれを考えすぎていますか?つまり、これはポーリングスクリプトで直接解決できますか?[複数のクライアントが単一のキューをポーリングすることによる競合状態に注意してください]

1
Ansible条件ステートメントで現在の変数を参照していますか?
私は、ubuntuサーバーでユーザーを作成するために、ansible galaxyのwillshersystems.usersロールを使用しています。これで一貫して機能するようになったので、リストを指定してユーザーが特定のサーバーにアクセスできるかどうかに基づいて状態属性を設定しようとしています。 以下のようなことは可能ですか?私のグーグルフーは今のところ私を失敗させているようです、どんなアドバイスでも大歓迎です! vars: user_servers: user1: - testing1 users: - name: user1 groups: '{{ user_groups }}' state: "{{ ( inventory_hostname_short in user_servers[self.name] ) | ternary('present','absent') }}" roles: - role: willshersystems.users
7 ansible 

1
既存のボリュームをデタッチし、Terraformで新しいボリュームをアタッチするにはどうすればよいですか?
既存のEC2インスタンスからEBSボリュームをデタッチして、新しいEBSボリュームをアタッチする方法はありますTerraform v0.9.2か? インスタンスを破棄して新しいボリュームで新しいボリュームを作成するのではなく、ボリュームを置き換える方が好きです。 ファイルシステムは、ボリュームをデタッチする前にオペレーティングシステム内のデバイスからマウント解除されます。また、AWSコンソールからボリュームをデタッチする問題はありません。 resource "aws_ebs_volume" "create_volume" { availability_zone = "eu-central-1a" snapshot_id = "${data.aws_ebs_snapshot.mysql.id}" type = "gp2" tags { Name = "${var.instance_name}" } } resource "aws_volume_attachment" "mysql_data" { depends_on = ["null_resource.stop_mysql_service2"] device_name = "/dev/xvdf" volume_id = "${aws_ebs_volume.create_volume.0.id}" instance_id = "i-0d48be4266da" skip_destroy = true force_detach = true } $ ./terraform apply …

1
Kafkaトピックラグに基づいてインスタンスを自動スケーリングするにはどうすればよいですか?
特定のKafkaトピックに表示されるラグの量に基づいて動的にスケールアップ/ダウンしたい自動スケーリンググループがあります。スケーリングする必要があるトピックと自動スケーリンググループの間には1対1の関係があります。CloudWatchメトリクスを使用してこれに対処することはできないと確信しています。 競合状態やその他の問題を発生させることなく、ジェンキンスを使用してこれを達成できる方法はありますか? 注:アプリケーションは、CPU、ディスクI / O、またはCloudWatchによって提供されるその他のメトリックによって制約されていません。制約は、着信するKafkaトピックから処理するアプリケーションの機能です。

2
複数の環境でデプロイメント(特にデータベースオブジェクトの変更)を同期する方法[複製]
この質問にはすでに回答があります: データベースの継続的な展開を可能にするプラクティスまたはツールは何ですか? (6つの答え) 5か月前に閉鎖。 私はDevOpsエンジニアであり、数か月前のチームのソフトウェアエンジニアです。開発者は、中央のOracle DBから、個々のラップトップのCentOS VMにDBを持つことに移行しました。中央DBからの移行は、DBAへの依存を減らし、データの不整合に起因する問題を排除することでした。 チームの全員とデータベースの共有と同期を確実にする計画は、各人が全員と変更スクリプトを共有することでした。問題は、Skypeを使用して通信を行うことです(スラックをセットアップするだけですが、まだ完全には使い始めていません)。DB変更スクリプトのテキストが投稿されることもありますが、見落とされる場合があります。もう1つの問題は、一部の開発者が変更の投稿を見逃していることです。さらに、新しいリリースは本番環境にデプロイされ、テストおよびデモ環境にはデプロイされません。 これは私たち、特に最近の私にとって深刻な課題となっており、デモの展開とプロダクションの展開を確実に同期させる責任がありました。同期に関する問題のほとんどは、変更スクリプトがないか、DBオブジェクトがないために、データベースが同期されていないことにあります。Oracleは私たちの好みのDBです。 デモ環境での一般的な展開は、アプリケーションのテストを含む非常に痛みを伴うプロセスであり、DBテーブルの列、関数、ストアドプロシージャの欠落が原因で問題が発生するため、欠落しているDBオブジェクトを探し、それらをDBに適用してから、すべての問題が解決されるまで続行します。 この問題を解決して、スムーズで痛みのない、時間のかからない展開を確実にするにはどうすればよいですか?アプリケーションをDockerに移行すると、DB同期の問題と、それに伴う開発者の規律の欠如を解決できますか?この分野で改善するためにどのようなプロセスを導入できるでしょうか?

1
「nohup」モニタリングのベストプラクティスやツールはありますか?
nohupAWS Lambdaからboto3を介して生成されるマスター内でAnsibleプレイブックを開始するために使用します。 このプレイブックは複数のワーカーを作成し、いくつかのタスクを実行させて終了させます。 そこで、信頼性の高い監視システムを設計/構築したいと思います。とりあえず、マスター内nohupのtasks.logファイルにログを書き込み、Ansibleの再生が完了したら、それをストア(現時点ではS3)にプッシュしています。 しかし、私は同じことをするためのはるかにエレガントな(そして/または)より良い方法があるかどうか知りたいですか?また、その過程で私を助ける良いツールがあるかどうか?

2
Saltstackの柱から依存関係を構築する
Saltでダミー状態を作成して、柱から派生したリストから依存関係をプルしようとしています。 私のtop.slsファイルには、次のものが含まれています。 base: '*': - components 次に、でcomponents.sls私は持っています: {% if 'components' in pillar.items() %} include: {% for component in pillar.get('components',[]) %} - {{ component }} {% endfor %} {% endif %} {% if 'components' in pillar.items() %} components: require: {% for component in pillar.get('components',[]) %} - {{ component }} {% endfor …

2
マイクロサービスのクラスターをテストする方法は?
Server Specを調べたところ、次のようにはっきりとわかりました。 備考:serverspecテストスイートは、単一のマシン(またはDockerコンテナー)に対して実行するためのものです。言い換えると、複数のマシンまたはコンテナに対してテストをハーベストして実行する単一のrspecコマンドを発行しないでください。それらのそれぞれに対して1つのrspecコマンドを発行する必要があります。 したがって、サーバーごとにテストを行うことができます。しかし、問題は次のとおりです。私のマイクロサービスアーキテクチャには自動検出サービスがあるため、クエリを実行すると一部のサービスが認識されます。これを表現するプロジェクトはありますか?ruby(またはtestinfraなどを選択した場合はpython)でツールを使用できることを知っています Consulとserverspecまたは類似のものと統合する何かが素晴らしいでしょう、2014年に人々はこれを探していましたが、誰かがこの問題に取り組んだプロジェクトを知っていますか?

1
複数の「機能」反応アプリをモノリシックPHPリポジトリに統合する方法は?
mono-laravel-repoがあり、よりクリーンでメンテナンスが容易なdevの再起動に移行中です。 最近、既存のPHPベースのビューを、/reactディレクトリ内に存在し、/react/featureNameサブディレクトリに編成された複数のReactベースの「機能」に移行するようになりました。これは、Laravelのコントローラーがデータと認証のみを処理することを意味します。 各機能は1人以上の開発者によって管理され、独自の依存関係、テスト、機能を備えています。 現在、機能別に整理されたプロジェクトのパブリックルートでビルドを提供しています。 js/FeatureName.hashed.js css/FeatureName.hased.css これは、間で多くのパッケージを共有することを除いて、うまく機能しますfeatures。自己反応、ルーターの反応など 私たちmix.jsはできる限りLaravelを使用するつもりですが、直接ハッキングすることwebpack.configもオプションです。 他のアプリケーションロジックとは別にvendor.jsビルドmix.extract()を定義できるオプションを検討しましたが、そこで停止します。 だからここに私の質問です package.json各機能ディレクトリにある複数のファイルを管理するためのアプローチは何ですか 一般的なパッケージを特定してルート/package.jsonファイルにロックする方法を教えてください。(独立して、すべての開発者はすでにを使用していますyarn) すべての反応ベースの開発者ができる限り少ない摩擦でこれを達成する方法-彼らがすでに行っていることを単純に続行し、DevOpsが粗末なビットを処理できるようにするには? さらに詳しい情報が必要になる可能性があることを理解しています。コメントで必要な情報をお知らせください。質問を更新させていただきます。

3
ボルトパスワードファイルが設定されているにもかかわらず、暗号化されたAnsibleファイルを復号化できないのはなぜですか?
このQ&Aのフォローアップ。 これとこのドキュメントによるとvault_password_file = ~/.vault_pass.txt、次のファイルのいずれかを指定することにより、デフォルトのボールトパスワードファイルを定義できるはずです。 * ANSIBLE_CONFIG (an environment variable) * ansible.cfg (in the current directory) * .ansible.cfg (in the home directory) * /etc/ansible/ansible.cfg パスワードファイルが存在し、ログに、定義を含むansible.cfgが使用されていることが示されますが、復号化は失敗します。 user@host$ Using /etc/ansible/ansible.cfg as config file ERROR! Decryption failed on /path/to/ansible/group_vars/production/vault 討論 このボールトのパスは正しいですか? はい。--vault-password-file=~/.vault_pass.txt復号化を使用してansibleが実行されると、成功します。 明確にするために、環境変数の名前はANSIBLE_VAULT_PASSWORD_FILEですよね? いいえ。この変数を使用すると機能しますが、目的は、を設定してansible.cfgに設定すること/etc/ansible/ansible.cfgです。 どのAnsibleバージョンが使用されていますか? user@host:/dir$ ansible --version ansible 2.2.2.0 config file = /etc/ansible/ansible.cfg …

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