仮想環境コンテナ総合スレ Docker、Vagrant等 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/02/16(木) 18:01:04.48ID:rGWDv0Eb
開発に仮想環境やコンテナを使う機会が多くなってきたので、みんなで情報交換しませう

よろしこ
2017/08/27(日) 16:45:51.14ID:QpZ6CaB1
ansibleってなんかめんどくさいな
ベキトウセイとかシェルスクリプトで十分じゃん
apt-get install -y hoge
これだけでもベキトウだよ
なんでわざわざあんなわかりにくい大げさなyml書かなきゃいけないのさ?
2017/08/27(日) 17:01:52.72ID:rl9QFWEb
誰しもがメンテしやすいシェルスクリプトを書ける訳じゃないからね
逆に言えば書けるならそれでいいという話になるが
2017/08/27(日) 17:09:12.09ID:QpZ6CaB1
>>66
プレイブックは誰にでもメンテナンスしやすいものだっていうansible側の広告が刷り込まれて先入観があるんじゃないかな?
実際あんなのメンテナンスするのわかりにくいし大変だよ
例えば鍵とかリポジトリ登録するところとかシェルで書くときはこうだなってのわかってないと絶対プレイブックも書けない
シェルがわからない非エンジニアでもプレイブックならわかるって本気でみんな考えてるのかな
その感覚よくわからんわ
2017/08/27(日) 17:10:33.18ID:rl9QFWEb
>>63
自由に導入したらいいよ
明確なメリットがあれば俺も使うし

>>64
複雑というのは習得に掛かった時間と思って貰えたらいい
dockerで用意された環境を立ち上げる事は簡単だが
その用意された環境を構築する作業も簡単とは俺は決して言えない
2017/08/27(日) 17:18:30.76ID:QpZ6CaB1
>>68
Dockerを使わずに鯖運用するスキルを身につけるコストのほうが高いと思うぞ
2017/08/27(日) 20:07:24.33ID:IIGC9wQX
>>68
> 複雑というのは習得に掛かった時間と思って貰えたらいい
何を言ってるんだ?

例えば、未経験者にとっては習得に時間がかかると思うが
習得に時間がかかる=複雑だというのなら、

お前は

未経験者「俺の知らないことだかけ。複雑ですね。導入する価値なし」

って言われて納得するのか?
2017/08/27(日) 20:07:41.75ID:IIGC9wQX
未経験者「俺の知らないことだらけ。複雑ですね。導入する価値なし」
2017/08/27(日) 20:55:27.14ID:AumSAEcK
>>64
まあ大前提として、一番重要なデータ部分と設定のドキュメント化が
しっかりして残されてる事が最低限だよな。
リポジトリから拾ってきたな様なのにはその辺がブラックボックスなのが
少なくないがw

逆に言えば、それさえ明確にきちんと残されているなら、仮にdockerが
陳腐化して消え去っても移行は全然難しくない。
2017/08/27(日) 21:02:37.75ID:IIGC9wQX
Dockerの素晴らしい点はイメージを作るものは
手順書などというメンテナンスされない傾向にある
ドキュメントではなく、Dockerfileという簡単な
設定ファイルで書くことができるってこと
だからブラックボックスにはならない

でここから二種類の人間に別れる。Dockerfileは
すごく簡単なファイルなんだが、

未経験者の新人ややる気のないSEのような
Dockerfileが読めない人間は、勉強したくないと駄々をこねる
なまじ年を取ったやつが偉そうに複雑だから使えないとか
破綻したことを言い出すわけだ
2017/08/27(日) 21:39:03.20ID:rl9QFWEb
>>69,70
一応言っておくけどdocker不要論者じゃないからね
メリットがあるなら使えばいいと言ってる
要求が上がるにつれて自然と選択肢に上がるんだし
2017/09/01(金) 20:50:15.08ID:ocN7XlE1
windows系がわからん
ssh => winrm
apt/yum => chocolatey
docker => windows server container
ansible => powershell DSC
vagrant => vagrant

これでいいのか?
guiインストーラーしかないマイナーなアプリのインストールとかどうやって自動化するんだ…
誰も使ってなくて相談できねぇ
2017/09/01(金) 22:51:41.61ID:jfA5F5eY
ふつうのWindowsInstallerベースならGUI使わずにインストールできるけどね。
わざわざ独自にGUIインストーラー実装してるような変わり者ならしょうがないが。
77デフォルトの名無しさん
垢版 |
2017/09/03(日) 04:17:07.76ID:V/LSJTV5
DockerとかVagrantとかのツールってさ、
例えばLinuxコマンド一切叩け無い人や、
素でサーバ構築した経験がない人がいたとして、
DockerfileやVagrantfileの書き方や、
dockerコマンド、vagrantコマンドだけ覚えた場合でも構築
出来るようになるの?
2017/09/03(日) 06:13:15.18ID:Xy/hIi2a
なるわけない
2017/09/03(日) 07:06:55.64ID:e9mk7X/B
Chef 社のレシピを使えば?
80デフォルトの名無しさん
垢版 |
2017/09/03(日) 08:05:37.08ID:V/LSJTV5
VagrantfileのRubyの記述苦手、
特にシンボルと配列のキーを指定する記法とがごっちゃになるし、
設定項目と値の間に = 要るのか要らんのかの基準がよくわからない
2017/09/03(日) 08:21:04.81ID:QlhluFUq
>>77
linux未経験だったけど普通に使えてるよ
プログラムのAPI覚えるのと変わらん
2017/09/03(日) 12:48:09.75ID:e9mk7X/B
Ruby では、= は代入。
変数 = 値

