はじめに
IBM watsonx Code Assistant for Red Hat Ansible Lightspeed に Playbook をチャット形式での生成機能と コードの説明機能が追加(2024/06末頃)されていました。
内容を確認します。
1. Ansible コード全体生成
1-1. Ansible コード全体生成 - 英語入力
① VS Code を開き Ansible 拡張を押します。
" Create Playbook with Ansible Lightspeed" を選びます。
ちなみに Ansible-creator を仮想環境では導入していないのですが、稼働できているようです。
② 何のplaybook を書きたいかを記入
"What do you want the playbook to accomplish?" という質問と、入力欄があり、そちらに文章を入れます。
今回は、矢印の一例にある、Azure で RHEL VMを作成する内容を記載します。
③ 分析を実行
"Analyze" を押します
グルグルが表示され、数秒待ちます。
④ Playbook 生成
実行する内容の提案が一文ずつ表示されました。
"Generate playbook" を実行します。
⑤ エディターを開く
一瞬で提案の内容のplaybook が表示されました。
"Open editor" を押します。
⑥ 新たなファイルの作成と保存
新たなタブが開かれ、作成されたAnsible playbook がコピーされています。
こちらを使用する場合は、名前をつけて保存します。
作成された 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 を押します。
作成の提案が表示されます。こちらは英語で出てきました。"Generate playbook" を押します。
以下の playbook が作成されました。
2. Ansible playbook の説明
① アクティブなplaybook から実行
アクティブな Playbook の YAML ファイルから上で、右クリックして、Explain the playbook with Ansible Lightspeed を選択します。
VS Code の右側のパネルが分割されて、Explanation タブで、グルグルと回っています。
英語ですが、サマリーとタスクの説明が表示されました。
② VSCode の Ansible 拡張から "Explain the current playbook" を実行します。
Explanation タブが分割表示され、グルグルが回っています。
同じく英語ですが、サマリーとタスクの説明が表示されました。
おわりに
Box 欄に実行したいことを入力してマルチタスクで設定する playbook が出てくるようになり、便利になりました。
また、Explanation が表示されるようになったことで、理解しやすくなると同時にドキュメンテーションにも便利になりそうです。
以上です。