diff --git a/content/trial_getting_started/examples/basic/_index.md b/content/trial_getting_started/examples/basic/_index.md index 6fcd45913..54e3fe808 100644 --- a/content/trial_getting_started/examples/basic/_index.md +++ b/content/trial_getting_started/examples/basic/_index.md @@ -1,5 +1,5 @@ +++ -title = "Level 2: Infra Provisioning Basics" +title = "Level 2: Infrastructure Provisioning Basics" description = "Learn how to setup basic infrastructure in AWS, Azure, GCP and OpenStack" weight = 20 alwaysopen = false diff --git a/content/trial_getting_started/examples/basic/aws_basics.md b/content/trial_getting_started/examples/basic/aws_basics.md index 6f8c311a4..f61a640eb 100644 --- a/content/trial_getting_started/examples/basic/aws_basics.md +++ b/content/trial_getting_started/examples/basic/aws_basics.md @@ -7,7 +7,7 @@ cloud_auth_ui_link = "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_creden cloud_auth_cli_link = "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey_CLIAPI" title = "AWS - Infrastructure provisioning basics" -description = "AWS - Infrastructure provisioning basics" +description = "Deploy an AWS EC2 instance and supporting infrastructure resources" weight = 22 alwaysopen = false +++ @@ -17,7 +17,7 @@ This example demonstrates a simple infrastructure setup in **{{< param cloud_ful * Instance * Security Group * Network - * All of the essential peripherals in {{< param cloud >}} (IP address, NIC, etc...). + * All of the essential peripherals in {{< param cloud >}} (IP address, NIC, etc.) In this example we will deploy only the infrastructure. Later, in the more advanced examples (multi cloud examples) @@ -66,10 +66,10 @@ The blueprint for this example handles describes all of the components in the en Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload a blueprint using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) * **Blueprint package**: `https://github.com/cloudify-community/blueprint-examples/releases/download/latest/virtual-machine.zip` -* **Blueprint name**: virtual-machine +* **Blueprint name**: virtual-machine (or any name of your choosing) * **Blueprint YAML file**: aws.yaml -### Deploy & Install +### Deploy and Install Once the blueprint has been uploaded, it will be displayed on the Blueprints page. Create a new deployment, adjusting any inputs as needed. diff --git a/content/trial_getting_started/examples/basic/azure_basics.md b/content/trial_getting_started/examples/basic/azure_basics.md index e0908ee37..950b77234 100644 --- a/content/trial_getting_started/examples/basic/azure_basics.md +++ b/content/trial_getting_started/examples/basic/azure_basics.md @@ -5,7 +5,7 @@ blueprint_name = "azure.yaml" deployment_name = "virtual-machine.azure" title = "Azure - Infrastructure provisioning basics" -description = "Azure - Infrastructure provisioning basics" +description = "Deploy an Azure VM and supporting infrastructure resources" weight = 25 alwaysopen = false +++ @@ -21,231 +21,80 @@ In this example we will deploy only the infrastructure. Later, in the more advanced examples (multi cloud examples) we will leverage this setup as the basis for deploying a generic application server and an application. +You should already be familiar with the concepts from the [Fundamentals Example.]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) + ## Prerequisites This example expects the following prerequisites: * A {{< param cfy_manager_name >}} setup ready. This can be either a [{{< param mgr_hosted_title >}}]({{< param mgr_hosted_link >}}), a [{{< param mgr_premium_title >}}]({{< param mgr_premium_link >}}), or a [{{< param mgr_community_title >}}]({{< param mgr_community_link >}}). * Access to {{< param cloud >}} infrastructure is required to demonstrate this example. -#### {{< param cfy_cli_name >}} or {{< param cfy_console_name >}}? - -{{< param product_name >}} allows for multiple user interfaces. Some users find the {{< param cfy_console_name >}} (web based UI) more intuitive while others prefer the {{< param cfy_cli_name >}} (Command Line Interface). This tutorial and all following ones will describe both methods. - -* [Using the {{< param cfy_console_name >}}](#cloudify-management-console) -* [Using the {{< param cfy_cli_name >}}](#cloudify-cli) - -{{% note %}} -Community version - Some of the options described in the guide are not available in the community version management console (web UI). An example would be setting up secrets. You can still perform all of the functionality using the {{< param cfy_cli_name >}}. -{{% /note %}} - -## {{< param cfy_console_name >}} - -This section explains how to run the above described steps using the {{< param cfy_console_name >}}. -The {{< param cfy_console_name >}} and {{< param cfy_cli_name >}} can be used interchangeably for all {{< param product_name >}} activities. - - +## Deployment Steps ### Create Secrets -To connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -Secrets are kept encrypted in a secure way and used in run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). +Credentials are required to connect to {{< param cloud >}}. {{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -{{< param cloud >}} credentials can be created by following the guide [here]({{< relref "working_with/official_plugins/Infrastructure/azure.md" >}}). +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create secrets using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets-1" >}}) -To store the access keys as secrets in the {{< param cfy_manager_name >}}, login to the {{< param cfy_console_name >}} and select the **System Resources** page. Scroll to the **Secret Store Management** widget and use the **Create** button to add the following new secrets: +Create the following secrets in the {{< param cfy_manager_name >}}: -* azure_subscription_id -* azure_tenant_id -* azure_client_id -* azure_client_secret - -**Notes** - -* `azure_subscription_id` - the account subscription ID. -* `azure_tenant_id` - the Service Principal `tenant`. -* `azure_client_id` - the Service Principal `appId`. -* `azure_client_secret` - the Service Principal `password`. +| Secret Name | Description | +| ----------------------- | -------------------------------- | +| `azure_subscription_id` | The account subscription ID | +| `azure_tenant_id` | The service principal tenant | +| `azure_client_id` | The service principal `appId` | +| `azure_client_secret` | The service principal `password` | ![Required secrets for this example]( /images/trial_getting_started/azure_basic/create_secrets.png ) ### Upload Plugins -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers and automation tools. -I.e., connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. +Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. This example also requires the Utilities plugin. -To upload the required plugins to your manager, select the **Cloudify Catalog** page, scroll to the **Plugins Catalog** widget and select the plugins you wish to upload. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload plugins using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins-1" >}}) -For this example, upload the following plugins: +Upload the following plugins to the {{< param cfy_manager_name >}}: * Utilities * {{< param cloud >}} - - - ### Upload Blueprint -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. -Blueprints are represented as descriptive code (yaml based files) and typically stored and managed as part of the source repository. -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}). - -The flow required to setup a service consists of: - -1. Upload the blueprint describing the service to the {{< param cfy_manager_name >}}. -1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. -1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. +The blueprint for this example handles describes all of the components in the environment's topology. Upload a new blueprint to the {{< param cfy_manager_name >}} with the values below. -Let's run these one by one. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload a blueprint using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -To upload a blueprint to the {{< param cfy_manager_name >}}, select the **Cloudify Catalog** page, and use the **Upload blueprint** button next to the {{< param cloud >}}-Basics-VM-Setup blueprint. +* **Blueprint package**: `https://github.com/cloudify-community/blueprint-examples/releases/download/latest/virtual-machine.zip` +* **Blueprint name**: virtual-machine (or any name of your choosing) +* **Blueprint YAML file**: azure.yaml +### Deploy and Install +Once the blueprint has been uploaded, it will be displayed on the Blueprints page. Create a new deployment, adjusting any inputs as needed. -### Deploy & Install - -Once the blueprint is uploaded, it will be displayed in the Blueprints widget. to deploy the blueprint click the **Create deployment** button next to the blueprint you wish to deploy. Specify a deployment name, update any inputs (such as the {{< param cloud >}} region), and click **Deploy & Install**. Changing inputs is completely optional and the defaults are safe to use. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create a deployment using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#deploy-and-install" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) ![Create a Deployment]( /images/trial_getting_started/azure_basic/deploy.png) -You will be directed to the **Deployment** page and will be able to track the progress of the execution. - -The deployment you have created should be displayed in the deployments list in the **Deployments** page. +You will be directed to the **Deployment** page and will be able to track the progress of the execution: ![Track the progress of a Workflow]( /images/trial_getting_started/aws_basic/Screenshot261.png ) ### Validate -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* Examine the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, and view the installation logs. - -To login to your new {{< param cloud >}} instance, you can look at the **Deployment Outputs/Capabilities** widget on the Deployment screen to find your {{< param cloud >}} instance public IP, SSH username, and SSH private key. - -![Get Deployment outputs]( /images/trial_getting_started/aws_basic/Screenshot263.png ) - -### Teardown +This example deployed a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs along with a new network and other resources. You can validate this deployment by: -To remove the deployment and destroy the orchestrated infrastructure resources, run the **Uninstall** workflow by clicking the **Execute workflow** menu next to the deployment, expanding **Default workflows**, and selecting **Uninstall**. - -____ - - -## {{< param cfy_cli_name >}} - -Create a CLI profile instructing your CLI how to connect with the {{< param cfy_manager_name >}} by running the following CLI commands - -```bash -cfy init -cfy profiles use -u admin -p --ssl -cfy profiles set --manager-tenant default_tenant -``` - -### Create Secrets +* Navigating to the {{< param cloud >}} console and verifying that the new instance and other resources were created. +* Examining the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, installation logs. -To enable {{< param product_name >}} to connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information as a {{< param product_name >}} secret. -Secrets are encrypted in a secure way and used during run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). -{{< param cloud >}} credentials can be created by following the guide [here]({{< relref "working_with/official_plugins/Infrastructure/azure.md" >}}). +You can log in to the newly deployed {{< param cloud >}} instance by obtaining the public IP, SSH username, and SSH private key ouputs and capabilities. -To store the access keys as secrets via the {{< param cfy_cli_name >}}, run the following (replacing with the actual string retrieved from {{< param cloud >}}): - -```bash -cfy secrets create azure_client_id --secret-string -cfy secrets create azure_tenant_id --secret-string -cfy secrets create azure_subscription_id --secret-string -cfy secrets create azure_client_secret --secret-string -``` - -**Notes** - -* `azure_subscription_id` - the account subscription ID. -* `azure_tenant_id` - the Service Principal `tenant`. -* `azure_client_id` - the Service Principal `appId`. -* `azure_client_secret` - the Service Principal `password`. - - -### Upload Plugins - -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers, and automation tools. -Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. You may upload specific plugins or, for simplicity, upload the plugin bundle containing all of the basic, pre-packaged, plugins. - -To upload the default plugins bundle (this may take a few minutes depending on your internet speed): -```bash -cfy plugins bundle-upload -``` - -**Tip**: Read more about [plugins]({{< relref "/working_with/official_plugins/_index.md" >}}) and [writing your own plugins]({{< relref "/developer/writing_plugins/_index.md" >}}). - -### Upload Blueprint and Deploy - -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. Blueprints are represented as descriptive code (YAML-based files) and are typically stored and managed as part of the source code repository. - -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}). - -Uploading a blueprint to {{< param product_name >}} can be done by direct upload or by providing the link in the source code repository. -The flow to do that is: - - 1. Upload the blueprint. - 1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. - 1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -In order to perform this flow as a single unit, we will use the **install** command. - -```bash -cfy install {{< param basic_blueprint_zip >}} -n {{< param blueprint_name >}} -``` - -### Validate - -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* You can easily get a list of all deployed nodes by running: - -```bash -Listing nodes for deployment {{< param deployment_name >}}... - -Nodes: -+------------------------+-----------------------+-----------------------+---------+---------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| id | deployment_id | blueprint_id | host_id | type | visibility | tenant_name | number_of_instances | planned_number_of_instances | created_by | -+------------------------+-----------------------+-----------------------+---------+---------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| subnet | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.Subnet | tenant | default_tenant | 1 | 1 | admin | -| availability_set | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.compute.AvailabilitySet | tenant | default_tenant | 1 | 1 | admin | -| network | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.VirtualNetwork | tenant | default_tenant | 1 | 1 | admin | -| resource_group | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.ResourceGroup | tenant | default_tenant | 1 | 1 | admin | -| nic | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.NetworkInterfaceCard | tenant | default_tenant | 1 | 1 | admin | -| vm | {{< param deployment_name >}} | {{< param deployment_name >}} | vm | cloudify.azure.nodes.compute.VirtualMachine | tenant | default_tenant | 1 | 1 | admin | -| ip_config | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.IPConfiguration | tenant | default_tenant | 1 | 1 | admin | -| ip | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.PublicIPAddress | tenant | default_tenant | 1 | 1 | admin | -| storage_account | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.storage.StorageAccount | tenant | default_tenant | 1 | 1 | admin | -| network_security_group | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.NetworkSecurityGroup | tenant | default_tenant | 1 | 1 | admin | -+------------------------+-----------------------+-----------------------+---------+---------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ - -Showing 10 of 10 nodes - -``` - -**Tip**: To check out some more commands to use with the {{< param cfy_console_name >}}, run `cfy --help` - -An even easier way to review your deployment is through the [{{< param cfy_console_name >}}](#validate). -Login to the console and browse to the **Deployments** page. -Select the deployment (`{{< param deployment_name >}}`) and explore the topology, inputs, outputs, nodes, and logs. - -![azure_simple_vm_topology.png]( /images/trial_getting_started/azure_infra_deployment_topology.png ) - -This is also a good time to examine the blueprint used in the example. -The blueprint can be examined in the {{< param cfy_console_name >}}, however in this case -we will go to the {{< param product_name >}} examples repository in Github and examine it there: [{{< param blueprint_name >}}]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}) +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of verification steps, including how to obtain outputs and capabilities using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#validate" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#validate-1" >}}) +![Get Deployment outputs]( /images/trial_getting_started/aws_basic/Screenshot263.png ) ### Teardown -To remove the deployment and delete all resources from {{< param cloud >}} simply run the uninstall command: -```bash -cfy uninstall {{< param deployment_name >}} -``` +Once you are done testing the environment, you can teardown the deployed resources. Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of teardown steps using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown-1" >}}) diff --git a/content/trial_getting_started/examples/basic/gcp_basics.md b/content/trial_getting_started/examples/basic/gcp_basics.md index 16982a07c..42e598835 100644 --- a/content/trial_getting_started/examples/basic/gcp_basics.md +++ b/content/trial_getting_started/examples/basic/gcp_basics.md @@ -7,7 +7,7 @@ cloud_auth_ui_link = "https://cloud.google.com/iam/docs/service-accounts" cloud_auth_cli_link = "https://cloud.google.com/iam/docs/service-accounts" title = "GCP - Infrastructure provisioning basics" -description = "GCP - Infrastructure provisioning basics" +description = "Deploy a GCP VM and supporting infrastructure resources" weight = 27 alwaysopen = false +++ @@ -23,205 +23,79 @@ In this example we will deploy only the infrastructure. Later, in the more advanced examples (multi cloud examples) we will leverage this setup as the basis for deploying a generic application server and an application. +You should already be familiar with the concepts from the [Fundamentals Example.]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) + ## Prerequisites This example expects the following prerequisites: * A {{< param cfy_manager_name >}} setup ready. This can be either a [{{< param mgr_hosted_title >}}]({{< param mgr_hosted_link >}}), a [{{< param mgr_premium_title >}}]({{< param mgr_premium_link >}}), or a [{{< param mgr_community_title >}}]({{< param mgr_community_link >}}). * Access to {{< param cloud >}} infrastructure is required to demonstrate this example. -#### {{< param cfy_cli_name >}} or {{< param cfy_console_name >}}? - -{{< param product_name >}} allows for multiple user interfaces. Some users find the {{< param cfy_console_name >}} (web based UI) more intuitive while others prefer the {{< param cfy_cli_name >}} (Command Line Interface). This tutorial and all following ones will describe both methods. - -* [Using the {{< param cfy_console_name >}}](#cloudify-management-console) -* [Using the {{< param cfy_cli_name >}}](#cloudify-cli) - -{{% note %}} -Community version - Some of the options described in the guide are not available in the community version management console (web UI). An example would be setting up secrets. You can still perform all of the functionality using the {{< param cfy_cli_name >}}. -{{% /note %}} +## Deployment Steps -## {{< param cfy_console_name >}} - -This section explains how to run the above described steps using the {{< param cfy_console_name >}}. -The {{< param cfy_console_name >}} and {{< param cfy_cli_name >}} can be used interchangeably for all {{< param product_name >}} activities. +### Create Secrets +Credentials are required to connect to {{< param cloud >}}. {{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create secrets using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets-1" >}}) -### Create Secrets +Create the following secrets in the {{< param cfy_manager_name >}}: -To connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -Secrets are kept encrypted in a secure way and used in run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). +| Secret Name | Description | +| ----------------- | -------------------------------------------- | +| `gcp_credentials` | JSON containing credential for accessing GCP | {{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_ui_link>}}). -To store the access keys as secrets in the {{< param cfy_manager_name >}}, login to the {{< param cfy_console_name >}} and select the **System Resources** page. Scroll to the **Secret Store Management** widget and use the **Create** button to add the following new secrets: - -* gcp_credentials - ![Required secrets for this example]( /images/trial_getting_started/gcp_basic/create_secrets.png ) ### Upload Plugins -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers and automation tools. -I.e., connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. +Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. This example also requires the Utilities plugin. -To upload the required plugins to your manager, select the **Cloudify Catalog** page, scroll to the **Plugins Catalog** widget and select the plugins you wish to upload. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload plugins using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins-1" >}}) -For this example, upload the following plugins: +Upload the following plugins to the {{< param cfy_manager_name >}}: * Utilities * {{< param cloud >}} - - - ### Upload Blueprint -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. -Blueprints are represented as descriptive code (yaml based files) and typically stored and managed as part of the source repository. -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}). - -The flow required to setup a service consists of: +The blueprint for this example handles describes all of the components in the environment's topology. Upload a new blueprint to the {{< param cfy_manager_name >}} with the values below. -1. Upload the blueprint describing the service to the {{< param cfy_manager_name >}}. -1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. -1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload a blueprint using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -Let's run these one by one. +* **Blueprint package**: `https://github.com/cloudify-community/blueprint-examples/releases/download/latest/virtual-machine.zip` +* **Blueprint name**: virtual-machine (or any name of your choosing) +* **Blueprint YAML file**: gcp.yaml -To upload a blueprint to the {{< param cfy_manager_name >}}, select the **Cloudify Catalog** page, and use the **Upload blueprint** button next to the {{< param cloud >}}-Basics-VM-Setup blueprint. +### Deploy and Install -### Deploy & Install +Once the blueprint has been uploaded, it will be displayed on the Blueprints page. Create a new deployment, adjusting any inputs as needed. -Once the blueprint is uploaded, it will be displayed in the Blueprints widget. to deploy the blueprint click the **Create deployment** button next to the blueprint you wish to deploy. Specify a deployment name, update any inputs (such as the {{< param cloud >}} region), and click **Deploy & Install**. Changing inputs is completely optional and the defaults are safe to use. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create a deployment using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#deploy-and-install" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) ![Create a Deployment]( /images/trial_getting_started/gcp_basic/deploy.png ) -You will be directed to the **Deployment** page and will be able to track the progress of the execution. - -The deployment you have created should be displayed in the deployments list in the **Deployments** page. +You will be directed to the **Deployment** page and will be able to track the progress of the execution: ![Track the progress of a Workflow]( /images/trial_getting_started/aws_basic/Screenshot261.png ) ### Validate -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. +This example deployed a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs along with a new network and other resources. You can validate this deployment by: -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* Examine the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, and view the installation logs. - -To login to your new {{< param cloud >}} instance, you can look at the **Deployment Outputs/Capabilities** widget on the Deployment screen to find your {{< param cloud >}} instance public IP, SSH username, and SSH private key. - -![Get Deployment outputs]( /images/trial_getting_started/aws_basic/Screenshot263.png ) - -### Teardown - -To remove the deployment and destroy the orchestrated infrastructure resources, run the **Uninstall** workflow by clicking the **Execute workflow** menu next to the deployment, expanding **Default workflows**, and selecting **Uninstall**. - - -____ - - -## {{< param cfy_cli_name >}} - -Create a CLI profile instructing your CLI how to connect with the {{< param cfy_manager_name >}} by running the following CLI commands - -```bash -cfy init -cfy profiles use -u admin -p --ssl -cfy profiles set --manager-tenant default_tenant -``` - -### Create Secrets +* Navigating to the {{< param cloud >}} console and verifying that the new instance and other resources were created. +* Examining the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, installation logs. -To enable {{< param product_name >}} to connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information as a {{< param product_name >}} secret. -Secrets are encrypted in a secure way and used during run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). -{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_cli_link>}}). +You can log in to the newly deployed {{< param cloud >}} instance by obtaining the public IP, SSH username, and SSH private key ouputs and capabilities. -To store the access keys as secrets via the {{< param cfy_cli_name >}}, run the following (replacing with the actual string retrieved from {{< param cloud >}}): - -```bash -cfy secrets create gcp_credentials --secret-file ./path/to/service_account_json_file - -``` - -`gcp_credentials`: A GCP service account key in JSON format. **Hint: We create this secret from a file.** - -### Upload Plugins - -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers, and automation tools. -Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. You may upload specific plugins or, for simplicity, upload the plugin bundle containing all of the basic, pre-packaged, plugins. - -To upload the default plugins bundle (this may take a few minutes depending on your internet speed): -```bash -cfy plugins bundle-upload -``` - -**Tip**: Read more about [plugins]({{< relref "/working_with/official_plugins/_index.md" >}}) and [writing your own plugins]({{< relref "/developer/writing_plugins/_index.md" >}}). - -### Upload Blueprint and Deploy - -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. Blueprints are represented as descriptive code (YAML-based files) and are typically stored and managed as part of the source code repository. - -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}). - -Uploading a blueprint to {{< param product_name >}} can be done by direct upload or by providing the link in the source code repository. -The flow to do that is: - - 1. Upload the blueprint. - 1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. - 1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -In order to perform this flow as a single unit, we will use the **install** command. - -```bash -cfy install {{< param basic_blueprint_zip >}} -n {{< param blueprint_name >}} -``` - -### Validate - -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* You can easily get a list of all deployed nodes by running: - -```bash -Listing nodes for deployment {{< param deployment_name >}}... - -Nodes: -+----------+---------------------+---------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| id | deployment_id | blueprint_id | host_id | type | visibility | tenant_name | number_of_instances | planned_number_of_instances | created_by | -+----------+---------------------+---------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| firewall | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.gcp.nodes.FirewallRule | tenant | default_tenant | 1 | 1 | admin | -| subnet | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.gcp.nodes.SubNetwork | tenant | default_tenant | 1 | 1 | admin | -| network | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.gcp.nodes.Network | tenant | default_tenant | 1 | 1 | admin | -| vm | {{< param deployment_name >}} | {{< param deployment_name >}} | vm | cloudify.gcp.nodes.Instance | tenant | default_tenant | 1 | 1 | admin | -+----------+---------------------+---------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ - -Showing 4 of 4 nodes - -``` -**Tip**: To check out some more commands to use with the {{< param cfy_console_name >}}, run `cfy --help` - -An even easier way to review your deployment is through the [{{< param cfy_console_name >}}](#validate). -Login to the console and browse to the **Deployments** page. -Select the deployment (`{{< param deployment_name >}}`) and explore the topology, inputs, outputs, nodes, and logs. - -![gcp_simple_vm_topology.png]( /images/trial_getting_started/gcp_simple_vm_topology.png ) - -This is also a good time to examine the blueprint used in the example. -The blueprint can be examined in the {{< param cfy_console_name >}}, however in this case -we will go to the {{< param product_name >}} examples repository in Github and examine it there: [{{< param blueprint_name >}}]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}) +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of verification steps, including how to obtain outputs and capabilities using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#validate" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#validate-1" >}}) +![Get Deployment outputs]( /images/trial_getting_started/aws_basic/Screenshot263.png ) ### Teardown -To remove the deployment and delete all resources from {{< param cloud >}} simply run the uninstall command: -```bash -cfy uninstall {{< param deployment_name >}} -``` +Once you are done testing the environment, you can teardown the deployed resources. Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of teardown steps using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown-1" >}}) diff --git a/content/trial_getting_started/examples/basic/openstack_basics.md b/content/trial_getting_started/examples/basic/openstack_basics.md index dbf0f72f2..7b84c0da1 100644 --- a/content/trial_getting_started/examples/basic/openstack_basics.md +++ b/content/trial_getting_started/examples/basic/openstack_basics.md @@ -7,7 +7,7 @@ cloud_auth_ui_link = "https://access.redhat.com/documentation/en-us/red_hat_open cloud_auth_cli_link = "https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/8/html/command-line_interface_reference_guide/ch_cli#cli_openrc" title = "OpenStack - Infrastructure provisioning basics" -description = "OpenStack - Infrastructure provisioning basics" +description = "Deploy an OpenStack VM and supporting infrastructure resources" weight = 28 alwaysopen = false +++ @@ -23,6 +23,8 @@ In this example we will deploy only the infrastructure. Later, in the more advanced examples (multi cloud examples) we will leverage this setup as the basis for deploying a generic application server and an application. +You should already be familiar with the concepts from the [Fundamentals Example.]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) + ## Prerequisites This example expects the following prerequisites: @@ -30,252 +32,79 @@ This example expects the following prerequisites: * Access to {{< param cloud >}} infrastructure is required to demonstrate this example. * An available **CentOS 7** cloud image in OpenStack (Glance) -#### {{< param cfy_cli_name >}} or {{< param cfy_console_name >}}? - -{{< param product_name >}} allows for multiple user interfaces. Some users find the {{< param cfy_console_name >}} (web based UI) more intuitive while others prefer the {{< param cfy_cli_name >}} (Command Line Interface). This tutorial and all following ones will describe both methods. - -* [Using the {{< param cfy_console_name >}}](#cloudify-management-console) -* [Using the {{< param cfy_cli_name >}}](#cloudify-cli) - -{{% note %}} -Community version - Some of the options described in the guide are not available in the community version management console (web UI). An example would be setting up secrets. You can still perform all of the functionality using the {{< param cfy_cli_name >}}. -{{% /note %}} +## Deployment Steps -## {{< param cfy_console_name >}} - -This section explains how to run the above described steps using the {{< param cfy_console_name >}}. -The {{< param cfy_console_name >}} and {{< param cfy_cli_name >}} can be used interchangeably for all {{< param product_name >}} activities. +### Create Secrets +Credentials and access information are required to connect to {{< param cloud >}}. {{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create secrets using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets-1" >}}) -### Create Secrets +Create the following secrets in the {{< param cfy_manager_name >}}: -To connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -Secrets are kept encrypted in a secure way and used in run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). - -{{< param cloud >}} credentials can be downloaded by following the guide [here]({{< param cloud_auth_ui_link>}}). - -To store the access keys as secrets in the Cloudify manager, login to the {{< param cfy_console_name >}} and select the **System Resources** page. Scroll to the **Secret Store Management** widget and use the **Create** button to add the following new secrets: - -```bash -* openstack_username -* openstack_password -* openstack_tenant_name -* openstack_auth_url -* openstack_external_network -* openstack_region -* base_image_id -* base_flavor_id -* openstack_user_domain_name -* openstack_project_domain_name -``` - -**Notes** - -* `openstack_auth_url` - a Keystone v3 authentication url. -* `openstack_external_network` - the Floating IP network name in OpenStack. For example, in RackSpace it is "GATEWAY_NET". -* `base_image_id` - the image_id of a CentOS 7 image in your OpenStack account. -* `base_flavor_id` - the image flavor id (the "t-shirt" size of the VM). -* `openstack_user_domain_name` - usually "default". -* `openstack_project_domain_name` - usually "default". +| Secret Name | Description | +| ---------------------------------------------------------------- | ------------------------------------ | +| `openstack_username` | Username to access OpenStack API | +| `openstack_password` | Password to access OpenStack API | +| `openstack_tenant_name` | Openstack tenant | +| `openstack_auth_url` | Keystone v3 authentication url | +| `openstack_external_network` |Floating IP network name in OpenStack. For example, in RackSpace it is "GATEWAY_NET". | +| `openstack_region` | Openstack region | +| `base_image_id` | Image ID of a CentOS 7 image in your OpenStack account | +| `base_flavor_id` | Image flavor ID (size of the VM) | +| `openstack_user_domain_name` | Typically "default" | +| `openstack_project_domain_name` | Typically "default" | ![Required secrets for this example]( /images/trial_getting_started/openstack_basic/create_secrets.png ) ### Upload Plugins -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers and automation tools. -I.e., connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. +Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. This example also requires the Utilities plugin. -To upload the required plugins to your manager, select the **Cloudify Catalog** page, scroll to the **Plugins Catalog** widget and select the plugins you wish to upload. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload plugins using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins-1" >}}) -For this example, upload the following plugins: +Upload the following plugins to the {{< param cfy_manager_name >}}: * Utilities * {{< param cloud >}} v3 - - ### Upload Blueprint -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. -Blueprints are represented as descriptive code (yaml based files) and typically stored and managed as part of the source repository. -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}). - -The flow required to setup a service consists of: +The blueprint for this example handles describes all of the components in the environment's topology. Upload a new blueprint to the {{< param cfy_manager_name >}} with the values below. -1. Upload the blueprint describing the service to the {{< param cfy_manager_name >}}. -1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. -1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload a blueprint using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -Let's run these one by one. +* **Blueprint package**: `https://github.com/cloudify-community/blueprint-examples/releases/download/latest/virtual-machine.zip` +* **Blueprint name**: virtual-machine (or any name of your choosing) +* **Blueprint YAML file**: openstack.yaml -To upload a blueprint to the {{< param cfy_manager_name >}}, select the **Cloudify Catalog** page, and use the **Upload blueprint** button next to the {{< param cloud >}}-Basics-VM-Setup blueprint. +### Deploy and Install +Once the blueprint has been uploaded, it will be displayed on the Blueprints page. Create a new deployment, adjusting any inputs as needed. -### Deploy & Install - -Once the blueprint is uploaded, it will be displayed in the Blueprints widget. to deploy the blueprint click the **Create deployment** button next to the blueprint you wish to deploy. Specify a deployment name, update any inputs (such as the {{< param cloud >}} region), and click **Deploy & Install**. Changing inputs is completely optional and the defaults are safe to use. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create a deployment using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#deploy-and-install" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) ![Create a Deployment]( /images/trial_getting_started/openstack_basic/deploy.png) -You will be directed to the **Deployment** page and will be able to track the progress of the execution. - -The deployment you have created should be displayed in the deployments list in the **Deployments** page. +You will be directed to the **Deployment** page and will be able to track the progress of the execution: ![Track the progress of a Workflow]( /images/trial_getting_started/aws_basic/Screenshot261.png ) ### Validate -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* Examine the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, and view the installation logs. - -To login to your new {{< param cloud >}} instance, you can look at the **Deployment Outputs/Capabilities** widget on the Deployment screen to find your {{< param cloud >}} instance public IP, SSH username, and SSH private key. - -![Get Deployment outputs]( /images/trial_getting_started/aws_basic/Screenshot263.png ) - -### Teardown - -To remove the deployment and destroy the orchestrated infrastructure resources, run the **Uninstall** workflow by clicking the **Execute workflow** menu next to the deployment, expanding **Default workflows**, and selecting **Uninstall**. - - -____ - - -## {{< param cfy_cli_name >}} - -Create a CLI profile instructing your CLI how to connect with the {{< param cfy_manager_name >}} by running the following CLI commands - -```bash -cfy init -cfy profiles use -u admin -p --ssl -cfy profiles set --manager-tenant default_tenant -``` - -### Create Secrets - -To enable {{< param product_name >}} to connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information as a {{< param product_name >}} secret. -Secrets are encrypted in a secure way and used during run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). - -{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_cli_link>}}). - -To store the access keys as secrets via the {{< param cfy_cli_name >}}, run the following (replacing with the actual string retrieved from {{< param cloud >}}): - -```bash -cfy secrets create openstack_username --secret-string -cfy secrets create openstack_password --secret-string -cfy secrets create openstack_tenant_name --secret-string -cfy secrets create openstack_auth_url --secret-string -cfy secrets create openstack_external_network --secret-string -cfy secrets create openstack_region --secret-string -cfy secrets create base_image_id --secret-string -cfy secrets create base_flavor_id --secret-string -cfy secrets create openstack_user_domain_name --secret-string -cfy secrets create openstack_project_domain_name --secret-string -``` - -**Notes** - -* `openstack_auth_url` - a Keystone v3 authentication url. -* `openstack_external_network` - the Floating IP network name in OpenStack. For example, in RackSpace it is "GATEWAY_NET". -* `base_image_id` - the image_id of a CentOS 7 image in your OpenStack account. -* `base_flavor_id` - the image flavor id (the "t-shirt" size of the VM). -* `openstack_user_domain_name` - usually "default". -* `openstack_project_domain_name` - usually "default". - -**Advanced users tip**: - -You can also source the OpenStack RC file, then use the environment variables, for example: -``` -cfy secrets create openstack_username -s ${OS_USERNAME} -``` -### Upload Plugins - -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers, and automation tools. -Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. You may upload specific plugins or, for simplicity, upload the plugin bundle containing all of the basic, pre-packaged, plugins. - -To upload the default plugins bundle (this may take a few minutes depending on your internet speed): -```bash -cfy plugins bundle-upload -``` - -**Tip**: Read more about [plugins]({{< relref "/working_with/official_plugins/_index.md" >}}) and [writing your own plugins]({{< relref "/developer/writing_plugins/_index.md" >}}). - -### Upload Blueprint and Deploy - -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. Blueprints are represented as descriptive code (YAML-based files) and are typically stored and managed as part of the source code repository. - -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}). - -Uploading a blueprint to {{< param product_name >}} can be done by direct upload or by providing the link in the source code repository. -The flow to do that is: - - 1. Upload the blueprint. - 1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. - 1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -In order to perform this flow as a single unit, we will use the **install** command. - -```bash -cfy install {{< param basic_blueprint_zip >}} -n {{< param blueprint_name >}} -``` - -### Validate - -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* You can easily get a list of all deployed nodes by running: - -```bash -cfy nodes list -d {{< param deployment_name >}} -``` +This example deployed a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs along with a new network and other resources. You can validate this deployment by: -which will return: +* Navigating to the {{< param cloud >}} console and verifying that the new instance and other resources were created. +* Examining the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, installation logs. -```bash -Nodes: -+------------------+---------------------------+---------------------------+---------+----------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| id | deployment_id | blueprint_id | host_id | type | visibility | tenant_name | number_of_instances | planned_number_of_instances | created_by | -+------------------+---------------------------+---------------------------+---------+----------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| subnet | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.openstack.Subnet | tenant | default_tenant | 1 | 1 | admin | -| network | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.openstack.Network | tenant | default_tenant | 1 | 1 | admin | -| security-group | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.openstack.SecurityGroup | tenant | default_tenant | 1 | 1 | admin | -| ip | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.openstack.FloatingIP | tenant | default_tenant | 1 | 1 | admin | -| cloud_init | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.CloudInit.CloudConfig | tenant | default_tenant | 1 | 1 | admin | -| vm | {{< param deployment_name >}} | {{< param deployment_name >}} | vm | cloudify.nodes.openstack.Server | tenant | default_tenant | 1 | 1 | admin | -| external-network | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.openstack.Network | tenant | default_tenant | 1 | 1 | admin | -| router | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.openstack.Router | tenant | default_tenant | 1 | 1 | admin | -| port | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.openstack.Port | tenant | default_tenant | 1 | 1 | admin | -+------------------+---------------------------+---------------------------+---------+----------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ +You can log in to the newly deployed {{< param cloud >}} instance by obtaining the public IP, SSH username, and SSH private key ouputs and capabilities. -Showing 9 of 9 nodes - -``` - -**Tip**: To check out some more commands to use with the {{< param cfy_console_name >}}, run `cfy --help` - -An even easier way to review your deployment is through the [{{< param cfy_console_name >}}](#validate). -Login to the console and browse to the **Deployments** page. -Select the deployment (`{{< param deployment_name >}}`) and explore the topology, inputs, outputs, nodes, and logs. - -![openstack_simple_vm_topology.png]( /images/trial_getting_started/openstack_simple_vm_topology.png ) - -This is also a good time to examine the blueprint used in the example. -The blueprint can be examined in the {{< param cfy_console_name >}}, however in this case -we will go to the {{< param product_name >}} examples repository in Github and examine it there: [{{< param blueprint_name >}}]({{< param basic_blueprint_master >}}/{{< param blueprint_name >}}) +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of verification steps, including how to obtain outputs and capabilities using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#validate" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#validate-1" >}}) +![Get Deployment outputs]( /images/trial_getting_started/aws_basic/Screenshot263.png ) ### Teardown -To remove the deployment and delete all resources from {{< param cloud >}} simply run the uninstall command: -```bash -cfy uninstall {{< param deployment_name >}} -``` +Once you are done testing the environment, you can teardown the deployed resources. Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of teardown steps using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown-1" >}}) diff --git a/content/trial_getting_started/examples/first_service/_index.md b/content/trial_getting_started/examples/first_service/_index.md index b23ac4d39..617c2a1db 100644 --- a/content/trial_getting_started/examples/first_service/_index.md +++ b/content/trial_getting_started/examples/first_service/_index.md @@ -1,8 +1,12 @@ +++ -title = "Level 3: Setup Your First Service" +title = "Level 3: Service Provisioning" description = "Learn how to setup a simple service topology consisting of an Apache2 web-server running on a VM and hosting a sample HTML page. These examples also explain the setup of all essential peripherals (Security group, network interfaces, etc.) in AWS, Azure, GCP and OpenStack. Some of the examples demonstrate usage of Ansible Playbook with cloudify-ansible-plugin." weight = 30 alwaysopen = false +++ +The service provisioning examples build on the [Infrastructure Provisioning Basics]({{< relref "/trial_getting_started/examples/basic/" >}}) section to add a simple web application to the deployed infrastructure. Each example is designed to match a different IaaS (infrastructure as a service) with examples for AWS, Azure, GCP and OpenStack. + +Running these examples will help you build your knowledge of blueprints to see how Cloudify can model both the infrastructure and application environment. + {{%children style="h2" description="true"%}} diff --git a/content/trial_getting_started/examples/first_service/aws_hello_world_example.md b/content/trial_getting_started/examples/first_service/aws_hello_world_example.md index 2445f3a77..89413648f 100644 --- a/content/trial_getting_started/examples/first_service/aws_hello_world_example.md +++ b/content/trial_getting_started/examples/first_service/aws_hello_world_example.md @@ -6,248 +6,92 @@ deployment_name = "hello-world-example.aws" cloud_auth_ui_link = "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey" cloud_auth_cli_link = "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey_CLIAPI" -title = "AWS hello-world" -description = "AWS - Simple hello world" +title = "AWS - Service Provisioning" +description = "Deploy a simple web service on AWS" weight = 40 alwaysopen = false +++ -This example demonstrates a simple infrastructure setup in **{{< param cloud_full >}} ({{< param cloud >}})**, the deployment consists of: +This example deploys a simple website and all of the supporting infrastructure components, including: - * Instance - * Web server + simple website - * Security Group - * Network - * All of the essential peripherals in {{< param cloud >}} (IP address, NIC, etc...). +* An EC2 instance +* Security group +* Network +* Essential peripherals in AWS (IP address, NIC, etc.) -In this example we will deploy virtual infrastructure and a "hello world" application using the {{< param cloud >}} and Ansible plugins. +The infrastructure components will be deployed using the Cloudify AWS plugin, while the web application will be deployed with the Ansible plugin. + +You should already be familiar with the concepts from the [Fundamentals Example.]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) ## Prerequisites + This example expects the following prerequisites: * A {{< param cfy_manager_name >}} setup ready. This can be either a [{{< param mgr_hosted_title >}}]({{< param mgr_hosted_link >}}), a [{{< param mgr_premium_title >}}]({{< param mgr_premium_link >}}), or a [{{< param mgr_community_title >}}]({{< param mgr_community_link >}}). * Access to {{< param cloud >}} infrastructure is required to demonstrate this example. -#### {{< param cfy_cli_name >}} or {{< param cfy_console_name >}}? - -{{< param product_name >}} allows for multiple user interfaces. Some users find the {{< param cfy_console_name >}} (web based UI) more intuitive while others prefer the {{< param cfy_cli_name >}} (Command Line Interface). This tutorial and all following ones will describe both methods. - -* [Using the {{< param cfy_console_name >}}](#cloudify-management-console) -* [Using the {{< param cfy_cli_name >}}](#cloudify-cli) - -{{% note %}} -Community version - Some of the options described in the guide are not available in the community version management console (web UI). An example would be setting up secrets. You can still perform all of the functionality using the {{< param cfy_cli_name >}}. -{{% /note %}} - -## {{< param cfy_console_name >}} - -This section explains how to run the above described steps using the {{< param cfy_console_name >}}. -The {{< param cfy_console_name >}} and {{< param cfy_cli_name >}} can be used interchangeably for all {{< param product_name >}} activities. - +## Deployment Steps ### Create Secrets -To connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -Secrets are kept encrypted in a secure way and used in run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). +Credentials are required to connect to {{< param cloud >}}. {{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_ui_link>}}). +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create secrets using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets-1" >}}) -To store the access keys as secrets in the {{< param cfy_manager_name >}}, login to the {{< param cfy_console_name >}} and select the **System Resources** page. Scroll to the **Secret Store Management** widget and use the **Create** button to add the following new secrets: +Create the following secrets in the {{< param cfy_manager_name >}}: -* aws_access_key_id -* aws_secret_access_key +| Secret Name | Description | +| ---------------------------------------------------------------- | ------------------------------------ | +| `aws_access_key_id` | The access key ID used to access AWS | +| `aws_secret_access_key` The secret access key used to access AWS | | -![Required plugins for this example]( /images/trial_getting_started/aws_basic/Screenshot249.png ) +{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_ui_link>}}). ### Upload Plugins -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers and automation tools. -I.e., connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. +Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. This example also requires the Utilities plugin and the Ansible plugin to deploy the website. -To upload the required plugins to your manager, select the **Cloudify Catalog** page, scroll to the **Plugins Catalog** widget and select the plugins you wish to upload. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload plugins using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins-1" >}}) -For this example, upload the following plugins: +Upload the following plugins to the {{< param cfy_manager_name >}}: * Utilities -* Ansible (`cloudify-ansible-plugin`) * {{< param cloud >}} - - - +* Ansible ### Upload Blueprint -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. -Blueprints are represented as descriptive code (yaml based files) and typically stored and managed as part of the source repository. -The blueprint is available [here]({{< param first_service_blueprint_master >}}/{{< param blueprint_name >}}). - -The flow required to setup a service consists of: - -1. Upload the blueprint describing the service to the {{< param cfy_manager_name >}}. -1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. -1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -Let's run these one by one. +The blueprint for this example handles describes all of the components in the environment's topology. Upload a new blueprint to the {{< param cfy_manager_name >}} with the values below. -To upload a blueprint to the {{< param cfy_manager_name >}}, select the **Cloudify Catalog** page, and use the **Upload blueprint** button next to the {{< param cloud >}}-Basics-Simple-Service-Setup blueprint. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload a blueprint using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) +* **Blueprint package**: `https://github.com/cloudify-community/blueprint-examples/releases/download/latest/hello-world-example.zip` +* **Blueprint name**: hello-world-example (or any name of your choosing) +* **Blueprint YAML file**: aws.yaml -### Deploy & Install +### Deploy and Install -Once the blueprint is uploaded, it will be displayed in the Blueprints widget. to deploy the blueprint click the **Create deployment** button next to the blueprint you wish to deploy. Specify a deployment name, update any inputs, and click **Deploy & Install**. Changing inputs is completely optional and the defaults are safe to use. +Once the blueprint has been uploaded, it will be displayed on the Blueprints page. Create a new deployment, adjusting any inputs as needed. -You will be directed to the **Deployment** page and will be able to track the progress of the execution. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create a deployment using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#deploy-and-install" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -The deployment you have created should be displayed in the deployments list in the **Deployments** page. +You will be directed to the **Deployment** page and will be able to track the progress of the execution: ![Track the progress of a Workflow]( /images/trial_getting_started/aws_basic/Screenshot261.png ) ### Validate -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. +This example deployed a simple web application on a virtual machine with supporting resources, such as a new network. You can validate this deployment by: -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* Examine the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, and view the installation logs. - -To access your new service, you can look at the **Deployment Outputs/Capabilities** widget on the Deployment screen to find your new **application_endpoint** output containing a URL to the service. Simply put that URL into a web browser to view the deployed service. - -![Get Deployment outputs]( /images/trial_getting_started/first_service/Screenshot327.png ) - -### Teardown - -To remove the deployment and destroy the orchestrated service, run the **Uninstall** workflow by clicking the **Execute workflow** menu next to the deployment, expanding **Default workflows**, and selecting **Uninstall**. - - -____ - - - - -## {{< param cfy_cli_name >}} - -Create a CLI profile instructing your CLI how to connect with the {{< param cfy_manager_name >}} by running the following CLI commands - -```bash -cfy init -cfy profiles use -u admin -p --ssl -cfy profiles set --manager-tenant default_tenant -``` - -### Create Secrets +* Navigating to the {{< param cloud >}} console and verifying that the new instance and other resources were created. +* Examining the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, installation logs. -To enable {{< param product_name >}} to connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information as a {{< param product_name >}} secret. -Secrets are encrypted in a secure way and used during run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). +To access the new service, you can locate the `application_endpoint` containing a URL to the service on the **Deployment Outputs/Capabilities** section on the Deployment Info page. Simply navigate to the URL in a web browser to view the deployed service. -{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_cli_link>}}). - -To store the access keys as secrets via the {{< param cfy_cli_name >}}, run the following (replacing with the actual string retrieved from {{< param cloud >}}): - -```bash -cfy secrets create aws_access_key_id --secret-string -cfy secrets create aws_secret_access_key --secret-string -``` - -### Upload Plugins - -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers, and automation tools. -Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. You may upload specific plugins or, for simplicity, upload the plugin bundle containing all of the basic, pre-packaged, plugins. - -To upload the default plugins bundle (this may take a few minutes depending on your internet speed): -```bash -cfy plugins bundle-upload -``` - -**Tip**: Read more about [plugins]({{< relref "/working_with/official_plugins/_index.md" >}}) and [writing your own plugins]({{< relref "/developer/writing_plugins/_index.md" >}}). - -### Upload Blueprint and Deploy - -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. Blueprints are represented as descriptive code (YAML-based files) and are typically stored and managed as part of the source code repository. - -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param first_service_blueprint_master >}}/{{< param blueprint_name >}}). - -Uploading a blueprint to {{< param product_name >}} can be done by direct upload or by providing the link in the source code repository. -The flow to do that is: - - 1. Upload the blueprint. - 1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. - 1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -In order to perform this flow as a single unit, we will use the **install** command. - -```bash -cfy install {{< param first_service_blueprint_zip >}} -n {{< param blueprint_name >}} -``` - -### Validate - -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* You can easily get a list of all deployed nodes by running: - -``` -$ cfy nodes list -d {{< param deployment_name >}} - -Listing nodes for deployment {{< param deployment_name >}}... - -Nodes: -+--------------------------------------+-------------------------+-------------------------+---------+-------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| id | deployment_id | blueprint_id | host_id | type | visibility | tenant_name | number_of_instances | planned_number_of_instances | created_by | -+--------------------------------------+-------------------------+-------------------------+---------+-------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| ami | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.Image | tenant | default_tenant | 1 | 1 | admin | -| subnet | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.Subnet | tenant | default_tenant | 1 | 1 | admin | -| hello-world | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.ansible.Playbook | tenant | default_tenant | 1 | 1 | admin | -| routetable | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.RouteTable | tenant | default_tenant | 1 | 1 | admin | -| internet_gateway | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.InternetGateway | tenant | default_tenant | 1 | 1 | admin | -| ip | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.ElasticIP | tenant | default_tenant | 1 | 1 | admin | -| cloud_init | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.CloudInit.CloudConfig | tenant | default_tenant | 1 | 1 | admin | -| vm | {{< param deployment_name >}} | {{< param deployment_name >}} | vm | cloudify.nodes.aws.ec2.Instances | tenant | default_tenant | 1 | 1 | admin | -| security_group_rules | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.SecurityGroupRuleIngress | tenant | default_tenant | 1 | 1 | admin | -| vpc | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.Vpc | tenant | default_tenant | 1 | 1 | admin | -| nic | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.Interface | tenant | default_tenant | 1 | 1 | admin | -| security_group | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.SecurityGroup | tenant | default_tenant | 1 | 1 | admin | -| route_public_subnet_internet_gateway | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.aws.ec2.Route | tenant | default_tenant | 1 | 1 | admin | -+--------------------------------------+-------------------------+-------------------------+---------+-------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ - -Showing 13 of 13 nodes -``` -**Tip**: To check out some more commands to use with the {{< param cfy_console_name >}}, run `cfy --help` - -To get the Outputs of our deployment run: -```bash -cfy deployment outputs {{< param deployment_name >}} -``` - -The returned output would look like: - -``` bash -Retrieving outputs for deployment {{< param deployment_name >}}... - - "application_endpoint": - Description: The external endpoint of the application. - Value: http://40.79.42.39:80 - -``` - -Copy and paste the URL **Value** into your browser, you should see a simple web page. - -An even easier way to review your deployment is through the [{{< param cfy_console_name >}}](#validate). -Login to the console and browse to the **Deployments** page. -Select the deployment (`{{< param deployment_name >}}`) and explore the topology, inputs, outputs, nodes, and logs. - -![Successful Cloudify Deployment]( /images/trial_getting_started/first_service/Screenshot324.png ) - -This is also a good time to examine the blueprint used in the example. -The blueprint can be examined in the {{< param cfy_console_name >}}, however in this case -we will go to the {{< param product_name >}} examples repository in Github and examine it there: [{{< param first_service_blueprint_name >}}]({{< param first_service_blueprint_master >}}) +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of verification steps, including how to obtain outputs and capabilities using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#validate" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#validate-1" >}}) +![Get Deployment outputs]( /images/trial_getting_started/first_service/Screenshot327.png ) ### Teardown -To remove the deployment and delete all resources from {{< param cloud >}} simply run the uninstall command: -```bash -cfy uninstall {{< param deployment_name >}} -``` +Once you are done testing the environment, you can teardown the deployed resources. Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of teardown steps using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown-1" >}}) diff --git a/content/trial_getting_started/examples/first_service/azure_hello_world_example.md b/content/trial_getting_started/examples/first_service/azure_hello_world_example.md index 1726382dd..7d18fc1fb 100644 --- a/content/trial_getting_started/examples/first_service/azure_hello_world_example.md +++ b/content/trial_getting_started/examples/first_service/azure_hello_world_example.md @@ -4,266 +4,96 @@ cloud = "Azure" blueprint_name = "azure.yaml" deployment_name = "hello-world-example.azure" -title = "Azure hello-world" -description = "Azure - Simple hello world" +title = "Azure - Service Provisioning" +description = "Deploy a simple web service on Azure" weight = 40 alwaysopen = false +++ -This example demonstrates a simple infrastructure setup in **{{< param cloud_full >}}**, the deployment consists of: +This example deploys a simple website and all of the supporting infrastructure components, including: * Instance * Web server + simple website * Security Group * Network - * All of the essential peripherals in {{< param cloud >}} (IP address, NIC, etc...). + * All of the essential peripherals in {{< param cloud >}} (IP address, NIC, etc.). -In this example we will deploy virtual infrastructure and a "hello world" application using the {{< param cloud >}} and Ansible plugins. +The infrastructure components will be deployed using the Cloudify Azure plugin, while the web application will be deployed with the Ansible plugin. + +You should already be familiar with the concepts from the [Fundamentals Example.]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) ## Prerequisites + This example expects the following prerequisites: * A {{< param cfy_manager_name >}} setup ready. This can be either a [{{< param mgr_hosted_title >}}]({{< param mgr_hosted_link >}}), a [{{< param mgr_premium_title >}}]({{< param mgr_premium_link >}}), or a [{{< param mgr_community_title >}}]({{< param mgr_community_link >}}). * Access to {{< param cloud >}} infrastructure is required to demonstrate this example. -#### {{< param cfy_cli_name >}} or {{< param cfy_console_name >}}? - -{{< param product_name >}} allows for multiple user interfaces. Some users find the {{< param cfy_console_name >}} (web based UI) more intuitive while others prefer the {{< param cfy_cli_name >}} (Command Line Interface). This tutorial and all following ones will describe both methods. - -* [Using the {{< param cfy_console_name >}}](#cloudify-management-console) -* [Using the {{< param cfy_cli_name >}}](#cloudify-cli) - -{{% note %}} -Community version - Some of the options described in the guide are not available in the community version management console (web UI). An example would be setting up secrets. You can still perform all of the functionality using the {{< param cfy_cli_name >}}. -{{% /note %}} - -## {{< param cfy_console_name >}} - -This section explains how to run the above described steps using the {{< param cfy_console_name >}}. -The {{< param cfy_console_name >}} and {{< param cfy_cli_name >}} can be used interchangeably for all {{< param product_name >}} activities. - - +## Deployment Steps ### Create Secrets -To connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -Secrets are kept encrypted in a secure way and used in run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). +Credentials are required to connect to {{< param cloud >}}. {{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -{{< param cloud >}} credentials can be created by following the guide [here]({{< relref "working_with/official_plugins/Infrastructure/azure.md" >}}). +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create secrets using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets-1" >}}) -To store the access keys as secrets in the {{< param cfy_manager_name >}}, login to the {{< param cfy_console_name >}} and select the **System Resources** page. Scroll to the **Secret Store Management** widget and use the **Create** button to add the following new secrets: +Create the following secrets in the {{< param cfy_manager_name >}}: -* azure_subscription_id -* azure_tenant_id -* azure_client_id -* azure_client_secret - -**Notes** - -* `azure_subscription_id` - the account subscription ID. -* `azure_tenant_id` - the Service Principal `tenant`. -* `azure_client_id` - the Service Principal `appId`. -* `azure_client_secret` - the Service Principal `password`. +| Secret Name | Description | +| ----------------------- | -------------------------------- | +| `azure_subscription_id` | The account subscription ID | +| `azure_tenant_id` | The service principal tenant | +| `azure_client_id` | The service principal `appId` | +| `azure_client_secret` | The service principal `password` | ![Required plugins for this example](/images/trial_getting_started/azure_basic/create_secrets.png ) + ### Upload Plugins -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers and automation tools. -I.e., connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. +Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. This example also requires the Utilities plugin and the Ansible plugin to deploy the website. -To upload the required plugins to your manager, select the **Cloudify Catalog** page, scroll to the **Plugins Catalog** widget and select the plugins you wish to upload. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload plugins using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins-1" >}}) -For this example, upload the following plugins: +Upload the following plugins to the {{< param cfy_manager_name >}}: * Utilities -* Ansible (`cloudify-ansible-plugin`) * {{< param cloud >}} - - - +* Ansible ### Upload Blueprint -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. -Blueprints are represented as descriptive code (yaml based files) and typically stored and managed as part of the source repository. -The blueprint is available [here]({{< param first_service_blueprint_master >}}/{{< param blueprint_name >}}). - -The flow required to setup a service consists of: - -1. Upload the blueprint describing the service to the {{< param cfy_manager_name >}}. -1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. -1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. +The blueprint for this example handles describes all of the components in the environment's topology. Upload a new blueprint to the {{< param cfy_manager_name >}} with the values below. -Let's run these one by one. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload a blueprint using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -To upload a blueprint to the {{< param cfy_manager_name >}}, select the **Cloudify Catalog** page, and use the **Upload blueprint** button next to the {{< param cloud >}}-Basics-Simple-Service-Setup blueprint. +* **Blueprint package**: `https://github.com/cloudify-community/blueprint-examples/releases/download/latest/hello-world-example.zip` +* **Blueprint name**: hello-world-example (or any name of your choosing) +* **Blueprint YAML file**: azure.yaml +### Deploy and Install -### Deploy & Install +Once the blueprint has been uploaded, it will be displayed on the Blueprints page. Create a new deployment, adjusting any inputs as needed. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create a deployment using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#deploy-and-install" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -Once the blueprint is uploaded, it will be displayed in the Blueprints widget. to deploy the blueprint click the **Create deployment** button next to the blueprint you wish to deploy. Specify a deployment name, update any inputs, and click **Deploy & Install**. Changing inputs is completely optional and the defaults are safe to use. - -You will be directed to the **Deployment** page and will be able to track the progress of the execution. - -The deployment you have created should be displayed in the deployments list in the **Deployments** page. +You will be directed to the **Deployment** page and will be able to track the progress of the execution: ![Track the progress of a Workflow]( /images/trial_getting_started/aws_basic/Screenshot261.png ) ### Validate -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* Examine the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, and view the installation logs. - -To access your new service, you can look at the **Deployment Outputs/Capabilities** widget on the Deployment screen to find your new **application_endpoint** output containing a URL to the service. Simply put that URL into a web browser to view the deployed service. - -![Get Deployment outputs]( /images/trial_getting_started/first_service/Screenshot327.png ) - -### Teardown - -To remove the deployment and destroy the orchestrated service, run the **Uninstall** workflow by clicking the **Execute workflow** menu next to the deployment, expanding **Default workflows**, and selecting **Uninstall**. - - -____ - - - - -## {{< param cfy_cli_name >}} - -Create a CLI profile instructing your CLI how to connect with the {{< param cfy_manager_name >}} by running the following CLI commands - -```bash -cfy init -cfy profiles use -u admin -p --ssl -cfy profiles set --manager-tenant default_tenant -``` - -### Create Secrets - -To enable {{< param product_name >}} to connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information as a {{< param product_name >}} secret. -Secrets are encrypted in a secure way and used during run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). - -{{< param cloud >}} credentials can be created by following the guide [here]({{< relref "working_with/official_plugins/Infrastructure/azure.md" >}}). - -To store the access keys as secrets via the {{< param cfy_cli_name >}}, run the following (replacing with the actual string retrieved from {{< param cloud >}}): - -```bash -cfy secrets create azure_client_id --secret-string -cfy secrets create azure_tenant_id --secret-string -cfy secrets create azure_subscription_id --secret-string -cfy secrets create azure_client_secret --secret-string -``` - -**Notes** - -* `azure_subscription_id` - the account subscription ID. -* `azure_tenant_id` - the Service Principal `tenant`. -* `azure_client_id` - the Service Principal `appId`. -* `azure_client_secret` - the Service Principal `password`. - -### Upload Plugins - -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers, and automation tools. -Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. You may upload specific plugins or, for simplicity, upload the plugin bundle containing all of the basic, pre-packaged, plugins. - -To upload the default plugins bundle (this may take a few minutes depending on your internet speed): -```bash -cfy plugins bundle-upload -``` - -**Tip**: Read more about [plugins]({{< relref "/working_with/official_plugins/_index.md" >}}) and [writing your own plugins]({{< relref "/developer/writing_plugins/_index.md" >}}). - -### Upload Blueprint and Deploy - -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. Blueprints are represented as descriptive code (YAML-based files) and are typically stored and managed as part of the source code repository. - -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param first_service_blueprint_master >}}/{{< param blueprint_name >}}). - -Uploading a blueprint to {{< param product_name >}} can be done by direct upload or by providing the link in the source code repository. -The flow to do that is: - - 1. Upload the blueprint. - 1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. - 1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -In order to perform this flow as a single unit, we will use the **install** command. - -```bash -cfy install {{< param first_service_blueprint_zip >}} -n {{< param blueprint_name >}} -``` - -### Validate - -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* You can easily get a list of all deployed nodes by running: - -``` -$ cfy nodes list -d {{< param deployment_name >}} - -Listing nodes for deployment {{< param deployment_name >}}... +This example deployed a simple web application on a virtual machine with supporting resources, such as a new network. You can validate this deployment by: -Nodes: -+------------------------+---------------------------+---------------------------+---------+---------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| id | deployment_id | blueprint_id | host_id | type | visibility | tenant_name | number_of_instances | planned_number_of_instances | created_by | -+------------------------+---------------------------+---------------------------+---------+---------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| subnet | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.Subnet | tenant | default_tenant | 1 | 1 | admin | -| availability_set | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.compute.AvailabilitySet | tenant | default_tenant | 1 | 1 | admin | -| network | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.VirtualNetwork | tenant | default_tenant | 1 | 1 | admin | -| resource_group | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.ResourceGroup | tenant | default_tenant | 1 | 1 | admin | -| nic | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.NetworkInterfaceCard | tenant | default_tenant | 1 | 1 | admin | -| vm | {{< param deployment_name >}} | {{< param deployment_name >}} | vm | cloudify.azure.nodes.compute.VirtualMachine | tenant | default_tenant | 1 | 1 | admin | -| network_security_group | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.NetworkSecurityGroup | tenant | default_tenant | 1 | 1 | admin | -| ip | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.PublicIPAddress | tenant | default_tenant | 1 | 1 | admin | -| storage_account | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.storage.StorageAccount | tenant | default_tenant | 1 | 1 | admin | -| hello-world | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.nodes.ansible.Playbook | tenant | default_tenant | 1 | 1 | admin | -| ip_config | {{< param deployment_name >}} | {{< param deployment_name >}} | | cloudify.azure.nodes.network.IPConfiguration | tenant | default_tenant | 1 | 1 | admin | -+------------------------+---------------------------+---------------------------+---------+---------------------------------------------------+------------+----------------+---------------------+-----------------------------+------------+ +* Navigating to the {{< param cloud >}} console and verifying that the new instance and other resources were created. +* Examining the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, installation logs. -Showing 11 of 11 nodes -``` -**Tip**: To check out some more commands to use with the {{< param cfy_console_name >}}, run `cfy --help` +To access the new service, you can locate the `application_endpoint` containing a URL to the service on the **Deployment Outputs/Capabilities** section on the Deployment Info page. Simply navigate to the URL in a web browser to view the deployed service. -To get the Outputs of our deployment run: -```bash -cfy deployment outputs {{< param deployment_name >}} -``` - -The returned output would look like: - -``` bash -Retrieving outputs for deployment {{< param deployment_name >}}... - - "application_endpoint": - Description: The external endpoint of the application. - Value: http://40.79.42.39:80 - -``` - -Copy and paste the URL **Value** into your browser, you should see a simple web page. - -An even easier way to review your deployment is through the [{{< param cfy_console_name >}}](#validate). -Login to the console and browse to the **Deployments** page. -Select the deployment (`{{< param deployment_name >}}`) and explore the topology, inputs, outputs, nodes, and logs. - -![Successful Cloudify Deployment]( /images/trial_getting_started/azure_hello_world_deployment_topology.png ) - -This is also a good time to examine the blueprint used in the example. -The blueprint can be examined in the {{< param cfy_console_name >}}, however in this case -we will go to the {{< param product_name >}} examples repository in Github and examine it there: [{{< param first_service_blueprint_name >}}]({{< param first_service_blueprint_master >}}) +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of verification steps, including how to obtain outputs and capabilities using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#validate" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#validate-1" >}}) +![Get Deployment outputs]( /images/trial_getting_started/first_service/Screenshot327.png ) ### Teardown -To remove the deployment and delete all resources from {{< param cloud >}} simply run the uninstall command: -```bash -cfy uninstall {{< param deployment_name >}} -``` +Once you are done testing the environment, you can teardown the deployed resources. Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of teardown steps using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown-1" >}}) diff --git a/content/trial_getting_started/examples/first_service/gcp_hello_world_example.md b/content/trial_getting_started/examples/first_service/gcp_hello_world_example.md index 058ffab3a..73336e7b8 100644 --- a/content/trial_getting_started/examples/first_service/gcp_hello_world_example.md +++ b/content/trial_getting_started/examples/first_service/gcp_hello_world_example.md @@ -6,242 +6,94 @@ deployment_name = "hello-world-example.gcp" cloud_auth_ui_link = "https://cloud.google.com/iam/docs/service-accounts" cloud_auth_cli_link = "https://cloud.google.com/iam/docs/service-accounts" -title = "GCP hello-world" -description = "GCP - Simple hello world" +title = "GCP - Service Provisioning" +description = "Deploy a simple web service on GCP" weight = 40 alwaysopen = false +++ -This example demonstrates a simple infrastructure setup in **{{< param cloud_full >}} ({{< param cloud >}})**, the deployment consists of: +This example deploys a simple website and all of the supporting infrastructure components, including: * Instance * Web server + simple website * Security Group * Network - * All of the essential peripherals in {{< param cloud >}} (IP address, NIC, etc...). + * All of the essential peripherals in {{< param cloud >}} (IP address, NIC, etc.). -In this example we will deploy virtual infrastructure and a "hello world" application using the {{< param cloud >}} and Ansible plugins. +The infrastructure components will be deployed using the Cloudify GCP plugin, while the web application will be deployed with the Ansible plugin. + +You should already be familiar with the concepts from the [Fundamentals Example.]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) ## Prerequisites + This example expects the following prerequisites: * A {{< param cfy_manager_name >}} setup ready. This can be either a [{{< param mgr_hosted_title >}}]({{< param mgr_hosted_link >}}), a [{{< param mgr_premium_title >}}]({{< param mgr_premium_link >}}), or a [{{< param mgr_community_title >}}]({{< param mgr_community_link >}}). * Access to {{< param cloud >}} infrastructure is required to demonstrate this example. -#### {{< param cfy_cli_name >}} or {{< param cfy_console_name >}} - -{{< param product_name >}} allows for multiple user interfaces. Some users find the {{< param cfy_console_name >}} (web based UI) more intuitive while others prefer the {{< param cfy_cli_name >}} (Command Line Interface). This tutorial and all following ones will describe both methods. - -* [Using the {{< param cfy_console_name >}}](#cloudify-management-console) -* [Using the {{< param cfy_cli_name >}}](#cloudify-cli) - -{{% note %}} -Community version - Some of the options described in the guide are not available in the community version management console (web UI). An example would be setting up secrets. You can still perform all of the functionality using the {{< param cfy_cli_name >}}. -{{% /note %}} +## Deployment Steps -## {{< param cfy_console_name >}} - -This section explains how to run the above described steps using the {{< param cfy_console_name >}}. -The {{< param cfy_console_name >}} and {{< param cfy_cli_name >}} can be used interchangeably for all {{< param product_name >}} activities. +### Create Secrets +Credentials are required to connect to {{< param cloud >}}. {{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create secrets using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets-1" >}}) -### Create Secrets +Create the following secrets in the {{< param cfy_manager_name >}}: -To connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -Secrets are kept encrypted in a secure way and used in run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). +| Secret Name | Description | +| ----------------- | -------------------------------------------- | +| `gcp_credentials` | JSON containing credential for accessing GCP | {{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_ui_link>}}). -To store the access keys as secrets in the {{< param cfy_manager_name >}}, login to the {{< param cfy_console_name >}} and select the **System Resources** page. Scroll to the **Secret Store Management** widget and use the **Create** button to add the following new secrets: - -* gcp_credentials - -`gcp_credentials`: A GCP service account key in JSON format. **Hint: We create this secret from the contents of a file.** +![Required secrets for this example]( /images/trial_getting_started/gcp_basic/create_secrets.png ) ### Upload Plugins -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers and automation tools. -I.e., connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. +Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. This example also requires the Utilities plugin and the Ansible plugin to deploy the website. -To upload the required plugins to your manager, select the **Cloudify Catalog** page, scroll to the **Plugins Catalog** widget and select the plugins you wish to upload. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload plugins using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins-1" >}}) -For this example, upload the following plugins: +Upload the following plugins to the {{< param cfy_manager_name >}}: * Utilities -* Ansible (`cloudify-ansible-plugin`) * {{< param cloud >}} - - - +* Ansible ### Upload Blueprint -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. -Blueprints are represented as descriptive code (yaml based files) and typically stored and managed as part of the source repository. -The blueprint is available [here]({{< param first_service_blueprint_master >}}/{{< param blueprint_name >}}). +The blueprint for this example handles describes all of the components in the environment's topology. Upload a new blueprint to the {{< param cfy_manager_name >}} with the values below. -The flow required to setup a service consists of: +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload a blueprint using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -1. Upload the blueprint describing the service to the {{< param cfy_manager_name >}}. -1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. -1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. +* **Blueprint package**: `https://github.com/cloudify-community/blueprint-examples/releases/download/latest/hello-world-example.zip` +* **Blueprint name**: hello-world-example (or any name of your choosing) +* **Blueprint YAML file**: gcp.yaml -Let's run these one by one. +### Deploy and Install -To upload a blueprint to the {{< param cfy_manager_name >}}, select the **Cloudify Catalog** page, and use the **Upload blueprint** button next to the {{< param cloud >}}-Basics-Simple-Service-Setup blueprint. +Once the blueprint has been uploaded, it will be displayed on the Blueprints page. Create a new deployment, adjusting any inputs as needed. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create a deployment using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#deploy-and-install" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -### Deploy & Install - -Once the blueprint is uploaded, it will be displayed in the Blueprints widget. to deploy the blueprint click the **Create deployment** button next to the blueprint you wish to deploy. Specify a deployment name, update any inputs, and click **Deploy & Install** - -You will be directed to the **Deployment** page and will be able to track the progress of the execution. - -The deployment you have created should be displayed in the deployments list in the **Deployments** page. +You will be directed to the **Deployment** page and will be able to track the progress of the execution: ![Track the progress of a Workflow]( /images/trial_getting_started/first_service/Screenshot325.png ) ### Validate -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* Examine the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, and view the installation logs. - -To access your new service, you can look at the **Deployment Outputs/Capabilities** widget on the Deployment screen to find your new **application_endpoint** output containing a URL to the service. Simply put that URL into a web browser to view the deployed service. - -![Get Deployment outputs]( /images/trial_getting_started/first_service/Screenshot327.png ) - -### Teardown - -To remove the deployment and destroy the orchestrated service, run the **Uninstall** workflow by clicking the **Execute workflow** menu next to the deployment, expanding **Default workflows**, and selecting **Uninstall**. - - -____ - - - - -## {{< param cfy_cli_name >}} - -Create a CLI profile instructing your CLI how to connect with the {{< param cfy_manager_name >}} by running the following CLI commands - -```bash -cfy init -cfy profiles use -u admin -p --ssl -cfy profiles set --manager-tenant default_tenant -``` - -### Create Secrets +This example deployed a simple web application on a virtual machine with supporting resources, such as a new network. You can validate this deployment by: -To enable {{< param product_name >}} to connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information as a {{< param product_name >}} secret. -Secrets are encrypted in a secure way and used during run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). +* Navigating to the {{< param cloud >}} console and verifying that the new instance and other resources were created. +* Examining the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, installation logs. -{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_cli_link>}}). +To access the new service, you can locate the `application_endpoint` containing a URL to the service on the **Deployment Outputs/Capabilities** section on the Deployment Info page. Simply navigate to the URL in a web browser to view the deployed service. -To store the access keys as secrets via the {{< param cfy_cli_name >}}, run the following (replacing with the actual string retrieved from {{< param cloud >}}): - -```bash -cfy secrets create gcp_credentials --secret-file ./path/to/service_account_json_file - -``` - -`gcp_credentials`: A GCP service account key in JSON format. **Hint: We create this secret from a file.** - -### Upload Plugins - -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers, and automation tools. -Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. You may upload specific plugins or, for simplicity, upload the plugin bundle containing all of the basic, pre-packaged, plugins. - -To upload the default plugins bundle (this may take a few minutes depending on your internet speed): -```bash -cfy plugins bundle-upload -``` - -**Tip**: Read more about [plugins]({{< relref "/working_with/official_plugins/_index.md" >}}) and [writing your own plugins]({{< relref "/developer/writing_plugins/_index.md" >}}). - -### Upload Blueprint and Deploy - -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. Blueprints are represented as descriptive code (YAML-based files) and are typically stored and managed as part of the source code repository. - -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param first_service_blueprint_master >}}/{{< param blueprint_name >}}). - -Uploading a blueprint to {{< param product_name >}} can be done by direct upload or by providing the link in the source code repository. -The flow to do that is: - - 1. Upload the blueprint. - 1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. - 1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -In order to perform this flow as a single unit, we will use the **install** command. - -```bash -cfy install {{< param first_service_blueprint_zip >}} -n {{< param blueprint_name >}} -``` - -### Validate - -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* You can easily get a list of all deployed nodes by running: - -``` -$ cfy nodes list -d {{< param deployment_name >}} - -Listing nodes for deployment {{< param deployment_name >}}... - -Nodes: -+-------------+-------------------------+-------------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| id | deployment_id | blueprint_id | host_id | type | visibility | tenant_name | number_of_instances | planned_number_of_instances | created_by | -+-------------+-------------------------+-------------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| firewall | hello-world-example.gcp | hello-world-example.gcp | | cloudify.gcp.nodes.FirewallRule | tenant | default_tenant | 1 | 1 | admin | -| subnet | hello-world-example.gcp | hello-world-example.gcp | | cloudify.gcp.nodes.SubNetwork | tenant | default_tenant | 1 | 1 | admin | -| hello-world | hello-world-example.gcp | hello-world-example.gcp | | cloudify.nodes.ansible.Playbook | tenant | default_tenant | 1 | 1 | admin | -| network | hello-world-example.gcp | hello-world-example.gcp | | cloudify.gcp.nodes.Network | tenant | default_tenant | 1 | 1 | admin | -| vm | hello-world-example.gcp | hello-world-example.gcp | vm | cloudify.gcp.nodes.Instance | tenant | default_tenant | 1 | 1 | admin | -+-------------+-------------------------+-------------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ - -Showing 5 of 5 nodes -``` -**Tip**: To check out some more commands to use with the {{< param cfy_console_name >}}, run `cfy --help` - -To get the Outputs of our deployment run: -```bash -cfy deployment outputs {{< param deployment_name >}} -``` - -The returned output would look like: - -``` bash -Retrieving outputs for deployment {{< param deployment_name >}}... - - "application_endpoint": - Description: The external endpoint of the application. - Value: http://40.79.42.39:80 - -``` - -Copy and paste the URL **Value** into your browser, you should see a simple web page. - -An even easier way to review your deployment is through the [{{< param cfy_console_name >}}](#validate). -Login to the console and browse to the **Deployments** page. -Select the deployment (`{{< param deployment_name >}}`) and explore the topology, inputs, outputs, nodes, and logs. - -![Successful Deployment]( /images/trial_getting_started/gcp_hello_world_deployment_topology.png ) - -This is also a good time to examine the blueprint used in the example. -The blueprint can be examined in the {{< param cfy_console_name >}}, however in this case -we will go to the {{< param product_name >}} examples repository in Github and examine it there: [{{< param first_service_blueprint_name >}}]({{< param first_service_blueprint_master >}}) +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of verification steps, including how to obtain outputs and capabilities using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#validate" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#validate-1" >}}) +![Get Deployment outputs]( /images/trial_getting_started/first_service/Screenshot327.png ) ### Teardown -To remove the deployment and delete all resources from {{< param cloud >}} simply run the uninstall command: -```bash -cfy uninstall {{< param deployment_name >}} -``` +Once you are done testing the environment, you can teardown the deployed resources. Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of teardown steps using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown-1" >}}) diff --git a/content/trial_getting_started/examples/first_service/openstack_hello_world_example.md b/content/trial_getting_started/examples/first_service/openstack_hello_world_example.md index 59b849d85..1d57dff65 100644 --- a/content/trial_getting_started/examples/first_service/openstack_hello_world_example.md +++ b/content/trial_getting_started/examples/first_service/openstack_hello_world_example.md @@ -6,8 +6,8 @@ deployment_name = "hello-world-example.openstack" cloud_auth_ui_link = "https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/8/html/command-line_interface_reference_guide/ch_cli#cli_openrc" cloud_auth_cli_link = "https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/8/html/command-line_interface_reference_guide/ch_cli#cli_openrc" -title = "OpenStack hello-world" -description = "OpenStack - Simple hello world" +title = "OpenStack Service Provisioning" +description = "Deploy a simple web service on OpenStack" weight = 40 alwaysopen = false +++ diff --git a/content/trial_getting_started/examples/first_service/terraform_hello_world_example.md b/content/trial_getting_started/examples/first_service/terraform_hello_world_example.md index 168fd74b3..a2b33ad50 100644 --- a/content/trial_getting_started/examples/first_service/terraform_hello_world_example.md +++ b/content/trial_getting_started/examples/first_service/terraform_hello_world_example.md @@ -6,240 +6,93 @@ deployment_name = "hello-world-example.aws-terraform" cloud_auth_ui_link = "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey" cloud_auth_cli_link = "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey_CLIAPI" -title = "Terraform hello-world" -description = "Terraform - Simple hello world" +title = "Terraform - Service Provisioning" +description = "Deploy a simple web service on AWS using Terraform" weight = 40 alwaysopen = false +++ -This example demonstrates a simple infrastructure setup in **{{< param cloud_full >}} ({{< param cloud >}})** using Terraform, the deployment consists of: +This example deploys a simple website and all of the supporting infrastructure components, including: - * Instance - * Web server + simple website - * Security Group - * Network - * All of the essential peripherals in {{< param cloud >}} (IP address, NIC, etc...). +* An EC2 instance +* Security group +* Network +* Essential peripherals in AWS (IP address, NIC, etc.) -In this example we will deploy virtual infrastructure and a "hello world" application using the {{< param cloud >}} and Ansible plugins. +The infrastructure components will be deployed using the Cloudify Terraform plugin, while the web application will be deployed with the Ansible plugin. + +You should already be familiar with the concepts from the [Fundamentals Example.]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) ## Prerequisites + This example expects the following prerequisites: * A {{< param cfy_manager_name >}} setup ready. This can be either a [{{< param mgr_hosted_title >}}]({{< param mgr_hosted_link >}}), a [{{< param mgr_premium_title >}}]({{< param mgr_premium_link >}}), or a [{{< param mgr_community_title >}}]({{< param mgr_community_link >}}). * Access to {{< param cloud >}} infrastructure is required to demonstrate this example. -#### {{< param cfy_cli_name >}} or {{< param cfy_console_name >}}? - -{{< param product_name >}} allows for multiple user interfaces. Some users find the {{< param cfy_console_name >}} (web based UI) more intuitive while others prefer the {{< param cfy_cli_name >}} (Command Line Interface). This tutorial and all following ones will describe both methods. - -* [Using the {{< param cfy_console_name >}}](#cloudify-management-console) -* [Using the {{< param cfy_cli_name >}}](#cloudify-cli) - -{{% note %}} -Community version - Some of the options described in the guide are not available in the community version management console (web UI). An example would be setting up secrets. You can still perform all of the functionality using the {{< param cfy_cli_name >}}. -{{% /note %}} - -## {{< param cfy_console_name >}} - -This section explains how to run the above described steps using the {{< param cfy_console_name >}}. -The {{< param cfy_console_name >}} and {{< param cfy_cli_name >}} can be used interchangeably for all {{< param product_name >}} activities. - +## Deployment Steps ### Create Secrets -To connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -Secrets are kept encrypted in a secure way and used in run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). +Credentials are required to connect to {{< param cloud >}}. {{< param product_name >}} recommends storing such sensitive information in a {{< param product_name >}} secret. -{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_ui_link>}}). +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create secrets using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#create-secrets-1" >}}) -To store the access keys as secrets in the {{< param cfy_manager_name >}}, login to the {{< param cfy_console_name >}} and select the **System Resources** page. Scroll to the **Secret Store Management** widget and use the **Create** button to add the following new secrets: +Create the following secrets in the {{< param cfy_manager_name >}}: -* aws_access_key_id -* aws_secret_access_key +| Secret Name | Description | +| ---------------------------------------------------------------- | ------------------------------------ | +| `aws_access_key_id` | The access key ID used to access AWS | +| `aws_secret_access_key` The secret access key used to access AWS | | -![Required plugins for this example]( /images/trial_getting_started/aws_terraform/system-resources.png ) +{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_ui_link>}}). ### Upload Plugins -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers and automation tools. -I.e., connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. +Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. This example also requires the Utilities plugin and the Ansible plugin to deploy the website. -To upload the required plugins to your manager, select the **Cloudify Catalog** page, scroll to the **Plugins Catalog** widget and select the plugins you wish to upload. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload plugins using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-plugins-1" >}}) -For this example, upload the following plugins: +Upload the following plugins to the {{< param cfy_manager_name >}}: * Utilities -* Ansible (`cloudify-ansible-plugin`) -* Terraform (`cloudify-terraform-plugin`) * {{< param cloud >}} - - - +* Terraform +* Ansible ### Upload Blueprint -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. -Blueprints are represented as descriptive code (yaml based files) and typically stored and managed as part of the source repository. -The blueprint is available [here]({{< param first_service_blueprint_master >}}/{{< param blueprint_name >}}). - -The flow required to setup a service consists of: - -1. Upload the blueprint describing the service to the {{< param cfy_manager_name >}}. -1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. -1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -Let's run these one by one. +The blueprint for this example handles describes all of the components in the environment's topology. Upload a new blueprint to the {{< param cfy_manager_name >}} with the values below. -To upload a blueprint to the {{< param cfy_manager_name >}}, select the **Cloudify Catalog** page, and use the **Upload blueprint** button next to the {{< param cloud >}}-Basics-Simple-Service-Setup blueprint. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to upload a blueprint using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) +* **Blueprint package**: `https://github.com/cloudify-community/blueprint-examples/releases/download/latest/hello-world-example.zip` +* **Blueprint name**: hello-world-example (or any name of your choosing) +* **Blueprint YAML file**: aws-terraform.yaml -### Deploy & Install +### Deploy and Install -Once the blueprint is uploaded, it will be displayed in the Blueprints widget. to deploy the blueprint click the **Create deployment** button next to the blueprint you wish to deploy. Specify a deployment name, update any inputs, and click **Deploy & Install**. Changing inputs is completely optional and the defaults are safe to use. +Once the blueprint has been uploaded, it will be displayed on the Blueprints page. Create a new deployment, adjusting any inputs as needed. -You will be directed to the **Deployment** page and will be able to track the progress of the execution. +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of how to create a deployment using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#deploy-and-install" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#upload-blueprint-and-deploy" >}}) -The deployment you have created should be displayed in the deployments list in the **Deployments** page. +You will be directed to the **Deployment** page and will be able to track the progress of the execution: ![Track the progress of a Workflow]( /images/trial_getting_started/aws_terraform/execution-progress-hw.png ) ### Validate -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* Examine the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, and view the installation logs. - -To access your new service, you can look at the **Deployment Outputs/Capabilities** widget on the Deployment screen to find your new **application_endpoint** output containing a URL to the service. Simply put that URL into a web browser to view the deployed service. - -![Get Deployment outputs]( /images/trial_getting_started/aws_terraform/execution-progress-hw.png ) - -### Teardown - -To remove the deployment and destroy the orchestrated service, run the **Uninstall** workflow by clicking the **Execute workflow** menu next to the deployment, expanding **Default workflows**, and selecting **Uninstall**. - - -____ - - - - -## {{< param cfy_cli_name >}} - -Create a CLI profile instructing your CLI how to connect with the {{< param cfy_manager_name >}} by running the following CLI commands - -```bash -cfy init -cfy profiles use -u admin -p --ssl -cfy profiles set --manager-tenant default_tenant -``` - -### Create Secrets - -To enable {{< param product_name >}} to connect to {{< param cloud >}}, credentials are required. -{{< param product_name >}} recommends storing such sensitive information as a {{< param product_name >}} secret. -Secrets are encrypted in a secure way and used during run-time by the system. -Learn more about {{< param product_name >}} secrets [here]({{< relref "/working_with/manager/using-secrets.md" >}}). - -{{< param cloud >}} credentials can be created by following the guide [here]({{< param cloud_auth_cli_link>}}). - -To store the access keys as secrets via the {{< param cfy_cli_name >}}, run the following (replacing with the actual string retrieved from {{< param cloud >}}): - -```bash -cfy secrets create aws_access_key_id --secret-string -cfy secrets create aws_secret_access_key --secret-string -``` - -### Upload Plugins - -Plugins are {{< param product_name >}}'s extendable interfaces to services, cloud providers, and automation tools. -Connecting to {{< param cloud >}} requires the {{< param cloud >}} plugin. You may upload specific plugins or, for simplicity, upload the plugin bundle containing all of the basic, pre-packaged, plugins. - -To upload the default plugins bundle (this may take a few minutes depending on your internet speed): -```bash -cfy plugins bundle-upload -``` - -**Tip**: Read more about [plugins]({{< relref "/working_with/official_plugins/_index.md" >}}) and [writing your own plugins]({{< relref "/developer/writing_plugins/_index.md" >}}). - -### Upload Blueprint and Deploy - -A blueprint is a general purpose model for describing systems, services or any orchestrated object topology. Blueprints are represented as descriptive code (YAML-based files) and are typically stored and managed as part of the source code repository. - -The {{< param cloud >}} infrastructure blueprint is available [here]({{< param first_service_blueprint_master >}}/{{< param blueprint_name >}}). - -Uploading a blueprint to {{< param product_name >}} can be done by direct upload or by providing the link in the source code repository. -The flow to do that is: - - 1. Upload the blueprint. - 1. Create a deployment from the uploaded blueprint. This generates a model of the service topology in the {{< param product_name >}} database and provides the "context" needed for running workflows. - 1. Run the **install** workflow for the created deployment to apply the model to the infrastructure. - -In order to perform this flow as a single unit, we will use the **install** command. - -```bash -cfy install {{< param first_service_blueprint_zip >}} -n {{< param blueprint_name >}} -``` - -### Validate - -In this example we have setup a simple infrastructure. A virtual instance (VM) was created in the region specified in the Deployment inputs alongside a new network and various other resources. - -* Go to your {{< param cloud >}} console and see the new instance and other resources that were created. -* You can easily get a list of all deployed nodes by running: - -``` -$ cfy nodes list -d {{< param deployment_name >}} - -Listing nodes for deployment {{< param deployment_name >}}... - -Nodes: -+-------------+-----------------------------------+-----------------------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| id | deployment_id | blueprint_id | host_id | type | visibility | tenant_name | number_of_instances | planned_number_of_instances | created_by | -+-------------+-----------------------------------+-----------------------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ -| hello-world | hello-world-example.aws-terraform | hello-world-example.aws-terraform | | cloudify.nodes.ansible.Playbook | tenant | default_tenant | 1 | 1 | admin | -| agent_key | hello-world-example.aws-terraform | hello-world-example.aws-terraform | | cloudify.keys.nodes.RSAKey | tenant | default_tenant | 1 | 1 | admin | -| vm | hello-world-example.aws-terraform | hello-world-example.aws-terraform | | cloudify.nodes.terraform.Module | tenant | default_tenant | 1 | 1 | admin | -| terraform | hello-world-example.aws-terraform | hello-world-example.aws-terraform | | cloudify.nodes.terraform | tenant | default_tenant | 1 | 1 | admin | -+-------------+-----------------------------------+-----------------------------------+---------+---------------------------------+------------+----------------+---------------------+-----------------------------+------------+ - -Showing 4 of 4 nodes -``` -**Tip**: To check out some more commands to use with the {{< param cfy_console_name >}}, run `cfy --help` - -To get the Outputs of our deployment run: -```bash -cfy deployment outputs {{< param deployment_name >}} -``` - -The returned output would look like: - -``` bash -Retrieving outputs for deployment {{< param deployment_name >}}... - - "application_endpoint": - Description: The external endpoint of the application. - Value: http://40.79.42.39:80 - -``` - -Copy and paste the URL **Value** into your browser, you should see a simple web page. +This example deployed a simple web application on a virtual machine with supporting resources, such as a new network. You can validate this deployment by: -An even easier way to review your deployment is through the [{{< param cfy_console_name >}}](#validate). -Login to the console and browse to the **Deployments** page. -Select the deployment (`{{< param deployment_name >}}`) and explore the topology, inputs, outputs, nodes, and logs. +* Navigating to the {{< param cloud >}} console and verifying that the new instance and other resources were created. +* Examining the Deployment page in the {{< param cfy_console_name >}} for more information about your deployed nodes, topology, installation logs. -![Successful Cloudify Deployment]( /images/trial_getting_started/aws_terraform/aws_terraform.png ) +To access the new service, you can locate the `application_endpoint` containing a URL to the service on the **Deployment Outputs/Capabilities** section on the Deployment Info page. Simply navigate to the URL in a web browser to view the deployed service. -This is also a good time to examine the blueprint used in the example. -The blueprint can be examined in the {{< param cfy_console_name >}}, however in this case -we will go to the {{< param product_name >}} examples repository in Github and examine it there: [{{< param first_service_blueprint_name >}}]({{< param first_service_blueprint_master >}}) +Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of verification steps, including how to obtain outputs and capabilities using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#validate" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#validate-1" >}}) +![Get Deployment outputs]( /images/trial_getting_started/first_service/Screenshot327.png ) ### Teardown -To remove the deployment and delete all resources from {{< param cloud >}} simply run the uninstall command: -```bash -cfy uninstall {{< param deployment_name >}} -``` +Once you are done testing the environment, you can teardown the deployed resources. Please refer to the [Fundamentals Example]({{< relref "/trial_getting_started/examples/fundamentals/" >}}) for an explanation of teardown steps using the [UI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown" >}}) or [CLI]({{< relref "/trial_getting_started/examples/fundamentals/#teardown-1" >}}) diff --git a/content/trial_getting_started/examples/fundamentals/_index.md b/content/trial_getting_started/examples/fundamentals/_index.md index de4a14ea9..fffd73afb 100644 --- a/content/trial_getting_started/examples/fundamentals/_index.md +++ b/content/trial_getting_started/examples/fundamentals/_index.md @@ -103,7 +103,7 @@ The deployment you have created for a particular blueprint will be displayed in The example blueprint deploys a simple HTTP service with a static website. It runs locally on the {{< param cfy_manager_name >}}. Once the deployment process has finished running, you can view the outputs and capabilities for the deployment by navigating to the **Deployment Info** page: -TODO: screenshot +![Deployment Info]( /images/trial_getting_started/first_service/fundamentals/deployment_info.png ) To access the web server, simply navigate to the appropriate application endpoint: diff --git a/static/images/trial_getting_started/first_service/fundamentals/deployment_info.png b/static/images/trial_getting_started/first_service/fundamentals/deployment_info.png new file mode 100644 index 000000000..62963a974 Binary files /dev/null and b/static/images/trial_getting_started/first_service/fundamentals/deployment_info.png differ