= が無いのは、メソッド名と引数。
puts :abc
#=> abc

メソッド名(引数)の、( ) を省略できる。
常に省略できるかどうかは、知らないけど
2017/09/03(日) 21:34:14.77ID:QlhluFUq
色々試したけどVagrant+シェルスクリプトがベストだな
AnsibleとDockerはやりたいことに対して実現方法が大げさすぎる
2017/09/03(日) 23:05:16.22ID:DIhXI1rF
Dockerは使う目的が違うから比較するものじゃない。
2017/09/03(日) 23:06:38.28ID:DIhXI1rF
それはそれとして、MacではVagrantを使うまでもなく
実OS上でアプリ開発すればいいし、
Windows もWSLでUbuntuが使えるようになったし、
今の時代でもVagrantを使う必要があるのか悩む
2017/09/03(日) 23:11:54.10ID:QlhluFUq
環境汚さないためにはVagrantいいんじゃないか
でもMacに慣れた後Linuxやるとめんどくさい
brewだと特に苦労せずサクサク新しいバージョンのパッケージが入る
Linuxはいちいちリポジトリや鍵登録せんとあかん
メンドくさくて環境汚れてもMacでいいやという気持ちになる
2017/09/03(日) 23:29:48.19ID:DIhXI1rF
>>86
だからそこでDockerを使うんだよ。
Docker使えば環境を汚さずに(消したいときはコマンド一つ叩くだけ)
好きなバージョンを入れられる。
2017/09/04(月) 06:12:29.90ID:IbU7wZyf
汚さないって言ってもdocker imageが大量に残るのがなぁ
2017/09/04(月) 16:38:39.40ID:dTsftoJX
それはもうしょうがない
むしろ docker rmi でいつでも気兼ねなくサクサク消せるのがメリットなんだと割り切っちゃえ
2017/09/04(月) 17:53:39.35ID:rV/jE66o
windows 7だとdocker machine使わんといかんのがひと手間かかって面倒でなぁ
2017/09/04(月) 20:29:54.61ID:KUepcu9z
>>90
え? いらなくね?
普通に最新のDocker for Windowsインストールして
docker ps できたよ。
docker machine使わないといけない技術的な理由思いつかないし


ほら、なにもいない

docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS

