Ansible Lightspeed with Watsonx Code Assistant (Technical preview) を使ってみる


### はじめに


Ansible Lightspeed with Watsonx Code Assistant の Technical preview 版 がリリースされています。
playbook の "-name: " に書きたい内容を自然言語 (英語) で入力すると、自動でplaybookの提案がある Visual Studio Code(以下VSCode)の拡張機能です。


https://www.redhat.com/ja/engage/ansible-lightspeed

https://www.ansible.com/blog/welcome-to-the-ansible-lightspeed-technical-preview



Ansible Galaxy で入手可能なデータ、ロール、コレクションを使用して生成されます。


https://docs.ai.ansible.redhat.com/


---


### Ansible Lightspeed with Watsonx Code Assistant は機能更新中

Watsonx Code Assistant では情報を収集して機能改善に役立て、月一回のモデル更新が予定されているそうです。

https://docs.ai.ansible.redhat.com/machine_learning/

> IBM and Red Hat intend to refresh the model at a cadence of once-per-month.


以下に記載がある情報を収集するとのことです。

https://docs.ai.ansible.redhat.com/introduction/#understanding-data-telemetry



利用規約を読むと、現在は ECS (Early Cloud Service) であり、2023年12月までは現在の形態で提供される予定のようです。


https://docs.ai.ansible.redhat.com/tos/

> IBM intends to offer the ECS through December, 2023 and reserves the right to periodically update, improve or discontinue the ECS or any component or functionality of the Service. IBM may terminate your use of the ECS at any time for any reason.



---

### 導入環境

次の環境で確認しました。

・Local PC (MacBook)
・VSCode 導入済み (バージョン 1.80)
・Python (導入済み、anaconda 仮想環境あり)

・GitHub のアカウントが必要


---

### 導入

VSCode に Ansible extension を導入し、Ansible Lightspeed の設定を行います。

参考：


https://docs.ai.ansible.redhat.com/vscode_guide/installing_vs/

ansible-lint の不足などで稼働できないことがあります。


導入、設定の際に次の記事を参照させていただきました。ありがとうございます。

https://qiita.com/yaskitie/items/3693163bca36d8fa582e


---

### Ansible Lightspeed へ接続

VSCode に Ansible Lightspeed の設定を行います。
左バーにAnsibleのアイコンが追加され、Ansible Lightspeed Login が可能になります。


<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/4a7f3bcb-da91-8e57-5c3f-de850de7280a.png">


Github のアカウントを用いて認証されます。(要Github アカウント。GitHub Enterprise は現時点は不可)


<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/6b96f12f-7101-fddd-e1ca-b8d6f509becf.png">




接続すると Webブラウザは以下が表示されます。(Login ボタンがユーザー名に変更)



<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/71afd376-e214-7286-e092-e41274d78e0b.png">


VSCode 内 setting.json に下記を追加しました。


```setting.json
{
    "ansible.lightspeed.enabled": true,
    "ansible.lightspeed.suggestions.enabled": true
  }
```




---

### コード自動生成の試行


”AIX のファイルシステムを作成する"、というコードを生成してみます。

__"-name: create filesystems in AIX"__ と入力して Enter をおし、少し待ちます。

(ファイルサイズを小さくするため低画質です)

<img width="120%"  src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/22370c05-7411-2304-753e-80e20c3b2520.gif>




↑ 灰色部分が生成された箇所です。
この提案を受け入れる場合は "tab" キーを押し、拒否する場合は"esc"を押します。
「承諾」、「拒否」のアクションが学習に使用されるとのことです。

同じ文言だと、現時点では同じコードが生成される様子のため、コードを変えたい場合は少し文言を変えて試すのが良さようです。


---

### Data source の表示

生成されたコードの下パネル "ANSIBLE LIGHTSPEED TRAINING MATCHES" には Data Source が表示されています。




<img width="100%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/a0a6f483-1acd-9916-0360-c2338f382502.png">

ソースが表示されると、リンク先で詳細な書き方を確認することも可能です。
追加で手動修正したい際の書き方の理解に便利です。


----

### VSCode を開き直して、Ansible Lightspeed が使用できていない場合

一度 VSCode を閉じて、再度立ち上げ直した際に Ansible Lightspeed が動かなくて焦りましたが、言語モードを正しく選択することで解決しました。


"言語モードの選択" で "Ansible"が表示されているかどうかを確認します。

<img width="90%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/aad16a0e-d63b-74fa-dbb2-72f664ecb4e2.png">



<img width="90%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/c1200fca-577b-f71c-a42d-36dddb328ea7.png">


<img width="90%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/1b36fdbb-5a73-d073-955f-628d07377ae0.png">




また、実行環境(Local PC)内で任意の Python インタープリタを選択することも可能です。
Local PCに anaconda を導入しているため、Conda 環境も選択肢に出てきています。


<img width="90%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/57300dc5-b4c4-ee08-b262-2f18b43888d3.png">


---


### おわりに


現時点では playbook 単体で新たなコードを作成する場合に適していると思います。
Ansible Lightspeed にフィードバックして機能改善できるよう、なるべく使ってみようと思います。



以上です。