概要:
すべての主要なLinuxディストリビューションは、制御された安全な方法でソフトウェアをインストールするためにパッケージマネージャーに依存しています。
この提案では、パッケージは開始点としてRPM 、 deb 、およびopkg形式で作成され、後日、追加のパッケージ形式が追加されます。
なぜ私たちはこれが必要なのですか?
多くの企業組織は、gitが自社以外のサーバーに接続することを妨げており、 wget
コマンドも許可していない可能性があります。
Dockerはこれらの組織内でも利用できないことがよくありますが、パッケージリポジトリへのアクセスは「既知の量」であるため、特にパッケージは作成プロセスの一部として完全に署名される傾向があるため、セキュリティチームへの販売が容易です。
Dockerが適切ではない状況もあります。 これには、システムインテグレーター/マネージドサービスプロバイダーが、コンテナーではなくインスタンスに基づいてAWS Auto Scaling Groupsを使用してスケーリングする場合や、安全な環境でベアメタルをインストールする場合が含まれます。
利用可能なパッケージがない場合、Ansible、Chef、Puppetなどの構成管理ツールを介したインストールも非常に困難です。
最後に、パッケージではなくgitリポジトリからのインストールは、コンパイラなしでは困難です。これにより、本番システムにコンパイラをインストールすることでセキュリティリスクが発生します。
すでに何がありますか?
現在、2つのDockerコンテナ( ttn-lw-stack
とttn-lw-cli
)から選択するか、gitから同じ名前のバイナリを構築するかを選択できます。
展開はdocker pull
またはgit clone
のいずれかを介して行われますが、どちらも企業/教育用ファイアウォールの背後では機能しない可能性があります。
何が欠けている?
yum
、 apt
、またはopkg
を介してインストールする機能
これをどのように実装することを提案しますか?
これは、 GO Releaserを使用して比較的簡単に実装できるはずですが、GOは私が特によく知っている言語ではありません(まだ!)
環境:
Linux-CentOS / RHELベース、Debian / Ubuntuベース、OpenWRTベース
あなたは自分で何ができますか、そしてあなたは何を手伝う必要がありますか?
これがデプロイ用のgoアプリケーションをパッケージ化する適切な方法であることを確認してから、GO!を理解している人からの実装を支援する必要があります。
APT、AUR、 https://github.com/nixos/nixpkgsにパッケージを追加することから始めます。これは、これらの形式に既に精通しているためです。 他のものは後で追加されます。
もちろん、寄付はいつでも大歓迎です!
@rvolosatovsは、go-releaserを使用しますか、それともパッケージを作成する別の方法を使用しますか?
あなたがそれらを作成するために何を使用しているのかを知っている限り、私は物事のRPM側で作業できてうれしいです! :)
この部分もCDで作成します。
また、ウィッシュリストにbrew
を追加します。
これに私のサポートを追加するだけです。 Dockerを使用したことはありません。プログラミング言語がたくさんあることはありがたいですが、これは、これまで使用したことがない人にとっては大きな飛躍でした。 リポジトリから離れることは、開発者が物事を行うのが好きな方法ですが、エンドユーザーにとってはあまり友好的ではありません。
これに関するすべての作業に感謝します。今後数日以内にRPMサポートを追加してテストする時間を見つけたいと思っています。
@proffalken CIの一部としてRPMパッケージをビルドします。リリースが完了すると、リリースページで見つけることができます。 (参考までに、githubはリリースのAtomフィードもサポートしています:https://github.com/thethingsnetwork/lorawan-stack/releases.atom)
私はgoreleaserを使用するというあなたの提案に従いました。
RPMパッケージ自体に関しては-(今のところ) https://github.com/TheThingsNetwork/lorawan-stack/blob/b1183962c502e6b53191086c23567c546c2b8ec5/.goreleaser.yml#L79 -L92
たとえば、フロントエンドの場所はRPMパッケージに対して非標準であり、実際にはスタックのデフォルトでもないのではないかと思います( /srv/ttn-lorawan/public
になると予想されます)。
したがって、これをどのように行うべきかについてのあなたの意見は非常に役に立ちます。
たとえば、 brew
の場合、スタックバイナリをラップして、関連する環境変数がフロントエンドを指すように設定することに注意してください。
https://github.com/TheThingsNetwork/lorawan-stack/blob/b1183962c502e6b53191086c23567c546c2b8ec5/.goreleaser.yml#L116 -L119
RPMパッケージでのこれの予想される場所は異なると確信していますが、同じアプローチを使用できることを願っています。
@rvolosatovsは私には完全に理にかなっています。
env varsの設定は、おそらくsystemdサービススクリプトで行うのが最適です。できるだけ早くまとめてみます。
/srv/ttn-lorawan/public
に物事を貼り付けることも完全に許容されます:)
@rvolosatovsラベルや元のコメントを更新して、もう助けが必要ないことを示したり、特定の配布について助けたりできますか? コミュニティのメンバーがこれを熱心に実装し始める前に、ほとんどの作業が進行中です。
v3.0.0
リリースの欠如によりブロックされました。
プレリリースバージョンをリポジトリに公開することは意味がありません。
リリースのため閉鎖されました。 SnappyとBrewのサポート、およびdebファイルとrpmファイルがあります
最も参考になるコメント
この部分もCDで作成します。
また、ウィッシュリストに
brew
を追加します。