docker-machine config
Error: No machine name(s) specified and no "default" machine exists
2017/09/04(月) 20:31:41.25ID:KUepcu9z
もしかしてWindows 10ならOKで
Windows 7はNGってこと?
2017/09/04(月) 22:27:05.73ID:rV/jE66o
HyperVに依存しとるとさ
94デフォルトの名無しさん
垢版 |
2017/09/06(水) 06:40:13.96ID:uVSfh59G
DockerってYAMAHA, ciscoのルータとかファイアウォールへのコンフィグ流し込みに
も使えるの?
正直Linuxマシンは手動ゴリ押しでもDockerでも構築できるっちゃできる。
だけどこれらのOSとかAndroidとかLinux以外が簡単に構築できたらめっちゃ
便利やん。
Winはその・・・お察しだな。
95デフォルトの名無しさん
垢版 |
2017/09/06(水) 06:44:51.20ID:uVSfh59G
>>94
補足:
cisco, YAMAHAとかのOS独自のコマンド操作とかGUI操作のものを、
RubyとかYMLとかDockerfileの文法に変換して統一出来たらいいなってこと。
2017/09/06(水) 07:48:48.09ID:f+iOByXp
Dockerはそもそもそういう用途のものじゃない
AnsibleにIOSのモジュールがあるっぽいよ
https://gblogs.cisco.com/jp/2016/11/ansible-ios-related/
リアリインフラは触らないから使ったことはないが
97デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:00:50.06ID:zcvLuad8
あるサーバを構築したときのコマンド入力作業を
historyからシェルスクリプトにしておけば、
DockerやChefと同じことできるんじゃないの?
全く同じサーバが1枚のフャ@イルで構築でbォるじゃん。
2017/09/11(月) 23:44:54.91ID:QNy5oHUR
Dockerの方がパフォーマンスが良いし
レジストリも充実してるよ
あとDockerって慣れてくるとDockerfileは自分では殆ど書かなくなってrunとかcomposeがメインになってくるんだわ
だからシェルスクリプトとじゃ比較にすらならない
2017/09/17(日) 19:14:50.22ID:g8M9Yunv
oracle公式のイメージって無いの?
100デフォルトの名無しさん
垢版 |
2017/09/24(日) 21:52:22.92ID:VAo7cLSP
VirtualBoxがDocker意識してUI作り込んだら
便利かもしれん。
ホスト側の管理はUIあったほうがやりやすいからな。
101デフォルトの名無しさん
垢版 |
2017/09/28(木) 19:35:59.80ID:NUvabez2
GUIが欲しいならKitematicがあるやん
でもコマンドラインに慣れておいた方が自動化の環境構築をパパっと作れて良いぞ
102デフォルトの名無しさん
垢版 |
2017/10/11(水) 12:06:18.93ID:PBPiuL2i
Dockerってcronとかバッチみたいなジョブスケジューラ
機能もあるの?
2017/10/11(水) 12:12:52.55ID:vK0AFJGc
ない
2017/10/11(水) 20:32:01.73ID:M5ki5wzZ
DockerってGUIは動かせんの?
2017/10/11(水) 22:33:04.18ID:E/JaLO6S
動かせるよ
2017/10/14(土) 15:57:55.21ID:soixBfvL
>>102
host側のcronでdockerを叩けば良いんじゃない?ー
2017/10/14(土) 17:58:36.49ID:GDzf5CCz
>>105
マジデ!?
GUIコンテナ絶対便利なのにやってる人見た事ないなぁ
EclipseコンテナとかVisualStudioコンテナとかあれば絶対流行る
必要なもの全部入りで隔離されたクリーンな環境とか最高やろ
しかもコマンド一発でインストールできちゃう
2017/10/14(土) 18:31:29.09ID:Mpk4ND/s
>>107
普通に使ってるけど…
109デフォルトの名無しさん
垢版 |
2017/10/14(土) 22:08:55.30ID:YZBwJ7NO
上司に「Docker使いましょうよ」って提案してみたら、
「Xamppで十分でしょ」って返された。
何か言い返したかったがこれと言って強力な
Xamppに対するアドバンテージが思いつかなかった。
2017/10/15(日) 09:24:22.95ID:jiVarmiT
え?それってギャグで言ってんの?
2017/10/15(日) 09:53:35.93ID:/8UsyUgn
DockerはXamppじゃない。用途が完全に違う。

というかDockerを使ってXampp相当のものを
作ろうとすると相当大変だぞ

Docker使ってPHP製のアプリを実行する所までならまだわかるが
Xampp=通常は開発用にするには、更に色んな機能が必要になる。
2017/10/15(日) 10:08:26.53ID:Ad4/97ip
ドライバーと工具箱くらい違うだろ
2017/10/15(日) 10:31:02.51ID:jiVarmiT
使い捨てしない場面でDocker使う意味あんの?
ビルドとかユニットテストに使うぶんにはDocker軽いし便利だけどね
ビルドサーバー汚さんですむのは嬉しい
でもサービス運用には向いてないでしょ
Dockerでイミュータブルインフラ実現だ〜ってエキサイトした時期もあったけど
それはクラウドの仮想化サービス使えって結論でちゃったし
2017/10/15(日) 10:47:04.11ID:/8UsyUgn
>>113
Googleは全てのものがコンテナ上で動いてる
2017/10/15(日) 10:50:45.14ID:/8UsyUgn
>>113のようにDockerを分かってない人の典型例は、
Dockerがアプリデプロイ用のためのものだって
分かってないってことなんだよね。

クラウドの仮想化サービス使え?
その仮想化サービスにお前が作ったアプリを
配布するのはどうするんだよって話
2017/10/15(日) 10:57:19.24ID:/8UsyUgn
次の反論も想定できるから先に行っておくと、

アプリデプロイするなら、デプロイツールを使えばいいだろ?だって?

お前のアプリはどのOSでも同じ手順でデプロイできるのか?
ミドルウェアは何も使わないのか?ライブラリは何もいらないのか?
手元の開発環境(WindowsやMacOS)で動かしていたものが
クラウドの仮想化サービス=Linuxで動くのか?

Docker使えば手元で動かしたLinux用のDockerイメージを
そのままクラウドの仮想化サービスで動かせるんだよ。
2017/10/15(日) 11:08:18.67ID:/8UsyUgn
もしこのあと反論があるとしたら、

うちはJavaを使ってる。一度プログラムを書けば、どこでも実行できる
Write once, run anywhereだよ

かな?


