IBM watsonx Code Assistant for Red Hat Ansible Lightspeed の Playbook 生成 と 説明の機能確認

#### はじめに


IBM watsonx Code Assistant for Red Hat Ansible Lightspeed に Playbook をチャット形式での生成機能と コードの説明機能が追加(2024/06末頃)されていました。

内容を確認します。


https://docs.redhat.com/ja/documentation/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant/2.x_latest/html/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant_user_guide/generate-playbook_generating-playbooks


---

#### 1. Ansible コード全体生成
#### 1-1. Ansible コード全体生成 - 英語入力


① VS Code を開き Ansible 拡張を押します。

" Create Playbook with Ansible Lightspeed" を選びます。

ちなみに Ansible-creator を仮想環境では導入していないのですが、稼働できているようです。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/605032f6-4fe4-881d-243b-047c1a15860c.png)



② 何のplaybook を書きたいかを記入

"What do you want the playbook to accomplish?" という質問と、入力欄があり、そちらに文章を入れます。

今回は、矢印の一例にある、Azure で RHEL VMを作成する内容を記載します。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/431c3c5d-e24b-27de-d676-54875c859f2d.png)

③ 分析を実行

"Analyze" を押します

グルグルが表示され、数秒待ちます。


![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/d2546c8c-f0d8-2330-32b6-63250646ecd2.png)

④ Playbook 生成

実行する内容の提案が一文ずつ表示されました。
"Generate playbook" を実行します。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/711fbdaa-8637-b7c7-2232-42ecc82e4998.png)


⑤ エディターを開く

一瞬で提案の内容のplaybook が表示されました。
"Open editor" を押します。


![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/b2b9281a-ddc1-87df-99a9-a7a321130cc3.png)

⑥ 新たなファイルの作成と保存

新たなタブが開かれ、作成されたAnsible playbook がコピーされています。
こちらを使用する場合は、名前をつけて保存します。



![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/b98954fb-b9f9-f424-bc67-3abb71604952.png)


作成された Playbook の内容です。

```

--
- name: Create a RHEL 9.2 Azure virtual machine named RHEL-VM in resource group named RH attached to the VNET my-vnet and subnet my-subnet with a public ip address
    and a security group to allow traffic over port 22.
  hosts: localhost
  connection: local
  tasks:
    - name: Create a resource group
      azure.azcollection.azure_rm_resourcegroup:
        name: RH
        location: eastus
    - name: Create a virtual network
      azure.azcollection.azure_rm_virtualnetwork:
        resource_group: RH
        name: my-vnet
        address_prefixes: 10.0.0.60/16
    - name: Create a subnet
      azure.azcollection.azure_rm_subnet:
        resource_group: RH
        name: my-subnet
        address_prefix: 10.0.1.16/24
        virtual_network: my-vnet
    - name: Create a public IP address
      azure.azcollection.azure_rm_publicipaddress:
        resource_group: RH
        name: my-public-ip
        allocation_method: Static
    - name: Create a security group
      azure.azcollection.azure_rm_securitygroup:
        resource_group: RH
        name: my-security-group
        rules:
          - name: SSH
            protocol: Tcp
            destination_port_range: 22
            access: Allow
            priority: 1001
            direction: Inbound
    - name: Create a virtual machine
      azure.azcollection.azure_rm_virtualmachine:
        resource_group: RH
        name: RHEL-VM
        vm_size: Standard_B1ms
        admin_username: azureuser
        ssh_password_enabled: "{{ _ssh_password_enabled_ }}"
        ssh_public_keys:
          - path: /home/ano-user/.ssh/authorized_keys
            key_data: "{{ _key_data_ }}"
              AAAAB3NzaC1yc2EAAAADAQABAAABAQC+432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214321432143214
        image: "{{ _image_ }}"
```


手元に試す環境がないので試していませんが、おそらくここから細かい修正は必要と思われます。

---

#### 1-2. Ansible コード全体生成 - 日本語入力

何の playbook を生成するか、の箇所で、最初の例では例文の英語入力を実施しましたが、日本語で入力してみます。

"8080と8081のポートを持つ Webサーバーを作成してください。対象ポートのファイアウォールを開いてください"

という文書を入力して Analyze を押します。

![2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/58211cb6-6306-d6c7-c144-2b13bbde6450.png)

作成の提案が表示されます。こちらは英語で出てきました。"Generate playbook" を押します。

![2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/ff8d8387-7129-d9d1-2c5f-7720286d5c43.png)

以下の playbook が作成されました。

![2-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/1fc4c2b7-e194-1246-4688-18c530f7b220.png)


---

#### 2. Ansible playbook の説明

① アクティブなplaybook から実行

 アクティブな Playbook の YAML ファイルから上で、右クリックして、Explain the playbook with Ansible Lightspeed を選択します。 

![3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/fbe488a6-187f-9d94-52c6-21d2097e30a6.png)

VS Code の右側のパネルが分割されて、Explanation タブで、グルグルと回っています。

![3-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/48ff8399-7d59-591d-1ac1-0314a007dcc7.png)

英語ですが、サマリーとタスクの説明が表示されました。

![3-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/ba8696a4-1169-f3cc-d24b-f51c6962fdb3.png)


② VSCode の Ansible 拡張から "Explain the current playbook" を実行します。

![3-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/3438c235-c16c-be1e-1c86-2d05c8939fc3.png)


Explanation タブが分割表示され、グルグルが回っています。


![3-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/2e56f472-d736-362d-c793-c69a0b396669.png)

同じく英語ですが、サマリーとタスクの説明が表示されました。

![3-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/20d960d0-fb5c-c287-e137-fc28869fd835.png)



---

#### おわりに

Box 欄に実行したいことを入力してマルチタスクで設定する playbook が出てくるようになり、便利になりました。

また、Explanation が表示されるようになったことで、理解しやすくなると同時にドキュメンテーションにも便利になりそうです。



以上です。