{"id":18637059,"url":"https://github.com/openshift/assisted-service","last_synced_at":"2025-05-14T13:06:09.983Z","repository":{"id":36952605,"uuid":"275946303","full_name":"openshift/assisted-service","owner":"openshift","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-11T11:13:46.000Z","size":100406,"stargazers_count":124,"open_issues_count":32,"forks_count":234,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-05-11T11:26:55.301Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openshift.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-06-29T23:13:57.000Z","updated_at":"2025-05-11T10:20:11.000Z","dependencies_parsed_at":"2024-04-23T14:04:02.805Z","dependency_job_id":"e0c2bc75-d9ec-46bc-9d03-4fd2ccda6077","html_url":"https://github.com/openshift/assisted-service","commit_stats":{"total_commits":5235,"total_committers":140,"mean_commits":"37.392857142857146","dds":0.9426934097421203,"last_synced_commit":"780deffb6a3555cba0853db088647607b40093f2"},"previous_names":[],"tags_count":208,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fassisted-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fassisted-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fassisted-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fassisted-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openshift","download_url":"https://codeload.github.com/openshift/assisted-service/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254149947,"owners_count":22022851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T05:33:00.330Z","updated_at":"2025-05-14T13:06:04.966Z","avatar_url":"https://github.com/openshift.png","language":"Go","readme":"# assisted-service\n\n[![Swagger API](https://raw.githubusercontent.com/swagger-api/swagger-ui/master/src/img/logo_small.png)](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/openshift/assisted-service/master/swagger.yaml)\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/openshift/assisted-service)](https://goreportcard.com/report/github.com/openshift/assisted-service)\n[![License Apache](https://img.shields.io/github/license/openshift/assisted-service)](https://opensource.org/licenses/Apache-2.0)\n\n## About\n\nThis repository provides a service that installs OpenShift.  Its main benefits include a minimum amount of prerequisites from the user's infrastructure, as well as comprehensive pre-flight validations to ensure a successful installation.  The service exposes either a REST API, or it can be deployed as an Operator where it exposes a Kubernetes-native API via Custom Resources.  A [UI](https://github.com/openshift-assisted/assisted-installer-ui) is available that uses the REST API.\n\nThe Assisted Service can currently install clusters with highly-available control planes (3 hosts and above) and can also install Single-Node OpenShift (SNO).  Highly available clusters are configured to use OpenShift's `baremetal` platform (typically used in [bare metal IPI deployments](https://docs.openshift.com/container-platform/4.7/installing/installing_bare_metal_ipi/ipi-install-overview.html)), while SNO uses `none` (typically used in [UPI deployments](https://docs.openshift.com/container-platform/4.7/installing/installing_platform_agnostic/installing-platform-agnostic.html)).\n\nThe basic flow for creating a new OpenShift cluster using the Assisted Service via the UI or REST API is:\n1. Create a new Cluster resource with the minimal required properties.\n1. Generate and download a bootable image which is customized for that cluster. This image is based on RHCOS and is customized to automatically run an agent upon boot.\n1. Boot the hosts that will form the cluster with the image from the previous step. The boot method is left to the user (e.g., USB drive, virtual media, PXE, etc.).\n1. The agent running on each host contacts the Assisted Service via REST API and performs discovery (sends hardware inventory and connectivity information).\n1. The UI guides the user through the installation, with the service performing validations along the way.  Alternatively, this can be done via API.\n1. Once all validations pass, the user may initiate the installation.  Progress may be viewed via the UI or API, and logs are made available for download directly from the service.\n\n## Demos and blog posts\n\nBelow are some recent demos and blog posts:\n* Blog, Jan 2021: [Using the OpenShift Assisted Installer Service to Deploy an OpenShift Cluster on Bare Metal and vSphere](https://www.openshift.com/blog/using-the-openshift-assisted-installer-service-to-deploy-an-openshift-cluster-on-metal-and-vsphere)\n* Blog and demo, Dec 2020: [Making OpenShift on Bare Metal easy](https://www.openshift.com/blog/making-openshift-on-bare-metal-easy)\n* Blog and demo, Oct 2020: [It's Inside your House! Assisted Installer on Bare Metal Demonstration](https://www.openshift.com/blog/its-inside-the-house-assisted-installer-demonstration)\n\n## User documentation\n\nBy continuing to read this document you will learn how to build and deploy Assisted Service. If you are interested in using Assisted Service to deploy an OCP cluster, please refer to the [User Documentation](docs/user-guide/README.md).\n\n## Development Prerequisites\n\n1. Docker or Podman. \u003cbr\u003e\nFor podman make sure to [enable podman socket](docs/dev/podman.md) and update skipper.yaml to map it properly\n1. skipper \u003chttps://github.com/stratoscale/skipper\u003e\n1. minikube (for tests)\n1. kubectl\n1. Python modules `pip install waiting`\n\n## First Setup\n\nTo push your build target to a Docker registry you first need to change the default target.\n\n1. Create a quay.io or Docker Hub account if you don't already have one. These instructions refer to quay.io, Docker Hub is similar.\n1. Create a repository called assisted-service.\n1. Make sure you have your `~/.docker/config.json` file set up to point to your account. For quay.io, you can go to quay.io -\u003e User Settings, and click \"Generate Encrypted Password\" under \"Docker CLI Password\".\n1. Login to quay.io using `docker login quay.io`.\n1. Export the `SERVICE` environment variable to your Docker registry, and pass a tag of your choice, e.g., \"test\":\n\n```sh\nexport SERVICE=quay.io/\u003cusername\u003e/assisted-service:\u003ctag\u003e\n```\n\nFor the first build of the build container run:\n\n```shell\nskipper build assisted-service-build\n```\n\n## Build\n\n```shell\nskipper make all\n```\n\n### Generate code after swagger changes\n\nAfter every change in the API (`swagger.yaml`) the code should be generated and the build must pass.\n\n```shell\nskipper make generate-from-swagger\n```\n\n## Testing\n\nMore information is available here: [Assisted Installer Testing](docs/dev/testing.md)\n\n## Update Discovery Image base OS\n\nIf you want to update the underlying operating system image used by the discovery iso, follow these steps:\n\n1. Choose the base os image you want to use\n\n   1. RHCOS: \u003chttps://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/\u003e\n   2. Fedora CoreOS: \u003chttps://getfedora.org/en/coreos/download?tab=metal_virtualized\u0026stream=stable\u003e\n\n2. Build the new iso generator image\n\n   ```sh\n   # Example with RHCOS\n   BASE_OS_IMAGE=https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/pre-release/latest/rhcos-4.6.0-0.nightly-2020-08-26-093617-x86_64-live.x86_64.iso make build-assisted-iso-generator-image\n   ```\n\n## Deployment\n\n### Deploy to k8s\n\nThe deployment is a system deployment, it contains all the components the service need for all the operations to work (if implemented).\nS3 service (minio), DB and will use the image generator to create the images in the deployed S3 and create relevant bucket in S3.\n\n```shell\nmake deploy-on-k8s\n```\n\n\n### Deploy to OpenShift\n\nBesides default minikube deployment, the service supports deployment to OpenShift cluster using ingress as the access point to the service.\n\n```shell\nskipper make deploy-all TARGET=oc-ingress\n```\n\nThis deployment option have multiple optional parameters that should be used in case you are not the Admin of the cluster:\n\n1. `APPLY_NAMESPACE` - True by default. Will try to deploy \"assisted-installer\" namespace, if you are not the Admin of the cluster or maybe you don't have permissions for this operation you may skip namespace deployment.\n1. `INGRESS_DOMAIN` - By default deployment script will try to get the domain prefix from OpenShift ingress controller. If you don't have access to it then you may specify the domain yourself. For example: `apps.ocp.prod.psi.redhat.com`\n1. `DISABLE_TLS` - Based on the target environment, routes that are being used are HTTPS. Setting it to true will make HTTP routes instead.\n\nTo set the parameters simply add them in the end of the command, for example:\n\n```shell\nskipper make deploy-all TARGET=oc-ingress APPLY_NAMESPACE=False INGRESS_DOMAIN=apps.ocp.prod.psi.redhat.com\n```\n\nNote: All deployment configurations are under the `deploy` directory in case more detailed configuration is required.\n\n### Deploy UI\n\nThis service supports optional UI deployment.\n\n```shell\nskipper make deploy-ui\n```\n\n\\* In case you are using *podman* run the above command without `skipper`.\n\nFor OpenShift users, look at the service deployment options on OpenShift platform.\n\n### Deploy Monitoring\n\nSee - [deploy monitoring](./docs/user-guide/deploy-assisted-monitoring.md)\n\n\n### Deploy by tag\n\nThis feature is for internal usage and not recommended to use by external users.\nThis option will select the required tag that will be used for each dependency.\nIf deploy-all use a new tag the update will be done automatically and there is no need to reboot/rollout any deployment.\n\nDeploy images according to the manifest:\n\n```shell\nskipper make deploy-all DEPLOY_MANIFEST_PATH=./assisted-installer.yaml\n```\n\nDeploy images according to the manifest in the assisted-installer-deployment repo (require git tag/branch/hash):\n\n```shell\nskipper make deploy-all DEPLOY_MANIFEST_TAG=master\n```\n\nDeploy all the images with the same tag.\nThe tag is not validated, so you need to make sure it actually exists.\n\n```shell\nskipper make deploy-all DEPLOY_TAG=\u003ctag\u003e\n```\n\nDefault tag is latest\n\n### Deploy without a Kubernetes cluster\n\nThere are two ways the assisted service can be deployed without using a Kubernetes cluster:\n\n#### Using containers on your local host\nIn this scenario the service and associated components are deployed onto your local host as a pod using Podman.\n\nSee the [README](./deploy/podman/) for details.\n\n### Storage\n\nassisted-service maintains a cache of openshift-baremetal-install binaries at\n`$WORK_DIR/installercache/`. Persistent storage can optionally be mounted\nthere to persist the cache across container restarts. However, that storage\nshould not be shared across multiple assisted-service processes.\n\n#### Cache Expiration\n\nCurrently there is no mechanism to expire openshift-baremetal-install binaries\nout of the cache. The recommendation for now is to allow the cache to use the\ncontainer's own local storage that will vanish when the Pod gets replaced, for\nexample during upgrade. That will prevent the cache from growing forever while\nallowing it to be effective most of the time.\n\n## Troubleshooting\n\nA document that can assist troubleshooting: [link](https://docs.google.com/document/d/1WDc5LQjNnqpznM9YFTGb9Bg1kqPVckgGepS4KBxGSqw)\n\n## Documentation\n\nMarkdown formatted documentation is available in the [docs](docs) directory.\n\n## Linked repositories\n\n### coreos_installation_iso\n\n\u003chttps://github.com/oshercc/coreos_installation_iso\u003e\n\nImage in charge of generating the Fedora-coreOs image used to install the host with the relevant ignition file.\\\nImage is uploaded to deployed S3 under the name template \"installer-image-\\\u003ccluster-id\\\u003e\".\n\n## Assisted Service on console.redhat.com\nThe Assisted Installer is also available for users as a SAAS hosted in console.redhat.com.\n\nMore information is available here: [Assisted Installer on console.redhat.com](docs/cloud.md)\n\n## Setting a custom discovery ISO password\nIt's possible to modify the discovery ISO (via the API) to enable password login for troubleshooting purposes.\n\nMore information is available here: [Set discovery ISO user password example](docs/set-discovery-password.md)\n\n## Contributing\n\nPlease, read our [CONTRIBUTING] guidelines for more info about how to create, document, and review PRs.\n\n[CONTRIBUTING]: https://github.com/openshift/assisted-service/blob/master/CONTRIBUTING.md\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshift%2Fassisted-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenshift%2Fassisted-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshift%2Fassisted-service/lists"}