http://www.wdic.org/w/TECH/Write%20once%2C%20run%20anywhere
> 実際には、バイナリレベルでは仮想計算機の実装のバグ、ソースレベルではAPIの
> 実装バグやそもそも対応するAPI仕様の違いなどにより、どこでも確実に動くと断言できることはあまりない。
> このため、"Write once, test(debug) everywhere"(一度書いて全個所で試験(デバッグ)する)と揶揄されることもある。
2017/10/15(日) 11:14:03.69ID:jiVarmiT
配布ごときなんでもいいよ
むしろたかがアプリケーションのデプロイにDockerを使うのは過剰すぎる

そもそもどんなOSにも配布する必要がない
他人に使ってもらうためのアプリケーションしか考えられないバカか?

ミドルウェアやライブラリは仮想マシンイメージに入れときゃいい
なんならイメージはまっさらにしてansibleで構成してもいいだろう

手元で動かしていたものがクラウドで動くんだよ
お前はテストしたことないのか?
2017/10/15(日) 11:15:12.03ID:jiVarmiT
JVMのバグは気にするのにDockerのバグは見て見ぬ振りかよ
お前の環境のDockerとクラウドのDockerが同じ保証はどこにあるんだ?
2017/10/15(日) 11:22:49.81ID:jiVarmiT
銀の弾丸を手に入れたつもりになってるバカってほんと迷惑だよ
うちにもDocker Dockerうるさい奴がいるけど
そいつはDocker使いたいだけでDockerの事も社の保有するインフラの事情や社内政治のことをなんもわかってない
2017/10/15(日) 11:24:20.20ID:jiVarmiT
手元で動いてこりゃ便利とか思ってるだけで
実際に大規模なサービスで運用したこともない雑魚なんだろうな
ぶっちゃけ透けて見えるよ
2017/10/15(日) 11:27:36.15ID:/8UsyUgn
JavaのWrite once, run anywhereが失敗したのは、
違うOSなのに、Javaの力だけで同一の実行環境を
作り出そうとしたところなんだよな。

Dockerのアプローチは別で、Linuxという環境のみで
Write once, run anywhereを実現したということ。
Linuxでしか動かないじゃんと思うかもしれないが、
WindowsとMacではすでにある仮想マシン技術を利用することで実現
もっともWindowsとMacは本番用途としては考慮されてないと思うが。

本当に同一環境か?という点で見ると、Linuxのカーネルの違いというものはある
だけどLinuxは元からカーネルが違ってもユーザーランド(カーネル以外)には
100%に近い互換性を持たせる方針なのでそれが問題なることはない。

だからローカルで開発で使用していたDockerイメージをそのまま
クラウドの仮想化サービス上に持っていくことができる。
その作業も単にdocker runするだけ
2017/10/15(日) 11:29:17.48ID:/8UsyUgn
>>118
> そもそもどんなOSにも配布する必要がない
> 他人に使ってもらうためのアプリケーションしか考えられないバカか?

え? 自分一人で使うアプリケーションしか考慮してないの?

普通は他人に使ってもらうアプリを作りし、開発する人も複数人、デプロイする人も自分以外にいる。
プロジェクト外れて他の誰かに完全に引き渡すことも有るし。
2017/10/15(日) 11:30:24.71ID:jiVarmiT
所詮は方針だろバカ
テストしろ
2017/10/15(日) 11:33:31.89ID:/8UsyUgn
>>121
> 実際に大規模なサービスで運用したこともない雑魚なんだろうな

実際に大規模なサービスで運用するならまずDockerだよw

いろんなクラスタ管理ツールが生まれてきたけど、
今はkubernetesに集約されつつ有るな。
これはDockerイメージを使うことが前提となってる。

知らない人もいそうなので適当に引用すると

https://qiita.com/MahoTakara/items/85096f8b2632c802ab22
> Kubernetes(クーべネティス)を一言で言うと、自動デプロイ、
> スケーリング、アプリ・コンテナの運用自動化のために設計された
> オープンソースのプラットフォームです。
> Kubernetesによって、要求に迅速かつ効率良く対応ができます。

あんた実際に大規模なサービス運用したこと有るんでしょ?
何使ってる?
2017/10/15(日) 11:34:05.67ID:jiVarmiT
>>123
そこで自分一人で使うって解釈になるのがアスペくさいな
サービス利用者は幾らでもいる
開発運用する側がプロジェクトメンバーと連携するのは当たり前だろ
むしろお前はプロジェクト内でOSも定めずに作業してんのかよ
どんだけ適当な職場なんだ
2017/10/15(日) 11:35:26.06ID:jiVarmiT
>>125
>まずDocker
ねーよwww
普通にansible使え
2017/10/15(日) 11:36:32.82ID:jiVarmiT
はぁ
アホの相手は時間の無駄だな
休日に何やってんだろ俺
2017/10/15(日) 11:36:53.92ID:/8UsyUgn
>>124
テストはするだろ?

