てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] 「つまずき Ansible 【Part37】Ansible Lightspeed を試してみる」ふりかえり

はじめに

2023/06/03 に、YouTube Live で「つまずき Ansible【Part37】Ansible Lightspeed を試してみる」という配信をしました。

つまずき Ansible 【Part37】Ansible Lightspeed を試してみる - connpass

タスクの name に自然言語で処理を書くと、AIがタスクの内容を提案してくれる Ansible Lightspeed が発表されました(前身はProject Wisdom)。

私のアカウントで、クローズドベータとして利用できるようになったので、試してみました。


動画

www.youtube.com

  • 1:20 Ansible Ligthspeed とは
  • 2:53 シンプルな例を試す
  • 4:38 元ネタ表示機能
  • 5:45 日本語は無理な様子
  • 7:40 アンケートでいただいた試してみたこと
  • 9:00 Play名を考慮してくれそう(その1)
  • 18:50 ファクトは結構表示してくれる
  • 20:50 VMデプロイあれこれ
  • 21:56 Play名を考慮してくれそう(その2)
  • 23:50 EC2をデプロイしたいが
  • 28:08 クロージング

うまく候補が表示された例を、ひとつピックアップします。

---
- name: Deploy Azure VM
  hosts: all
  gather_facts: false

  vars:
    vm_config:
      vm_size: Standard_DS2_v2
      name: ansibull-01
      network_interfaces:
        - name: data-lake831

  tasks:
    - name: Create VM using vm_config var

このようなタスク名 Create VM using vm_config var を指定してエンターを押すと・・(動画 22:00頃

# 略
    - name: Create VM using vm_config var
      azure.azcollection.azure_rm_virtualmachine:
        resource_group: "{{ resource_group }}"
        name: "{{ vm_config.name }}"
        vm_size: "{{ vm_config.vm_size }}"
        admin_username: azureuser
        ssh_password_enabled: "{{ ssh_password_enabled }}"
        ssh_public_keys:
          - path: /home/ano-user/.ssh/authorized_keys
            key_data: "{{ key_data }}"
        network_interfaces: "{{ vm_config.network_interfaces }}"
        image: "{{ image }}"

このようなタスクが生成されました。vars で定義してあるvm_config.name などの変数を、正しい対応で使ってくれています。

なお、プレイの nameAzure を含めず Deploy VM としたときは、nutanix.ncp.ntnx_vms モジュールを使ったタスクが生成されました。プレイの name も考慮してくれるような動きになりました。

[2023/06/06 追記] 日本語のタスク名

配信では日本語のタスクの name はうまくできませんでしたが、後日のこちらの記事 を真似てみたところ、うまくできました。これはこれでコツがいるのかもしれません。

日本語による指示

ただ、日本語と英語でははやり英語の方が精度が高そうです。以下の例では「アンインストール」をうまく解釈できなかった様子が伺えます。

  tasks:
  - name: "nginxとfirewalldをアンインストールする"
    ansible.builtin.package:
      name:
        - nginx
        - firewalld
      state: present

  - name: Uninstall nginx and firewalld
    ansible.builtin.package:
      name:
        - nginx
        - firewalld
      state: absent

感想

プレイの name を解釈してくれていそうなパターンを複数見れたのは良かったなと思いました。他にも address と打つべきところ adress というタイプミスしたらうまく候補が出なかったのも興味深かったです。

プレイもタスクもちゃんと name を書こうという気持ちになりました。

まだベータ状態であり、私自身も試し始めて間もないので、活かしきれてない点は多々あるかと思います。うまく使いこなすには時間がかかりそうですが、今後も遊んでみようと思います。

ご視聴いただいた皆さん、ネタを頂いたみなさん、ありがとうございました!

関連記事

Red Hat、自然言語からAnsible Playbookコードを生成する「Ansible Lightspeed」発表。IBM WatsonのAIを利用 - Publickey

[Ansible] AI で Playbook を生成する Ansible Lightspeed のクローズドベータ申込みとお試し - てくなべ (tekunabe)

[Ansible] AnsibleFest 2023 のキーノートで気になったポイント(Ansible Ligthspeed、Event-Driven Ansible) - てくなべ (tekunabe)

[2023/06/26 追記]

公式ブログによる解説

www.ansible.com