Ansible Lightspeed with watsonx Code Assistant の Ansible-Code-Bot の設定と動作の確認



#### はじめに

Ansible Lightspeed with IBM watsonx Code Assistant の機能の一つに、Ansible Code Bot という対象Git リポジトリーのコードの推奨提案(自動プルリクエスト作成) があります。

service preview 版のようですが、設定と動作を確認しました。


<br>

https://access.redhat.com/documentation/ja-jp/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant/2.x_latest/html/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant_user_guide/using-code-bot-for-suggestions_lightspeed-user-guide

>  Ansible コードボットは、Git リポジトリーを通じて既存のコンテンツコレクション、ロール、Playbook をスキャンし、ベストプラクティスや品質向上に関する推奨事項が利用できるたびにプルリクエストを前もって作成します。ボットはプルリクエストをリポジトリーに自動的に送信し、コンテンツに対する推奨される変更をリポジトリー所有者に事前に通知します。既存の Git リポジトリー (パブリックとプライベートの両方) をスキャンするように Ansible コードボットを設定できます。組織で Ansible コードボットを使用するには、有効な Red Hat Ansible Lightspeed with IBM watsonx Code Assistant サブスクリプションが必要です。

> Ansible コードボットは、Ansible lint を使用してコードの品質向上を提案します。Ansible コードボットは、実証済みのプラクティス、パターン、動作を促進しながら、バグにつながりやすい、またはコードのメンテナンスが困難になるような一般的エラーを回避します。Ansible コードボットは、設定されたルールに基づいてコンテンツをスキャンし、コンテンツが Ansible のベストプラクティスに準拠していることを確認します。 



---


#### 環境


Ansible Lightspeed with watsonx Code Assistant は以下で構成、使用可能となります。

* Ansible Automation Platformのライセンス

* IBM Cloud で watsonx Code Assistant の サービス(API key を使用)

* Visual Studio Code の Ansible Extension の設定

* GitHub のアカウントとリポジトリー、コード



<br>


<font color="LightGray">
設定は多岐に渡り調べながら試行錯誤でした。いつか設定方法を書くかもしれませんが、予定未定です。</font>


---

#### Ansible Code Bot のインストール


Ansible Lightspeed with watsonx Code Assistant が使用可能であることを前提として設定を進めます。

[第8章 Ansible コードボットのインストールと設定](https://access.redhat.com/documentation/ja-jp/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant/2.x_latest/html/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant_user_guide/using-code-bot-for-suggestions_lightspeed-user-guide)

8.1. Ansible コードボットのインストール を実行します。

* [Ansible code bot](https://github.com/apps/ansible-code-bot)

右上の Configure を押します。

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/036025d3-05b8-8e40-eaaa-b1b5ff87ae1a.png)


<br>

対象のOrganization を選択します。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/55be3ffe-2d6b-11c7-05df-ca7b78da345a.png width=70%>

<br>

対象のリポジトリを選択します。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/a9b5bc71-6750-c71a-7478-a2f81aef1bf0.png  width=65%>

<br>

RedHat にログイン画面に遷移...

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/dc7dc2d1-7e00-99b7-d1da-9e908fe2c6d7.png width=90%>

<br>

認証が通り、設定されました。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/e18a3683-e076-2a2a-b307-46f2908f4a0f.png width=50%>

<br>

設定した対象のリポジトリーに移動します。
Github Apps で Ansible code bot が設定されています。

![図6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/77c5ea59-7f27-e9e5-4543-875ac113f040.png)


---


#### Ansible Code Bot の設定

[8.2. Ansible コードボットのリポジトリーの定期スキャン設定](https://access.redhat.com/documentation/ja-jp/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant/2.x_latest/html/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant_user_guide/configure-repo-scan_using-code-bot-for-suggestions)

定期スキャンでは、リポジトリーの.github ディレクトリ下に ansible-code-bot.yml を設定します。


![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/5fbe27fb-e633-4c90-f480-9d69169c7a20.png)



---

手動のスキャンは以下の設定です。

[8.3. Git リポジトリーの手動スキャン](https://access.redhat.com/documentation/ja-jp/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant/2.x_latest/html/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant_user_guide/manually-scan-repo_using-code-bot-for-suggestions)



対象リポジトリーの Code 画面で、About 横の設定ボタンを押します。

<br>

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/24d4813e-10c6-098e-a438-3f5af7dfe58b.png)


<br>

Topics に "ansible-code-bot-scan" を入力します。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/e02c6b12-4eb7-a21e-2fcf-d2c0ff88cb5c.png)


<br>


手動スキャンではすぐにpullリクエストはされず、次の内容は daily scan の結果内容です。
日本時間 18:00 頃に実行された様子でした。


---

#### コード修正の自動提案の確認

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/0bd72ddc-69b4-b373-ba0b-545640ba1384.png)

<br>

"Fix ansible-lint rule violations" の報告です。

![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/94282a9e-4f38-4933-0608-64859048fdb2.png)

<br>

pull request のブランチが作成されています。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/9b2add6b-e583-bf4b-ec95-086bd364738b.png  width=38% >

<br>

修正内容詳細

![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/4e604f81-82f0-b9b2-0da5-1e96ac463d9a.png)

<br>


file モジュールの name 指定で " " は不要という指摘でした。

確かに、別件でAnsible コーディング・テストをしていた時、” " の有無でのエラーと修正はよく遭遇しました...
自動で指摘されるのであれば多少ありがたい機能です。


<br>


#### おわりに

マニュアルによると推奨事項には以下が例とありました。


[第8章 Ansible コードボットのインストールと設定](https://access.redhat.com/documentation/ja-jp/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant/2.x_latest/html/red_hat_ansible_lightspeed_with_ibm_watsonx_code_assistant_user_guide/using-code-bot-for-suggestions_lightspeed-user-guide)

> 次の例は、Ansible コードボットが提案できるコードの推奨事項です。
非推奨のレガシー構文または実装パターンに利用可能な代替手段
モジュールのバージョンの変更と更新:
新しい必須パラメーターの追加
非推奨のパラメーターのフラグ付け
未使用のパラメーターの削除
YAML ベストプラクティスの適用
コメントブロックの追加
名前フィールドの大文字と小文字の問題を修正

AIの精度がさらに上がることを期待しつつ、引き続き試す内容を見つけて理解を深めたいと思います。