ローカルのDockerイメージでテストすれば
それがサーバーでも動くことが保証される。

もちろんアプリの話ね。ローカルの開発と実際のサーバーでは
インフラの構成は違うので、その部分はテストが必要。
アプリの部分のテストがローカルでできるって話。

ちなみにローカルであっても実際のクラウドと互換性がある環境を
用意することでテストすることもできる。
その場合はminikubeを使うと良いよ。Kubernetesの公式ツールで
Kubernetesと同等の環境をローカルに作り出すことができる。
もちろんDockerイメージが有ることが前提

大規模開発ってDockerがないと大変だよねw
2017/10/15(日) 11:41:46.66ID:/8UsyUgn
>>127
ansibleでどうやってクラスタ組んで自動デプロイやスケーリングやってんの?

ansibleは特定のOSというか異なるディストリどころかディストリのバージョンが
上がった時でさえ使いまわしできないもので、環境ごとに用意するもの。
そして最低限の環境を作るものだよ。
OSとDockerのインストールと簡単なネットワーク設定程度にとどめておいたほうが良い

いちいちansibleでアプリから使用するライブラリのバージョンが
アップデートされたから入れ直しますとかやらないほうがいい。
そんなことやるとトラブルのタネにしかならんよ。

ansible(等)の冪等性は書いて有ることはその通りに設定されるけど
書いてないものに関しては、我関せずだからね。
環境ごとに用意しなければいけないansibleにたくさんのことを書くはめになる。
そしてそれはローカルの開発環境には使用できない
2017/10/15(日) 11:45:54.18ID:/8UsyUgn
>>126
> むしろお前はプロジェクト内でOSも定めずに作業してんのかよ
> どんだけ適当な職場なんだ

実行OSと開発OSが別ってだけですが?

いえ、サーバーと全く同じOS、例えば超軽いが実行専用にカスタマイズされていて
テキストエディタすら入っていない、CoreOSやContainer-Optimized OSを
普段の開発用OSとして使ってるっていうのならいいんですよ?

なぜ開発しやすい環境で開発して、それをそのままサーバー上で動かさないのでしょうか?w
まあそれができるのがDockerというわけ。
2017/10/15(日) 11:49:59.73ID:Ad4/97ip
本番でDockerもAnsibleもautoscalingも全部使うよ
使い方がわからないものは使わないほうがいいよ
便利の定義はスキルセットによるし
2017/10/15(日) 11:51:53.70ID:/8UsyUgn
autoscalingってAWSの機能か?
kubernetesはGoogleが作ったものだけど
GCP上ではなくAWSでも動く
俺はGCP上でしか使ったこと無いけどね。
2017/10/15(日) 11:55:03.35ID:/8UsyUgn
> 121 名前:デフォルトの名無しさん[sage] 投稿日:2017/10/15(日) 11:24:20.20 ID:jiVarmiT [6/10]
> 手元で動いてこりゃ便利とか思ってるだけで
> 実際に大規模なサービスで運用したこともない雑魚なんだろうな
> ぶっちゃけ透けて見えるよ


さて、こいつが大規模サービス運用したことが有るような
発言してくれるのはまだだろうか?w
低いスキルセットしか持ってないのが透けて見えるよ。
2017/10/15(日) 11:59:36.35ID:/8UsyUgn
上の方でDockerの技術がわからないから政治問題にすり替えようとしている人がいたけど、
コンテナ自体はLinuxカーネルの機能で、Dockerはそれをラップしているツール。
代替技術は他にも有る。

例えばrkt。検証はしてないがKubernetesでも対応している。

そしてこういうものも有る。
http://www.publickey1.jp/blog/16/kubernetescri-odocker.html
> Kubernetes、独自のコンテナランタイム「cri-o」開発中。
> コンテナランタイムのインターフェイスを標準化し、
> Dockerだけでなくどんなコンテナランタイムでも対応可能に
2017/10/15(日) 12:00:21.34ID:Ad4/97ip
Dockerは仮想化とコンテナ、AnsibleはDeploy
コンテナはDeployの一手段だから混同してしまうのは仕方ない
ID:/8UsyUgnも煽るような言い方してよくない
2017/10/15(日) 12:01:19.25ID:/8UsyUgn
> ID:/8UsyUgnも煽るような言い方してよくない
良いだろw それが5ちゃんねるだ。
2017/10/15(日) 12:11:27.93ID:/8UsyUgn
Ansibleは構成管理ツールだよ。マシンの構成を管理するだけ
アプリのデプロイは行わない。

