Ansible_そういえば、よく使ったねモジュールランキング2018

#はじめに

今年は前半よくAnsibleを触った、主に研修で
いろいろなモジュールを使ったので
なかでもよく使ったモジュールをランキング形式でまとめてみました。
細かく回数などは数えてない、つまりよくつかった(とおもう)モジュールベスト４


4位から発表と思ったが長ったらしくなりそうなので1位から発表
playbookのサンプルとともに紹介していきます。

ちなみにAnsibleのバージョンは2.6

##第1位 debug
でしょうね。。。
きっと皆さんもよくお世話になってると思います。

サンプル

```yml

---
- hosts: juniper
  gather_facts: no
  connection: local
  
  tasks:
    - name: show version
      junos_command:
        commands: show version
        provider: "{{ cli }}"
        register: result

    - debug: msg="{{ result }}" ←ココ！
```

##第2位 vsphere_guest
vCenter入っていないESXiでVM作成したい！と思ったらこのモジュール
入っている場合は第3位で紹介するモジュールを使うほうがよい(2.9でvsphere_guestなくなるので)
Deployするまでしかやってくれません、、つまりOSのインストールは手作業(そんな馬鹿な。。。)
なのでキックスタートを使ったインストールで何とか自動デプロイを実現させました。
※実は今年の８月頃記事書いてます

サンプル

```yaml

      vsphere_guest:
        vcenter_hostname: "{{ hostname }}"　←ESXiのIPアドレス
        username: "{{ username }}"　　　　　←ESXiログイン時のユーザ名
        password: "{{ password }}"　　　　　←ESXiログイン時のパスワード
        guest: "{{ guest }}"　　　　　　　　←作成するVMの名前
        state: powered_on　　　　　　　　　　←作ったVMステータス設定(今回はパワーオン)
        validate_certs: no　　　　　　　　　←初回SSH接続時の確認をとばす
        esxi:
          datacenter: ha-datacenter　　　　←スタンドアロンの場合固定値
          hostname: localhost.localdomain　←ESXiに設定しているホスト名

        vm_extra_config:
          notes: This is a test VM
        vm_disk:
          disk1:
            size_gb: "{{ size_gb }}"
            type: thin
            datastore: datastore1
        vm_nic:
          nic1:
            type: vmxnet3
            network: VM Network 1
            network_type: standard
          nic2:
            type: vmxnet3
            network: VM Network
            network_type: standard
          nic3:
            type: vmxnet3
            network: VM Network 2
            network_type: standard

        vm_hardware:
          memory_mb: "{{ memory_mb }}"
          num_cpus: "{{ num_cpus }}"
          osid: rhel6_64Guest　　　　　　　
          scsi: paravirtual
          vm_cdrom:
            type: "iso"
            iso_path: "{{ iso_path }}"

```


##第3位 vmware_guest

内部的にはvCenterをAPIで操作して動いているようです
つまりvCenterがない環境では使えないということ。。。
templateからのVM作成もできるのでこちらのほうが優秀かと思っています。

サンプル

```yaml

- name: Deploy Linux VM
  vmware_guest:
    hostname: "{{ vcenter_ip }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    validate_certs: False
    folder: /hogehoge
    name: "{{ vm_name }}"
    state: poweredon
    template: "{{ template }}"

    disk:
    - size_gb: "{{ disk_size }}"
      type: thin
      datastore: "{{ datestore }}"
    
    hardware:
      memory_mb: "{{ memory_size }}"
      num_cpus: "{{ cpu_num }}"
      num_cpu_cores_per_socket: 3
      scsi: paravirtual
      memory_reservation: 512
      memory_reservation_lock: True
      mem_limit: 8096
      mem_reservation: 4096
      cpu_limit: 8096
      cpu_reservation: 4096
      max_connections: 5
      hotadd_cpu: True
      hotremove_cpu: True
      hotadd_memory: False
      version: 12 # Hardware version of virtual machine

    networks:
    - name: VM Network
      ip: "{{ ip }}"
      netmask: "{{ mask }}"
      gateway: "{{ gateway }}"
    wait_for_ip_address: yes

  delegate_to: localhost
  register: deploy
  when: os == "linux"

```

実行結果


##第4位 **junos_command**

junosにコマンド(showなどの確認系)を送りつけるモジュール
vSRXが無償でできる関係でよくお世話になりました。
PythonのスクリプトでPolicyをCSVから生成してjunos_configで時間になったら変更する！
というものを作ったのもよい思い出です。
その時の確認でよく使いました。。

サンプル

```yaml

---
- hosts: juniper
  gather_facts: no
  connection: local
  
  tasks:
    - name: show version
      junos_command:
        commands: show version
        provider: "{{ cli }}"
        register: result

    - debug: msg="{{ result }}"
```

#まとめ
上半期のみでしたが今年はいろいろなモジュールを触りました、
紹介はできなかったけどBIG-IPのモジュールやIOSのモジュール、そしてあまり使ってなかったサーバ系のモジュール(サーバ系というより基本的なコマンド)もWindowsも試したなぁ

動いて感動していた時期はそろそろ終わり、運用を意識した設計やモジュールを組み合わせて想定通りに作り上げるために考えなくてはいけなくなってきました。

そこは来年の課題として・・・。

ぜひみなさんのランキングも知りたいものです、
よく使ったモジュールを振り返るとどんな一年だったかわかるかもしれませんね！(適当)

来年触りたいモジュールはずばり
**ACIのモジュール**です。
記事も書くぞ！