Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ A Kubernetes operator for Kubernetes built with [Operator SDK](https://github.co
- [Deploy an `AnsibleAIConnect` instance](#deploy-an-ansibleaiconnect-instance)
- [Deploying on OpenShift](#deploying-on-openshift)
- [Deploying on `minikube`](#deploying-on-minikube)
- [Deploy an `AnsibleMCPServer` instance](#deploy-an-ansiblemcpserver-instance)
- [Deploy an `AnsibleMCPConnect` instance](#deploy-an-ansiblemcpconnect-instance)
- [Upgrades](#upgrades)
- [Integrating with Ansible Automation Platform and IBM watsonx Code Assistant](#integrating-with-ansible-automation-platform-and-ibm-watsonx-code-assistant)
- [Advanced Configuration for `AnsibleAIConnect`](#advanced-configuration-for-ansibleaiconnect)
Expand All @@ -24,7 +24,7 @@ A Kubernetes operator for Kubernetes built with [Operator SDK](https://github.co
- [Database Fields Encryption Configuration](#database-fields-encryption-configuration)
- [TLS Communication (OpenShift)](#tls-communication-openshift)
- [Additional Advanced Configuration](#additional-advanced-configuration)
- [Advanced Configuration for `AnsibleMCPServer`](#advanced-configuration-for-ansiblemcpserver)
- [Advanced Configuration for `AnsibleMCPConnect`](#advanced-configuration-for-ansiblemcpconnect)
- [Ignore certificate errors](#ignore-certificate-errors)
- [Programmatic usage of the API](docs/user-guide/programmatic-api-use.md)
- [Maintainers Docs](#maintainers-docs)
Expand All @@ -34,7 +34,7 @@ A Kubernetes operator for Kubernetes built with [Operator SDK](https://github.co
This operator is meant to provide a more Kubernetes-native installation method for

- Ansible AI Connect via an `AnsibleAIConnect` Custom Resource Definition (CRD) and
- Ansible MCP Server via an `AnsibleMCPServer` CRD.
- Ansible MCP Server via an `AnsibleMCPConnect` CRD.

In the future, this operator will grow to be able to maintain the full life-cycle of deployments.
Currently, it can handle fresh installs and upgrades.
Expand Down Expand Up @@ -101,11 +101,11 @@ Full instructions for using an OpenShift cluster are [here](./docs/running-on-op

Full instructions for using a `minikube` cluster are [here](./docs/running-on-minikube-cluster.md).

## Deploy an `AnsibleMCPServer` instance
## Deploy an `AnsibleMCPConnect` instance

Full instructions for deploying an `AnsibleMCPServer` using an OpenShift cluster are [here](./docs/running-on-openshift-cluster.md).
Full instructions for deploying an `AnsibleMCPConnect` using an OpenShift cluster are [here](./docs/running-on-openshift-cluster.md).

Note: Deployment of an `AnsibleMCPServer` is not tested yet.
Note: Deployment of an `AnsibleMCPConnect` is not tested yet.

## Integrating with Ansible Automation Platform and IBM watsonx Code Assistant

Expand Down Expand Up @@ -251,12 +251,12 @@ oc get secret <resourcename>-chatbot-api-tls \
- [Deploy a Specific Version of `AnsibleAIConnect`](./docs/user-guide/advanced-configuration/deploying-a-specific-version.md)
- [Trusting a Custom Certificate Authority](./docs/user-guide/advanced-configuration/trusting-a-custom-certificate-authority.md)

## Advanced Configuration for `AnsibleMCPServer`
## Advanced Configuration for `AnsibleMCPConnect`

### Ignore certificate errors
If your AAP setup uses a self-signed certificate, configure the `AnsibleMCPServer`
If your AAP setup uses a self-signed certificate, configure the `AnsibleMCPConnect`
to ignore certificate errors by setting `IGNORE_CERTIFICATE_ERRORS: true`
within the `extra_settings` of the `AnsibleMCPServer` CRD.
within the `extra_settings` of the `AnsibleMCPConnect` CRD.

```yaml
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: ansiblemcpservers.mcpserver.ansible.com
name: ansiblemcpconnects.mcpserver.ansible.com
spec:
group: mcpserver.ansible.com
names:
kind: AnsibleMCPServer
listKind: AnsibleMCPServerList
plural: ansiblemcpservers
singular: ansiblemcpserver
kind: AnsibleMCPConnect
listKind: AnsibleMCPConnectList
plural: ansiblemcpconnects
singular: ansiblemcpconnect
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: AnsibleMCPServer is the Schema for the ansiblemcpserver API
description: AnsibleMCPConnect is the Schema for the ansiblemcpconnect API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
Expand All @@ -30,7 +30,7 @@ spec:
metadata:
type: object
spec:
description: Spec defines the desired state of AnsibleMCPServer
description: Spec defines the desired state of AnsibleMCPConnect
type: object
required:
- public_base_url
Expand Down Expand Up @@ -496,7 +496,7 @@ spec:
type: object
type: array
status:
description: Status defines the observed state of AnsibleMCPServer
description: Status defines the observed state of AnsibleMCPConnect
x-kubernetes-preserve-unknown-fields: true
properties:
image:
Expand Down
2 changes: 1 addition & 1 deletion config/crd/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
# It should be run by config/default
resources:
- bases/aiconnect.ansible.com_ansibleaiconnects.yaml
- bases/mcpserver.ansible.com_ansiblemcpservers.yaml
- bases/mcpserver.ansible.com_ansiblemcpconnects.yaml
#+kubebuilder:scaffold:crdkustomizeresource
2 changes: 1 addition & 1 deletion config/manager/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ kind: Kustomization
images:
- name: controller
newName: quay.io/ansible/ansible-ai-connect-operator
newTag: 0.1.0
newTag: 0.6.457-pr-659-202511040120
Original file line number Diff line number Diff line change
Expand Up @@ -440,9 +440,9 @@ spec:
- urn:alm:descriptor:org.w3:link
version: v1alpha1
- description: Deploy a new instance of Ansible MCP Server.
displayName: AnsibleMCPServer
kind: AnsibleMCPServer
name: ansiblemcpservers.mcpserver.ansible.com
displayName: AnsibleMCPConnect
kind: AnsibleMCPConnect
name: ansiblemcpconnects.mcpserver.ansible.com
specDescriptors:
- displayName: Image Pull Policy
path: image_pull_policy
Expand Down
8 changes: 4 additions & 4 deletions config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -162,14 +162,14 @@ rules:
- watch

##
## Rules for mcpserver.ansible.com/v1alpha1, Kind: AnsibleMCPServer
## Rules for mcpserver.ansible.com/v1alpha1, Kind: AnsibleMCPConnectmv
##
- apiGroups:
- mcpserver.ansible.com
resources:
- ansiblemcpservers
- ansiblemcpservers/status
- ansiblemcpservers/finalizers
- ansiblemcpconnects
- ansiblemcpconnects/status
- ansiblemcpconnects/finalizers
verbs:
- create
- delete
Expand Down
2 changes: 1 addition & 1 deletion config/samples/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## Append samples of your project ##
resources:
- aiconnect_v1alpha1_ansibleaiconnect.yaml
- mcpserver_v1alpha1_ansiblemcpserver.yaml
- mcpserver_v1alpha1_ansiblemcpconnect.yaml
#+kubebuilder:scaffold:manifestskustomizesamples
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
apiVersion: mcpserver.ansible.com/v1alpha1
kind: AnsibleMCPServer
kind: AnsibleMCPConnect
metadata:
labels:
app.kubernetes.io/name: ansiblemcpserver
app.kubernetes.io/instance: ansiblemcpserver-sample
app.kubernetes.io/name: ansiblemcpconnect
app.kubernetes.io/instance: ansiblemcpconnect-sample
app.kubernetes.io/part-of: ansible-ai-connect-operator
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/created-by: ansible-ai-connect-operator
name: ansiblemcpserver-sample
name: ansiblemcpconnect-sample
spec:
no_log: false
service_type: ClusterIP
Expand Down
14 changes: 7 additions & 7 deletions docs/running-on-openshift-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Overview

This guide shows you how to deploy `AnsibleAIConnect` or `AnsibleMCPServer` on
This guide shows you how to deploy `AnsibleAIConnect` or `AnsibleMCPConnect` on
an OpenShift cluster.

## Permissions
Expand Down Expand Up @@ -174,23 +174,23 @@ gp3-customer-kms (default) ebs.csi.aws.com

These are [provisioned](https://docs.openshift.com/rosa/storage/persistent_storage/persistent-storage-aws.html) by OpenShift ROSA.

## Create an `AnsibleMCPServer` instance
## Create an `AnsibleMCPConnect` instance

The Ansible MCP (Model Context Protocol) Server can be deployed alongside the `AnsibleAIConnect` instance to provide MCP functionality.

### Using Operator Lifecycle Management

If the Operator was installed using the Operator Lifecycle Manager's `Catalog`, you can create an `AnsibleMCPServer` instance through the OpenShift console using the Operator's UI components.
If the Operator was installed using the Operator Lifecycle Manager's `Catalog`, you can create an `AnsibleMCPConnect` instance through the OpenShift console using the Operator's UI components.

### Using the CLI

To create an `AnsibleMCPServer` instance using the CLI:
To create an `AnsibleMCPConnect` instance using the CLI:

1. Create a file `mcpserver.yaml` with the following content:

```yaml
apiVersion: mcpserver.ansible.com/v1alpha1
kind: AnsibleMCPServer
kind: AnsibleMCPConnect
metadata:
name: my-mcpserver
namespace: <target-namespace>
Expand All @@ -210,15 +210,15 @@ spec:
kubectl apply -f mcpserver.yaml
```

3. Once deployed, the `AnsibleMCPServer` instance will be accessible by running:
3. Once deployed, the `AnsibleMCPConnect` instance will be accessible by running:

```bash
oc get route -n <target-namespace> my-mcpserver
```

### Configuration Options

Key configuration options for the `AnsibleMCPServer` include:
Key configuration options for the `AnsibleMCPConnect` include:

- `public_base_url`: **Required.** The URL of your Ansible Automation Platform
- `allow_write_operations` : Enable tools that support modification and data changes (using POST, DELETE, and PATCH methods). (default: `false`)
Expand Down
2 changes: 1 addition & 1 deletion molecule/default/tasks/0_delete_existing_instance.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
- name: Delete existing AnsibleAIConnect and AnsibleMCPServer instances
- name: Delete existing AnsibleAIConnect and AnsibleMCPConnect instances
kubernetes.core.k8s:
state: absent
namespace: '{{ namespace }}'
Expand Down
2 changes: 1 addition & 1 deletion molecule/default/tasks/1_1_create_instance.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
- ansible.builtin.include_tasks: 0_create_config_secrets.yml

- name: Create AnsibleAIConnect and AnsibleMCPServer instances
- name: Create AnsibleAIConnect and AnsibleMCPConnect instances
kubernetes.core.k8s:
state: present
namespace: '{{ namespace }}'
Expand Down
4 changes: 2 additions & 2 deletions molecule/default/tasks/6_0_mcpserver_config_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@
namespace: '{{ namespace }}'
kind: Pod
label_selectors:
- app.kubernetes.io/name = ansiblemcpserver-sample
- app.kubernetes.io/name = ansiblemcpconnect-sample
register: mcpserver_pod

- name: Get API Service details
kubernetes.core.k8s_info:
namespace: '{{ namespace }}'
kind: Service
label_selectors:
- app.kubernetes.io/name = ansiblemcpserver-sample
- app.kubernetes.io/name = ansiblemcpconnect-sample
register: mcpserver_service

- name: Get Health Check
Expand Down
8 changes: 4 additions & 4 deletions molecule/default/templates/create_mcpserver_instance.yaml.j2
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
apiVersion: mcpserver.ansible.com/v1alpha1
kind: AnsibleMCPServer
kind: AnsibleMCPConnect
metadata:
labels:
app.kubernetes.io/name: ansiblemcpserver
app.kubernetes.io/instance: ansiblemcpserver-sample
app.kubernetes.io/name: ansiblemcpconnect
app.kubernetes.io/instance: ansiblemcpconnect-sample
app.kubernetes.io/part-of: ansible-ai-connect-operator
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/created-by: ansible-ai-connect-operator
name: ansiblemcpserver-sample
name: ansiblemcpconnect-sample
spec:
public_base_url: {{ public_base_url }}
allow_write_operations: {{ allow_write_operations }}
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion roles/mcpserver/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Role Variables

### Basic Kubernetes Configuration

- `kind`: Resource kind (default: `'AnsibleMCPServer'`)
- `kind`: Resource kind (default: `'AnsibleMCPConnect'`)
- `api_version`: API version (default: `'mcpserver.ansible.com/v1alpha1'`)
- `deployment_type`: Deployment type identifier (default: `'ansible-mcp-server'`)
- `image_pull_policy`: Image pull policy (default: `IfNotPresent`)
Expand Down
8 changes: 4 additions & 4 deletions roles/mcpserver/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
# defaults file for AnsibleMCPServer
# defaults file for AnsibleMCPConnect

# ========================================
# Basic k8s configuration
# ----------------------------------------
kind: 'AnsibleMCPServer'
kind: 'AnsibleMCPConnect'
api_version: 'mcpserver.ansible.com/v1alpha1'
deployment_type: 'ansible-mcp-server'

Expand All @@ -30,7 +30,7 @@ no_log: false
# ========================================
# AnsbileMCPServer
# ----------------------------------------
# Add a nodeSelector for the AnsibleMCPServer pods. It must match a node's labels for the pod
# Add a nodeSelector for the AnsibleMCPConnect pods. It must match a node's labels for the pod
# to be scheduled on that node. Specify as literal block. E.g.:
# api:
# node_selector: |
Expand Down Expand Up @@ -133,7 +133,7 @@ bundle_cacert_secret: ''
# ----------------------------------------

# ========================================
# Unused by AnsibleMCPServer
# Unused by AnsibleMCPConnect
# ----------------------------------------
# ipv6_disabled: false
# websocket_ssl_verify: false
Expand Down
2 changes: 1 addition & 1 deletion roles/mcpserver/handlers/main.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
# handlers file for AnsibleMCPServer
# handlers file for AnsibleMCPConnect
6 changes: 3 additions & 3 deletions roles/mcpserver/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
# Tasks file for AnsibleMCPServer
# Tasks file for AnsibleMCPConnect

- name: Combine default and custom vars for each component
ansible.builtin.include_tasks: combine_defaults.yml
Expand All @@ -8,10 +8,10 @@
ansible.builtin.include_role:
name: common
vars:
kind: 'AnsibleMCPServer'
kind: 'AnsibleMCPConnect'
api_version: 'mcpserver.ansible.com/v1alpha1'

- name: Set AnsibleMCPServer service images
- name: Set AnsibleMCPConnect service images
ansible.builtin.include_tasks: set_images.yml

- name: Set Bundle Certificate Authority
Expand Down
2 changes: 1 addition & 1 deletion roles/mcpserver/tasks/set_images.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
# API Image
- name: Set default AnsibleMCPServer API container image
- name: Set default AnsibleMCPConnect API container image
ansible.builtin.set_fact:
_default_image: "{{ _image }}:{{ _image_version }}"

Expand Down
2 changes: 1 addition & 1 deletion roles/mcpserver/tasks/update_status.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
version: ""

# ============================================
# Retrieve and update AnsibleMCPServer status
# Retrieve and update AnsibleMCPConnect status
# ============================================
- block:
- name: Set MCP server instance version
Expand Down
2 changes: 1 addition & 1 deletion roles/mcpserver/templates/mcpserver.configmap.yaml.j2
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# AnsibleMCPServer ConfigMap.
# AnsibleMCPConnect ConfigMap.
---
apiVersion: v1
kind: ConfigMap
Expand Down
2 changes: 1 addition & 1 deletion roles/mcpserver/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
---
# vars file for AnsibleMCPServer
# vars file for AnsibleMCPConnect

bundle_ca_crt: ''
4 changes: 2 additions & 2 deletions watches.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
playbook: playbooks/ansibleaiconnect.yml
- version: v1alpha1
group: mcpserver.ansible.com
kind: AnsibleMCPServer
playbook: playbooks/ansiblemcpserver.yml
kind: AnsibleMCPConnect
playbook: playbooks/ansiblemcpconnect.yml
#+kubebuilder:scaffold:watch