もちろん頑張ればデプロイもできるけど、構成管理ツールで現実的なデプロイは
すでに完成されたアプリを動かす程度
いま自分らが開発している真っ最中のアプリは内容が多くなりがちで変更も頻繁に発生するので
Ansibleでやるのは大変。playbookが正しく動くかのテストが必要になる。
作成したplaybookはなるべく変更しないような、そういう使い方にとどめておいたほうが良い

んで、Dockerももちろんデプロイツールではない。デプロイを容易にするために
開発しているアプリとその周辺(ミドルウェアやライブラリ)をひとまとめにするもの。

デプロイする時に細かいコンポーネントに別れていたら、
それらを一つ一つデプロイするものとして書いていかなければいけないけど、
それらがひとまとめになっていれば一つだけデプロイすればすむ
それがDockerイメージ

デプロイするべきものが一つになるので、デプロイはツールを使うまでもないんじゃね?
って言いたくなるほど、シンプルになる。

そこまで来るとAnsibleを使って、Dockerイメージをデプロイするのもありだよw
そう。AnsibleとDockerは組み合わせて使うものなんだ。

まあGCPなどのクラウド使っていれば、その基本機能としてDockerイメージを
使う方法があるから、Ansibleを使わなくて良いんだけどね。
2017/10/15(日) 12:51:15.75ID:SUmdrC/e
俺もansibleはゴミって昔から主張してるけど、なぜかありがたがって使う人がいる
互換性酷い、yaml生産性悪い、かゆいとこ手が届かんで最悪
docker & ssh & shell scriptが最強
この組み合わせなら、誰でも使えるし、可能性も無限大
KISSの原則ってやつだな
dockerはどうなるかわからんがssh & shell scriptは長く安心して利用できる点も高評価
2017/10/15(日) 13:48:47.99ID:/8UsyUgn
>>139
> 互換性酷い、yaml生産性悪い、かゆいとこ手が届かんで最悪
それな。

使うために "中間層" が必要なるという仕組みが悪い
アプリのインストールや設定とか普段シェルスクリプトでやってるはず

だけどAnsibleとかそのアプリをインストールするためのプラグイン(中間層)が必要になる。
それをアプリが公式に用意しているならまだマシだけどそれは少数派
Ansibleがどれだけ成長したとしても、アプリに完全対応はできない。
バージョンが変わるたびにこの組み合わせで正しく動くだろうか?って考えなきゃいけない。

そしてプラグインを使うための知識が必要になる。
普段シェルスクリプトでやってるのと同じことをやるだけなのに
別の知識と道具が必要になる。

あとYAMLは本当に設計ミスだと思う。
構成っていうのは一連の流れで作るものなので
スクリプトの方が適切。
2017/10/15(日) 14:23:35.60ID:Ad4/97ip
ansibleはmodule使ってる限り冪等なのがいいんだろ

そして、yamlもそこまで悪くない
docker-composeでも使うし、生産性低いならきちんと訓練すべきだと思う
2017/10/15(日) 14:40:41.95ID:/8UsyUgn
> ansibleはmodule使ってる限り冪等なのがいいんだろ

「使ってる限り」と言ってる時点で駄目なんだよ。
なぜmoduleを使う? 自分で作ればよかろう?
もちろん作るのが大変だから使うのだろうがそれで起きてるのが互換性問題。

アプリ開発社からすればAnsibleや誰かが作ってる
非公式の質の低いモジュールを使わざるを得ない
ここでいう質の低いっていうのは、アプリのあるバージョンに
完全に対応していなかったり一部の機能が抜けていたりする。
そしてそれを自分で直さないといけなくなる

Dockerの場合はモジュールなどというものはなく自分でDockerfileを作るのが基本
もちろんある程度用意されているがほんの数行のファイルなので自分でメンテナンスできる。

> そして、yamlもそこまで悪くない
YAMLが悪いと言っているのではない。設定として使うのは問題ない。
構成管理のように順番があってその通りに実行していかなければいけないものを
YAMLという順番が関係ないようにみえる形式を使うのがダメだという話
やってることがスクリプト実行ならスクリプトで書けば良いんだよ。
設定とスクリプトは違うもの。
2017/10/15(日) 16:06:17.00ID:aaEJwvll
まぁ、そんなこと言い始めたらshなんて可読性も低いしpythonのほうがいいとかになるんだよね
少なくとも個人が書いたスクリプトより、ansibleのmoduleのほうが信頼性は高いよ
DockerだってFrom句使うほうが普通だろ
なんで、どっちかはダメと攻撃せずにいられないのか
酸っぱい葡萄が大好きなんだな
2017/10/15(日) 16:14:25.83ID:/8UsyUgn
> まぁ、そんなこと言い始めたらshなんて可読性も低いしpythonのほうがいいとかになるんだよね
> 少なくとも個人が書いたスクリプトより、ansibleのmoduleのほうが信頼性は高いよ

意味が分からん。ごく普通にシェル使ってインストールとかしてるだろ?
もしかして黒い画面恐怖症かなにかか?

