[備忘録] Ansibleもくもく会 （第5回）ネットワーク編 で使ったEtherpad #ansiblejp


#Ansibleもくもく会（第5回） ネットワーク編
こんにちは。レッドハットでAnsibleのビジネス開発をしている中村@fideleruuthです。
2018年8月28日にレッドハット3階セミナールームにてもくもく会を実施いたしました。いつもの通り、備忘録までにもくもく会で利用しましたEtherpadを備忘までに残しておきたいと思います。

https://ansible-users.connpass.com/event/97452/

今回の参加者はリモートも含めて23名でした。当日急遽業務都合で来れなくなった方がまあまあいましたが、想定ないというか、しょうがないですね。来れなくなってしまった方は、次回よろしくお願いいたします。

ネットワーク編ということで、Linklightというコンテンツを使って環境を触ってもらいました（[Linklight Workshop日本語](https://github.com/network-automation/linklight/blob/master/exercises/networking/README.ja.md
ページ)）。もしもこの環境を使ってもくもく会を実施したい、場所を貸してくれるという方がいらっしゃたら是非お声がけください。

しつこいですが、Ansibleもくもく会はレッドハットからAnsibleをいじっていただける環境を提供しています。また、演習コンテンツもありますので、それに沿ってもくもく作業していただいて、ご自身の疑問点などを明確にしていただき、ユーザーの方々の間で情報交換していただくことを趣旨としています。東京ではレッドハットのセミナールームがありますが、大阪などはセミナールームがないため、場所を貸していただけるスポンサーの企業の方をユーザー会では募集しています。貸していただける方、ぜひご連絡ください！

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3231313132312f65636163333863382d366534382d396234642d643562622d3864643262663439643062312e706e67.png](https://qiita-image-store.s3.amazonaws.com/0/211121/cdcd0597-a3ae-2693-cf95-62dd1781069c.png)


#質問のやりとり
**>>質問はこちらにご記入ください<<**

   * Q. こんなかんじで質問すれば
       * A. こんなかんじで回答されます

   * 最初、どこにどうやってログインすればいいですか？
       * [control]にあるansible\_hostのIPアドレスにログインしてください。
       * IDとパスワードは[all:vars]にあるstudentXXとred123hatを使用してください。

   * この "control" はどうやって名前解決していますか？
       * $HOME/.ansible.cfg で inventory = /home/student28/networking-workshop/lab\_inventory/hosts が定義されています。

   * vimを使うと気絶する病にかかっているんですがemacs勝手に入れていいですか？
       * インストールできれば大丈夫です。
       * vimは至高
       * 法律に触れないことでしたら問題ありません。
       * 入れました

   * cat ~/.ansible.cfgたたくとでるconnection = smartとはどんな接続方法？なんでしょうか
       * デフォルトの値です。ssh -o  ControlPersistがエラーとなる場合はparamikoが使用され、エラーにならなければSSHが使用されます。
       * transport = smart ですか？であれば^^^のような動きになるはずです。ControlPersistが実装されていない古いOpenSSHのバージョンであればparamikoになるはずです。ちなみにsmartはconnection\_pluginとしてsshが選択された場合のみ有効な設定のようです。
   * 

   * この環境と同じものを後で作ろうと思ったときはどうすればいいですか？
       * この環境もansibleで構築しています。作成するためのplaybookは下記のURLにあります。README.mdをご確認ください。
       * \url{https://github.com/network-automation/linklight/tree/master/provisioner}
       * （この質問たいへんありがたい！　当たり前の疑問でしたが 脳内でスルーしてました...）
           * 皆さんには持ち帰っていただきたくて ^^

   * 上記質問に関連して質問ですがAWSのインスタンスはどのタイプを使っていますか？それなりの額の課金が発生しますか？
       * $ curl \url{http://169.254.169.254/latest/meta-data/instance-type} で自身のメタ情報からインスタンスタイプが確認できるので、確認してみてください！
           * IOS-XEでcurl叩くのしんどそうなイメージ
       * ノードによってそれぞれ異なりますが、詳しくは下記を確認してください。
       * \url{https://github.com/network-automation/linklight/blob/master/provisioner/roles/manage\_ec2\_instances/defaults/main.yml}
       * IOSはt2.mediumでした

   * 半角スペースが行によって(1~3?)違うと思うのですが、これはどういった意図なのでしょうか？
       * PlaybookなどのYAML形式のファイルは、インデントでデータ構造が定義されています。よりインデントが深
       * \url{https://docs.ansible.com/ansible/latest/reference\_appendices/YAMLSyntax.html}

   * コードが長くなるとインデント幅を間違えそうになるのですが、いい方法はないでしょうか？縦にハイライト入れるのがベストですかね。。。
       * Playbookは適切な粒度で分割するほうが、再利用性もあがり、デバッグも楽になりメリットが多いと思います。適切に切り出してroleで分割するというのはいかがでしょうか？長いPlaybookを書かないというのが一番の方法だと思います。include\_*やimport\_*などの構文も入ったので、分割はしやすくなっていると思います。

   * 以下のコマンドでエラーになったのですが何か間違えてますか？      ansible -i lab\_inventory/hosts routers -m net\_ping -a dest=172.16.82.42

       * 「-c network\_cli」のオプションをつけてみるとどうなります？
           * 「-c network\_cli」を付けて rtr１はOKでしたが、rtr2はエラーになりました。
               * おそらく、まだトンネルが貼れてないからだと思われます。
               * この環境はVPCとsubnetを駆使して初期状態ではansible\_hostからrtr2やhostsへアクセスできないように作成されています。
               * あまり先まで演習見てないですが、1.4のルータの設定で追加するルーティング情報はhost1とansibleへの経路のみのようなので、演習進めてもansibleからrtr2へpingを通せることはないと思います。

   * iosモジュールって、どのバージョンのiosまでサポートしてるのでしょうか？僕はNWエンジニアではなく、Ciscoのコマンド詳しくないのですが、この前GNS3でvlan作るPlaybook実行したら、vlan databaseってコマンドでvlan切るタイプでPlaybookが通らず。。。IOSってVersionによってコマンドが違うっていうのを聞いてます。
       * module のドキュメントを見ますと、Tested against IOS 15.6 と書いてあるのをよく見ます。
       * 下位Versionはどこまでテストしてるのでしょうか？
           * こちらをご参照ください \url{https://access.redhat.com/articles/3185021}

   * 「ホスト変数」 は inventory 内で 定義されるもので、「 グループ変数 」とは 別の 役割/有効範囲 を持つ、という理解で合ってますでしょうか？ ( 登場箇所の例： 演習 1-1 の 最初「環境の調査」内、ステップ 3: インベントリを理解する )
       * ホスト変数は、定義されたホストがTaskを実行する際に使用されます。変数のスコープについては、下記3つが存在します。
           * Global … ansible.cfg等で定義されている変数です。
           * Play … 各Playの中のvarsセクションでの定義やvars\_file等で定義された変数です。
           * Host … インベントリ内での定義など、各ホストに対して定義された変数です
           * \url{https://docs.ansible.com/ansible/latest/user\_guide/playbooks\_variables.html#variable-scopes}
               * なるほど！ すっきりしました！ ありがとうございます。　　「グループ変数」も Play のスコープになりますかね？
                   * Groupの場合はHostに含まれます。(グループ変数は定義したグループに所属するホストに対して一括で変数を定義できますが、Playbook実行時にはホスト変数と同様に扱われます)
                   * 詳細はこちらをご覧ください: \url{https://docs.ansible.com/ansible/latest/user\_guide/intro\_inventory.html#group-variables}
・\url{https://52.194.213.145/}

   * routerの設定を削除するときに，no ip route等をやりたくなってしまうのですが，ansibleで操作する際は，state: absentを使用するほうがいいのでしょうか？また，no xxxでしか削除できない部分もあるのでしょうか？
       * ios\_vlanのように特定の何かを設定するモジュールであれば、absentで消していただくのが良いです。
       * ルーターの全ての機能にそれぞれ対応したモジュールがあるわけではありませんので、対応していない場合にはcommandモジュールにてno XXXと入れる場合があります。

   * [ぼそっと...] YAMAHA RTX モジュール欲しいですねえ...  Network の Ansible 適用情報的には、 ios (CISCO) と junos (Juniper) 、Alaxala さんが多い感じですが、YAMAHA や Aruba / hp がんばって欲しい...
       * telnet module を使う例はありました \url{https://qiita.com/ken5owata/items/1bb2c6aecc677b9bdc66} (RHの人がQiitaを貼るという)
       * それ書いたの僕ですねwww、YamahaはSSHでコマンド叩けないんで厳しいような。。機種によりますかね？RTX1100でしか試していないのですが。。
           * (なんかすみません)
       * \url{http://kakkotetsu.hatenablog.com/entry/2017/05/13/153443} ではなくて？ 
       * YAMAHAはSSH の command execができないんです。。
       * YAMAHAの中の方が、Interopでお会いした時にAnsible対応考えてないと言ってたような。
           * 　└→ 無念残念 ...
               * そういう機器にも使えるモジュールを！と頑張っていらっしゃる方もいるので乞うご期待！！
       *  Aruba は、要件次第でごにょごにょ。。。個別に相談してください。
           * ArubaはModuleあったけどまだ少ないか
           * \url{https://docs.ansible.com/ansible/2.4/aruba\_config\_module.html}
           * ⇒「 Status： This module is flagged as **preview**  」だった...

   * テスト環境は必要ですね
   * 現在の設定情報を集めるためにも使える
   * Tower の評価用ライセンスは ansible-jp@redhat.com へご連絡ください
   * Tower と AWX の機能差分は結構あります
       * runtime が違います (AWXではcontainerで動いています)
       * アップデートが 2～3週程度ごとに行われています
       * enterprise な機能は Tower だけにあります
       * AWX にはマニュアルがありません
       * Towerの公式ドキュメントはこちら: \url{https://docs.ansible.com/ansible-tower/}
       * 特に： Job Isolation , Isolated Hosts （←スペル違う？）


#所感
途中経過ですが、１４名の方にアンケートにご協力いただきました。

<img width="555" alt="アンケート１.png" src="https://qiita-image-store.s3.amazonaws.com/0/211121/f7466819-027d-b1e6-635d-d36be5fb55e6.png">

ちょっと満足度低い方もいらっしゃったようですが、相対的によかったかと。（５がGood）

<img width="552" alt="難易度.png" src="https://qiita-image-store.s3.amazonaws.com/0/211121/4510574c-3b87-37ab-3afd-e02c48cc6b07.png">

難易度について、簡単１〜難しい５で回答してもらっています。普通だったかな、一部難しく感じられたかたもいらっしゃったようです。

<img width="535" alt="動機.png" src="https://qiita-image-store.s3.amazonaws.com/0/211121/3b42f1d8-0591-9549-c62e-bc75cf10152b.png">

参加の動機についてもお聞きしました。複数回答ですが、個人的な業務改善から、部署でAnsible使う方針になっているなど様々です。もちろん、Ansibleがとりあえず好き！という回答も。

NWの管理・運用で困っていることはありますか？という自由項目にも以下のようなコメントがありました。

>
- ファーム一括アップデート、設定一括保存
- 扱ってはいないので困っていないが、Ansibleを使うと楽になりそうとは思った
- 基本的にはクラウドを活用している為、特にありません。
- 機器の数が多く、インベントリ管理が大変（SFPの移動など）。。。
- 管理の自動化が全然されていない
- 機器の設定と管理台帳やパラメータシートのずれ
- NW機器の管理運用をやっていないので回答ができません。申し訳ありません。
- サーバエンジニアなので普段、NW機器の管理・運用はやってません。すみません。
- 手順書運用 が そろそろ非現実的・・・クラウド時代の運用体制考えたい / NW機器＝ Aruba/hp/YAMAHA/SonicWall
規模が大きくなったので、設定を同時に投入する際の労力が大きい点。そのため、ansibleの導入に必要な情報を探している
毎週のポリシー追加作業/設定変更
- configの作業前後での差分比較と妥当性確認方法、世代管理のためのアップロードと手法、一時的な状態確認、ログ取得方法の統一、他

そもそも自動化されていないというコメントもあったりと、ネットワーク界隈は課題がありそうですね。
また、もくもく会でもご案内しましたが、Slackコミュニティができましたので、そちらでAnsibleユーザ間でいろいろ意見交換してみてくださいね。[こちら](https://join.slack.com/t/ansiblejp/shared_invite/enQtNDEyOTc3OTI3OTQxLWE1NDAzM2I5MGExYzM5OGNlN2RiMjBmYTFiYzM5NzIzYzk1ZjYyMmQ5ZTAxNjA4NmQyMTdjM2MyM2UzNjM2N2E)からご参加いただけます。

もくもく集中して作業したあとは毎回食事＆ビールを飲んでいます。この場でもいろいろ情報交換できます。
![alt](https://pbs.twimg.com/media/DlsDq_DVsAA6IzQ.jpg)
https://twitter.com/fideleruuth/status/1034424589583937542