ansible2.7 を GNS3上で遊ぶために　①GNS3の導入、CentOSをのっけてansible2.7を使えるようにする。

#はじめに
[エンジニアは全員技術記事を書くことを習慣化した方がいいぞ](https://qiita.com/HiromuMasuda0228/items/a71dea7ef4d77a30b118)
↑こちらの記事に触発されて、安直に動き出した次第でございます。

駆け出しNWエンジニアの覚書ですので、突っ込みどころ満載です。

これを見て何かをされる方は少ないと思いますが、生暖かい目でどうにかよろしくお願いいたします。

###構成
> ①GNS3の導入、CentOSをのっけてansible2.7を使えるようにする。
②対象機器image(firewallを想定)をのっける、ansibleを利用した自動設定を行う。

###なぜこれを書いたのか
- 業務効率化の一環
    - 「ファイアウォールにルールを入れるのは手作業だと多ければ多いほど面倒くさいしミスが出がち・・・」と言う先人の教えからansibleを使った自動化を行ったらという流れに
- 行ったことの整理、アプトプット
    - 検索してヒットした情報を見たままに進めて「はいできた。」で終わりがちなのをやめたいと思ったから。行ったことの結果自体はあるが、自身で行ったことを忘れがちなので知識の定着も目的の一つ
- cli_config を使ってみたい人だから
    - 新しい力cli_configがいかようなものなのかを実際触って知りたい
 

###環境
- VMware Workstation 12 Player
- GNS3 version 2.1.11 on Windows (64-bit)
- CentOS 6.10
- ansible 2.7.0
- python 2.7.10
- pip 18.1



#早速やっていく

###GNS3の導入
[GNS3 Windows版をインストールするときに知っておきたいこと](http://shigeluma-tech.hatenablog.com/entry/how-to-install-gns3ver2)
少し前の記事ですが、こちらを参考にして行いました。

GNS3は過去に使っていたのですがバージョンアップに伴いGNS3-vmとバージョンを合わせて動かさないといけないよーとなっていました。

###ansibleを乗っけるCentOS6.10を用意
[osboxes](https://www.osboxes.org/centos/#centos-68-vmware)から拾ってました。
置く場所は自分がわかればどこでもよいです。

やはりOS、細々回線だとちと重たいのでコーヒーでも飲みながら待っていましょう

####拾ってこれたら

CentOS6.10をGNS3上で動かせるようにしていきます。

- GNS３起動後にプロジェクトを新規で作成

- 画像の[Centos]をワークスペース部分に引っ張り出そうとすると、保有しているCentOSイメージから選択してimportできるのでやります。
長くなりそうだったので、筆者は猫の画像を見ながら待っていました。


<img src="https://qiita-image-store.s3.amazonaws.com/0/290051/1c26d6d3-cedc-a38b-a4cb-66cb04a45bf0.png" width=50%>

>①[create a new version]からわかりやすい名前を付ける

>②[import]からさっき拾ってきたCentos6.10を指定しimportする

<img src="https://qiita-image-store.s3.amazonaws.com/0/290051/a42bb448-e85c-baf0-1d2e-ff40a9871275.png" width=50%>

- importが終わるとすぐに設置できるようになるのでポイっと置きます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/290051/feb0efe2-2b8b-5f62-38fe-a5f421b87e30.png" width=50%>

-  立ち上がるのを確認。
やったべ。ひと段落

####yumやらpipやら使いたいので外に出るための設定

cloudはホストとなっている自身のマシンのNICを利用するために使う（ブリッジ接続的なやつだと思っている）
ホストとなっているマシンが所属しているNWに乗っかることができます。

cloudを右クリック後[configuration]から設定画面を開き、
[Ethernet interface]タブ内の設定をいじっていきます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/290051/d0e05fe3-16e5-4567-7e33-2d23ca38841f.png" width=50%>
PCアイコンをクリックした後のリスト内にある[Cloud]を引っ張り出します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/290051/fa5348de-53cb-580a-4e62-e9df697904c4.png" width=50%>

> ①チェックを入れる

> ②VMware Network adapter VMnet1 ~ 8 があるのでプルダウンから選択

> ③[add]をクリックするとプルダウンで選択されているインターフェースがcloudに追加される

どのNICに何のアドレスが来ているのかは自身のホストPCのCMDからipconfigで確認
![6.PNG](https://qiita-image-store.s3.amazonaws.com/0/290051/09cc2002-def6-d52b-5d52-b30bfab6004f.png)

#### 上記を確認した上で設置したCentOS6.10のネットワーク設定を行う

interface-eth0の設定がないので作っていきます。

/etc/sysconfig/network-scripts/ に ifcfg-eth0 を作成

> `vi /etc/sysconfig/network-scripts/ifcfg-eth0`


中身はこんな感じです　↓
cloudに追加したインターフェースのNW設定情報とGATEWAYは合わせてくだされ

> DEVICE="eth0"
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
IPADDR="お好きなアドレス"
NETMASK="お好きなマスク"
DNS1=8.8.8.8
GATEWAY="お好きなデフォゲ"


書き終えたら
> `# ifup eth0` 
`# service network restart`

でOK、適当なサイトにブラウザアクセス or pingで疎通確認出来たら
下準備はここまでです。


###ansibleのインストール

漸く本丸のインストール作業に入ります。
流れとしては python2.7 → ansible2.7 の順でインストールしていきます。

[pyenvのインストール、使い方、pythonのバージョン切り替えできない時の対処法](https://qiita.com/koooooo/items/b21d87ffe2b56d0c589b) @koooooo 氏のこちらを参考にいたしました。

なんとなくpython2.7.xが使いたいのでアップグレードします。(python2.7.X)
要求はpython2.6.x upなので2.6以降ならば動きます。
python2.6以降が入っていたり、2.7なんて意地でも使わないという方はスキップしてください。


その後pipのアップデートも行っておいてください。(筆者はpip 18.1にupgrade しました)
>`#pip install --upgrade pip`

- pip install からansible2.7をインストール


深いこと考えずにpip installをしていく

> `#pip install ansible`

![9.PNG](https://qiita-image-store.s3.amazonaws.com/0/290051/281fdfe4-ce82-565f-d932-1cf4c824ec8f.png)


赤線のやつらがdoneしたのを確認できればインストール完了です。

インストール後はansibleのバージョン確認だけ行っておきましょう

> `ansible --version`

![10.PNG](https://qiita-image-store.s3.amazonaws.com/0/290051/a58df38f-a970-cefb-d8d8-62ea5bcf9461.png)


ok!

#まとめ＆次回

###構築手順の洗練
書きながらここまでの工程（2度目の構築）を行っていたのですが、
かなりのテンポで進めることができました。
なにが前提で必要なのかをいちいち調べるという工程がなかったというのが大きく感じられました。
当たり前のことですが、構築速度を上げるには洗練された手順が必要だと再認識。

そういった事柄から、2回目3回目の作業時には手順書が残っていてほしいと強く感じました。

今回の作業動機となった[エンジニアは全員技術記事を書くことを習慣化した方がいいぞ](https://qiita.com/HiromuMasuda0228/items/a71dea7ef4d77a30b118)という部分にはきちんと意識を向けたままここまでの作業を行えたのではないかと考えています。

###fortigate へ ansibleでの自動設定を行う。
今回作成した環境に、fortigate5.6.1(firewall)を追加し、そこに対して
ruleの設定をansibleを使った方法で流し込もうとしています。
ansile2.7から追加された、cli_configにも触れられたら良いなと考えております。







以上、次回