スクリプトは単純に何かのインストールコマンドと
ファイルの変更ぐらいしかしないよ。
なんでいつもやってる作業を置き換えないといかんのさ
2017/10/15(日) 16:15:43.59ID:/8UsyUgn
> DockerだってFrom句使うほうが普通だろ
From区にはdebianとかrubyとかしか使わんなぁ。
公式で用意されていればそれ使うけど、
用意されてないならされてないで
自分でDockerfile書くだけだし。
2017/10/15(日) 16:16:17.65ID:/8UsyUgn
っていうかFrom区ってなんだw
FROMだろ
2017/10/15(日) 16:27:35.49ID:SUmdrC/e
誰が書いたかも知らないようなmoduleは危険だぞ
人類はnpm left-padで痛い目にあったばかりじゃないか
2017/10/15(日) 16:29:20.49ID:/8UsyUgn
それな、DockerとAnsibleの違い

Ansibleは自分でやるべきことを誰かにやらせて楽をする。
Dockerは自分でやるべきことを自分でやるがその作業が楽になる。

誰かにやらせて楽をする方がいいかもしれんが、
それはその誰かが信用できる場合だけなんやで。
2017/10/15(日) 17:31:51.97ID:aaEJwvll
>>145
あ、そうなんだ。そういう人にとってはansibleのモジュールは使いにくいかもね。
一般的にはnginxとかフレームワークくらいは使うと思うけど。
てか、yml書くのだってvimが普通なのに、なんでsh書かないとterminal恐怖症なんだよ
意味わからん
2017/10/15(日) 17:44:48.24ID:aaEJwvll
てか、ansibleもDockerも同じ
なくてもどうにかなるんだけど、使える人は使う
使えない人は使わないし、使いたいとも思わない
そんだけ
2017/10/15(日) 18:06:11.48ID:HL16aayQ
ansibleは生産性下げてるよ
fabricとかでいいじゃないか
ああいうのでいいんだよ、ああいうので
2017/10/15(日) 18:19:59.49ID:/8UsyUgn
>>149
Ansibleのモジュールはシェルスクリプトでできることの
全てを網羅してないっていうのが一番の問題なんだよ。

nginxがバージョンアップした時、新しく追加された設定項目に
モジュールはすぐに対応してくれない。

シェルを使っていればすぐできることが
Ansibleだと対応する機能をいちいち調べて
シェルとは違う方法で記述しないといけない。

その中間の変換作業が無駄

それに当然の話だけど、Ansibleは自社で開発しているアプリ用の
モジュールが存在しない。作らないといけない。
おかしいと思わないのかね? シェルですでにやってる作業と同じことを
調べ直す作業を何故やっているのかと

あー、もちろんAnsibleでシェルスクリプトを実行できるのは知ってるよ。
そんなのを使うならシェルスクリプトでいいじゃんって話だからね。
2017/10/15(日) 19:00:33.44ID:aaEJwvll
それでいいんじゃね?
別に使わないとできないことはないよ
でもそれはshellだろうがDockerだろうがAnsibleだろうが同じ

そもそもAnsibleは環境構築以外だと、デプロイの導火線の発火に使うことが多いだろうから自社アプリ用のモジュールがなぜ必要なのかわからんけど
あなたにとってシェルがベストな選択肢なら、シェルがいいんじゃね?
2017/10/15(日) 19:05:19.96ID:aaEJwvll
>>151
そこらへんは議論の余地があるかもね
他にもPuppetもあるしChefもある

全部sshとshで実現できるってんなこといったら、その他スクリプト言語もラッパツールも全否定だからな…
彼は一体何と戦ってるのか…
2017/10/15(日) 19:35:47.65ID:vM8WLXd+
たかが数行、長くても数十行の単純なスクリプトでOK
冪等性などという高尚な概念を導入しなくても問題なく運用できる
これでわざわざ構成管理ツールを導入しようって方がどうかしてる
2017/10/15(日) 19:37:08.37ID:/8UsyUgn
>>153
> そもそもAnsibleは環境構築以外だと、デプロイの導火線の発火に使うことが多いだろうから

だろ? Ansibleでデプロイはしないし、だからデプロイそのものが簡単になるわけじゃない。
デプロイをするのはデプロイツールだが、Dockerを使えばデプロイツールが不要になる。
なぜなら単に1アプリを動かせばいい程度になるから
>>138ですでに書いたことだけどね

> あなたにとってシェルがベストな選択肢なら、シェルがいいんじゃね?

クラウド使って大規模アプリ開発をするようになると必然的にそうなるよ
トラブルを避けるためローカルとサーバーでなるべく同じ環境でやるのが良いんだが、
サーバーと同じOS使って開発するのは現実的ではない。
だからDockerを使ってアプリの実行環境だけを同じにする。

