ときどきAnsible日記

主にITインフラ基盤の自動化に関する事を書いているブログです

インフラ勉強会やりました

お疲れ様です。伊藤です。

完全に身内向けの記事ですが、ご了承ください。
去る1/31にグループ社内に向けてAnsibleとDockerの情報共有会を行いました。
30名を超える皆様にお集まりいただき、誠にありがとうございます。
本来であれば最初に色々と説明するつもりが、開始当初にPCが怪しい動きを起こしてテンパってしまい、何も説明出来なかったことをお詫びいたします。(最初2時間予定って言っておきながら1時間30分で終わったこととか。。)

というわけで勉強会で上がったQAをこちらにまとめておきます。
もし、「俺の質問どこ行った!?」という方がいらっしゃれば是非ご連絡ください(すいません、書記がいなくて。。)あと、私の知識で答えていますが、お客様などに提案する場合には裏取りをお願いいたします(弱気)
あと有識者の方で「おいおい嘘ついてんじゃねーよ」というかたがいらっしゃいましたら是非コメントをください。よろしくお願いいたします。


【Ansible】
Q Ansibleに対応しているOSバージョンは?
A 公式ではPythonのバージョンしか謡っていないのでOSバージョンは特に縛りはないと思います。個人的な実績としてはコントロールサーバ(Ansibleをインストールするサーバ)はAnsible2.0でRHEL6.7とRHEL7.3で動作することは確認しました。なお、Windows版は今のところありません。ターゲットサーバ(設定変更する側)はもっと敷居が低いのでRHEL6~7およびCentOSなどのLinuxとWindowsServerが動作します。SSHPythonやWinRM・PowerShellのバージョンさえ合っていれば。その辺は下記URLをご参照ください(英語ですが。。)
http://docs.ansible.com/ansible/latest/intro_installation.html#control-machine-requirements
http://docs.ansible.com/ansible/latest/intro_installation.html#managed-node-requirements


Q WindowsのModuleの対応が遅れている理由は?
A そもそもAnsible自体がWindowsに対応しておらず正式に対応したのは2016年頃になります。なのでそこからModuleを作り始めた、というのが理由になるかと思います。あとはWindows自体あまり自動化に向けて作られていない(GUI操作とか)のでそのあたりも理由になります。


Q AnsibleでSSH接続する際、鍵認証などしてセキュリティは問題ないか?
A 問題あります。このあたりは色々といわれていて、懸念すべき点です。鍵認証が嫌な場合はAnsible実行時にパスワードを直打ちする方法もありますが、自動化に向けては懸念があるので、やはり鍵認証がよいと思われます。その場合は普段Ansibleサーバは落として置く、などの考慮が必要かと。ちなみにprojectドアではAnsibleはDockerコンテナに入れて、通常は停止させておく、という考慮をしています。


Q Playbookをcronなどに仕込む場合にはシェルを使うべきか
A 好みにもよると思いますが、単純な定期動作であればAnsibleのコマンドをそのままcronに登録しておくのも可能と思います。そこに引数を渡して動的に動かしたい場合にはシェルが向いていると思います。


A Ansibleは有償?
Q Ansibleの単純な機能は無償で提供されています。他に有償のAnsibleTowerというGUI操作できるものがあります。が昨年の中頃、単純機能にもサポートがついたAnsibleEngineという有償版が発表され、逆にAnsibleTowerの無償版もリリースされました。


Q Ansible、Chef、Puppetに使い分けはあるのか?
A すいません、こちらは当時はちゃんと説明できていませんでした。新規で取り入れる場合にはエージェントレスのAnsibleがおすすめですが、すでにシステムにChefやPuppetが組み込まれて稼働している場合には無理に取り入れる必要はないと思います。


Q Playbookを条件付きで動かす場合にはJP1などを使うべきか?
A 基本はJP1などのジョブ管理ソフトが必要になると思います。シェルとcronなどでも可能だと思いますが作りこみが必要です。


Q Ansibleでネットワーク機器などの設定も可能か?
A Redhat社ではすべてのインフラ機器をAnsibleで管理したいそうなのでゆくゆくはそうなると思います。昨年中頃、Ansible有償版が発表された際に、ネットワークの機能も追加されたようです。


Q Ansibleで管理するサーバ情報はIPになるか?
A インベントリファイルにIPかホスト名を書きます。Hostsなどで名前解決されている場合はホスト名のみで動作します。インベントリファイル内でグルーピングなども可能です。


【Docker】
Q コンテナ内でのカーネルはどうなっているのか?
A コンテナはホストOSのカーネルを共有しています。なのでホストOSのカーネルに依存します。


Q Dockerのイメージファイルで対応できるOSのバージョンは?
A Linuxであれば過去バージョンは全て対応できる(はず)現状DockerHUBにRHEL6~7やCentOSのイメージが上がっているのでそれらは対応しています。


Q ホストOSからコンテナ内のプロセスはどう見えるか?
A ホストOSからコンテナで起動しているプロセスはそのまま見えます。


Q プロジェクトドアではどの辺にDockerを使ったか
A AnsibleをDockerのコンテナの中に入れました。理由はリリース時にコンテナごとリリース出来るからです。また、コンテナにすることにより使用時以外はコンテナを停止させてセキュリティ面も考慮してDockerを使いました。


Q Dockerに癖があるという話だが具体的には?
A 特にDockerコンテナについては1コンテナ1プロセスという考え方があり、(DockerHubにイメージが上がってるものは簡単ですが)通常のアプリを動かす際はハードルが上がります。機能別にコンテナを分けたとしてもコンテナ同士は共有メモリなども切り分けられており、今までのような通信もできなくなるためアプリの構成を見直す必要があります。また、明確な保守も受けられないと思いますので本番環境で使うにはそれなりのリスクを負う必要があります。


Q Dockerを商用利用している企業はあるか?
A こちらをご参照ください。事例から考えるDockerの本番利用に必要なこと | Think IT(シンクイット)


Q Tomcatのwarファイルなどはコンテナに引き継げるのか?
A イメージファイル内に取り込まれますので、コンテナに引き継げます。一旦構築したサーバからイメージファイルを作成し、そのOSイメージをコンテナにすることができます。


質問が漏れてるよ!って方は是非ご連絡を。ビールおごります。
以上です。お疲れ様でした。