Dockerを使うと冪等性は必要なくなり、デプロイの内容もシンプルになる
一番楽なのがシェルスクリプト。Dockerfileもシェルスクリプトがベースになってる。

>>154
> 彼は一体何と戦ってるのか…

俺? 俺は↓これと戦ってる。これと

127 返信:デフォルトの名無しさん[sage] 投稿日:2017/10/15(日) 11:35:26.06 ID:jiVarmiT [9/10]
>>125
>まずDocker
ねーよwww
普通にansible使え
2017/10/15(日) 19:42:08.08ID:/8UsyUgn
> 他にもPuppetもあるしChefもある

PuppetもChefも、普段誰もがシェルスクリプトでやってることを
置き換えるには、重すぎる。いつもやってることをやるだけだろ?
本来新しいことは何も覚えなくてすむはずだ。

> 全部sshとshで実現できるってんなこといったら、その他スクリプト言語もラッパツールも全否定だからな…

そんなことは言っていない。
sshとshで実現できると言ってるのは、普段シェルでみんながやってる作業だけだよ。

パッケージのインストールとかその設定ファイルの変更とか、
そんなのその他のスクリプト言語やラッパーツールでやってないでしょw

普段やってることは普段やってる方法でやりましょうってこれだけの話だよ。
みんなシェルスクリプトでやってるんだからそれでいいじゃん。アホらしい。
2017/10/15(日) 20:13:25.63ID:Ad4/97ip
俺は逆にクラウド使うって大規模なクラスタ組む時以外はansibleなんて使わんけどな
できることはシェルと同じでもRoleやinventoryパターンに慣れたらsshだのシェルだのなんてやってられんわw
159デフォルトの名無しさん
垢版 |
2017/10/16(月) 15:59:08.48ID:1+BaSHIB
可読性とモジュール性とかカプセル化、の問題じゃね?
シェルにはオブジェクトや配列はない。
それどころかまともに型もない。
Ansible Puppet Chefはシェルに型と配列記法を
無名関数なんかを使えるようになっているから付加価値はあるだろ、
1つあれば十分のようには思えるが。
C言語あるからわざわざJava覚える必要ないって
言わないでしょ?
2017/10/16(月) 20:48:46.81ID:rY47nFh2
インベントリ管理は便利だと思う
Yamlはなぁ…これpythonそのままでよかったんじゃねえか?
2017/10/16(月) 23:20:32.48ID:t2YDIrX7
>>159
DSLって知ってる?ドメイン固有言語。
特定のタスク向けに設計されたコンピュータ言語

シェルというのはユーザーとコンピュータとの対話を行うために作られたもので、
慣れも有るだろうけど日常的な操作(=特定のタスク)が使いやすいもの
シェルスクリプトはその日常的な操作をスクリプトにしたもの。
言い換えると日常的な操作に特化したDSLなんだよ。

型や配列が使えるからということで、シェルの代わりにプログラム言語使って
system()関数とかでコマンド呼び出しとかしないでしょ?

だからプログラム言語的な能力で比較するのは意味ないんだよ。
一般的な言語の機能を捨ててまで、特定のタスク向けに設計しているわけなんだから。
用途(プロビジョニング)を前提に適しているかどうかって話をしないと

> シェルにはオブジェクトや配列はない。
bashなら配列も連想配列もある。
が、そもそもプロビジョニングという用途で配列とか連想配列は使わん
2017/10/16(月) 23:23:09.34ID:t2YDIrX7
YAMLとかPythonがダメって言ってるんじゃないよ。
普通に何かを作る時は使ってるし。

普段やってる作業を、別のやり方に変えるのが無駄だなぁって話

その別のやり方に大きなメリットが有るならまだしも、
別のやり方に変えるプラグインが必要で、そのプラグインができることしか
できなくなってしまうとか、劣化してるからさ。
163デフォルトの名無しさん
垢版 |
2017/10/17(火) 03:23:19.58ID:IfQVHUWW
>>161
プロビジョンで配列や連想配列を使わないんじゃなくて
便利じゃないから誰も使わないだけだよ。
bashに配列があっても集約する対象として複雑な概念が
オブジェクトとして構造化されていないから。
bashがRubyやPythonが出て来る前から設計されていたわけじゃないし
Chefとかはbashよりもさらに進化してオブジェクト指向に対応した
プロビジョン用DSLなわけじゃん。
Chef内でシェルも記述できるんだからシステムコール使いたいなら
そこで使えばいい。
依存関係もbashでInculudeなりラッパーするなりより
プロビジョンツール使ったほうが整理しやすいよ。
164デフォルトの名無しさん
垢版 |
2017/10/17(火) 03:35:54.06ID:pADXjsAY
要る要らないとかどうでもいいわ好きなもん使えよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況