summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Göhler <github@ghlr.de>2025-04-23 13:58:35 +0200
committerGitHub <noreply@github.com>2025-04-23 13:58:35 +0200
commit3772be8d6f9b196b200e03f9e79549ab4c111f0d (patch)
treee75726ded59da82ced5d42687e224926d58c0ff9
parent0064a3200788ecf869a1bfde3b046b4032cbad9b (diff)
parent62773f9c123c77c23d3a4f552324092fb5ae6772 (diff)
downloadvyos-documentation-3772be8d6f9b196b200e03f9e79549ab4c111f0d.tar.gz
vyos-documentation-3772be8d6f9b196b200e03f9e79549ab4c111f0d.zip
Merge pull request #1627 from aslanvyos/sagitta
Rewritten VyOS deployment for GCP
-rwxr-xr-xdocs/_static/images/cloud-azure-vm-05.pngbin73407 -> 79689 bytes
-rwxr-xr-xdocs/_static/images/cloud-azure-vnet-06.pngbin0 -> 61243 bytes
-rw-r--r--docs/_static/images/cloud-gcp-03.pngbin106217 -> 0 bytes
-rw-r--r--docs/_static/images/cloud-gcp-04.pngbin19727 -> 0 bytes
-rw-r--r--docs/_static/images/cloud-gcp-05.pngbin26049 -> 0 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-market-01.pngbin0 -> 112269 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-market-02.pngbin0 -> 36860 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-market-03.pngbin0 -> 115034 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-market-04.pngbin0 -> 84420 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-market-05.pngbin0 -> 44955 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-proj.pngbin0 -> 7727 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-svc.pngbin0 -> 73753 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vm-01.pngbin0 -> 73584 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vm-02.pngbin0 -> 35238 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vm-03.pngbin0 -> 42042 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vm-04.pngbin0 -> 30214 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vm-06.pngbin0 -> 23805 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vm-07.pngbin0 -> 36309 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vm-08.pngbin0 -> 41153 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vm-09.pngbin0 -> 54228 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vpc-01.pngbin0 -> 70269 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vpc-02.pngbin0 -> 63112 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vpc-03.pngbin0 -> 72143 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vpc-04.pngbin0 -> 67542 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vpc-05.pngbin0 -> 72999 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vpc-06.pngbin0 -> 38884 bytes
-rwxr-xr-xdocs/_static/images/cloud-gcp-vpc-07.pngbin0 -> 36298 bytes
-rw-r--r--docs/installation/cloud/gcp.rst267
28 files changed, 243 insertions, 24 deletions
diff --git a/docs/_static/images/cloud-azure-vm-05.png b/docs/_static/images/cloud-azure-vm-05.png
index 749b30c6..6f2a0c05 100755
--- a/docs/_static/images/cloud-azure-vm-05.png
+++ b/docs/_static/images/cloud-azure-vm-05.png
Binary files differ
diff --git a/docs/_static/images/cloud-azure-vnet-06.png b/docs/_static/images/cloud-azure-vnet-06.png
new file mode 100755
index 00000000..b11df2c0
--- /dev/null
+++ b/docs/_static/images/cloud-azure-vnet-06.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-03.png b/docs/_static/images/cloud-gcp-03.png
deleted file mode 100644
index 9881a5a3..00000000
--- a/docs/_static/images/cloud-gcp-03.png
+++ /dev/null
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-04.png b/docs/_static/images/cloud-gcp-04.png
deleted file mode 100644
index 61ee2d5e..00000000
--- a/docs/_static/images/cloud-gcp-04.png
+++ /dev/null
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-05.png b/docs/_static/images/cloud-gcp-05.png
deleted file mode 100644
index acaafc59..00000000
--- a/docs/_static/images/cloud-gcp-05.png
+++ /dev/null
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-market-01.png b/docs/_static/images/cloud-gcp-market-01.png
new file mode 100755
index 00000000..2d6f69b5
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-market-01.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-market-02.png b/docs/_static/images/cloud-gcp-market-02.png
new file mode 100755
index 00000000..25e7f8a6
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-market-02.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-market-03.png b/docs/_static/images/cloud-gcp-market-03.png
new file mode 100755
index 00000000..f08de2ba
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-market-03.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-market-04.png b/docs/_static/images/cloud-gcp-market-04.png
new file mode 100755
index 00000000..3735266c
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-market-04.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-market-05.png b/docs/_static/images/cloud-gcp-market-05.png
new file mode 100755
index 00000000..26b8cb59
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-market-05.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-proj.png b/docs/_static/images/cloud-gcp-proj.png
new file mode 100755
index 00000000..a7a8d768
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-proj.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-svc.png b/docs/_static/images/cloud-gcp-svc.png
new file mode 100755
index 00000000..5394a26e
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-svc.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vm-01.png b/docs/_static/images/cloud-gcp-vm-01.png
new file mode 100755
index 00000000..166a45ac
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vm-01.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vm-02.png b/docs/_static/images/cloud-gcp-vm-02.png
new file mode 100755
index 00000000..83d9a4ea
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vm-02.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vm-03.png b/docs/_static/images/cloud-gcp-vm-03.png
new file mode 100755
index 00000000..9d152461
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vm-03.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vm-04.png b/docs/_static/images/cloud-gcp-vm-04.png
new file mode 100755
index 00000000..a5c4cb64
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vm-04.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vm-06.png b/docs/_static/images/cloud-gcp-vm-06.png
new file mode 100755
index 00000000..da5418a6
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vm-06.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vm-07.png b/docs/_static/images/cloud-gcp-vm-07.png
new file mode 100755
index 00000000..92a8e3d5
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vm-07.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vm-08.png b/docs/_static/images/cloud-gcp-vm-08.png
new file mode 100755
index 00000000..c3d6cbeb
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vm-08.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vm-09.png b/docs/_static/images/cloud-gcp-vm-09.png
new file mode 100755
index 00000000..5ad7efaf
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vm-09.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vpc-01.png b/docs/_static/images/cloud-gcp-vpc-01.png
new file mode 100755
index 00000000..b1967096
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vpc-01.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vpc-02.png b/docs/_static/images/cloud-gcp-vpc-02.png
new file mode 100755
index 00000000..3c2ca787
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vpc-02.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vpc-03.png b/docs/_static/images/cloud-gcp-vpc-03.png
new file mode 100755
index 00000000..6f8f282d
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vpc-03.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vpc-04.png b/docs/_static/images/cloud-gcp-vpc-04.png
new file mode 100755
index 00000000..4aa0ba40
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vpc-04.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vpc-05.png b/docs/_static/images/cloud-gcp-vpc-05.png
new file mode 100755
index 00000000..0d6a94d0
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vpc-05.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vpc-06.png b/docs/_static/images/cloud-gcp-vpc-06.png
new file mode 100755
index 00000000..5508e4b6
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vpc-06.png
Binary files differ
diff --git a/docs/_static/images/cloud-gcp-vpc-07.png b/docs/_static/images/cloud-gcp-vpc-07.png
new file mode 100755
index 00000000..29f0ce8e
--- /dev/null
+++ b/docs/_static/images/cloud-gcp-vpc-07.png
Binary files differ
diff --git a/docs/installation/cloud/gcp.rst b/docs/installation/cloud/gcp.rst
index 7ae1a66e..8510f901 100644
--- a/docs/installation/cloud/gcp.rst
+++ b/docs/installation/cloud/gcp.rst
@@ -2,13 +2,26 @@
Google Cloud Platform
#####################
-Deploy VM
----------
+This guide provides step-by-step instructions for deploying a VyOS instance with two NICs and the required resources on Google Cloud Platform (GCP).
+
+Prerequisites
+========
+
+Before proceeding, ensure the following:
+
+- A GCP account with billing enabled.
+- Permissions to deploy Marketplace images.
+- Access to enable APIs and create resources (e.g., Compute Engine Admin, Network Admin).
+- An SSH key pair for VyOS instance access.
+- GA Google Cloud Project.
-To deploy VyOS on GCP (Google Cloud Platform)
+Deployment Steps
+========
-1. Generate SSH key pair type **ssh-rsa** from the host that will connect to
- VyOS.
+Step 1: Add SSH Key
+-------------------
+
+1. If you don’t already have SSH keys, generate an SSH key pair of type ``ssh-rsa`` on your local machine:
Example:
@@ -17,42 +30,248 @@ To deploy VyOS on GCP (Google Cloud Platform)
ssh-keygen -t rsa -f ~/.ssh/vyos_gcp -C "vyos@mypc"
-.. note:: In name "vyos@mypc" The first value must be "**vyos**". Because
- default user is vyos and google api uses this option.
-
+.. note:: In the comment ``vyos@mypc``, the username must start with vyos.
+ This is because the default user in the VyOS image is ``vyos``, and the Google Cloud API uses this value for SSH access.
-2. Open GCP console and navigate to the menu **Metadata**. Choose
- **SSH Keys** and click ``edit``.
+2. Open GCP console and navigate to the **Compute Engine** > **Metadata** > **SSH Keys**. Choose
+ **SSH Keys**.
.. figure:: /_static/images/cloud-gcp-01.png
-Click **Add item** and paste your public ssh key. Click ``Save``.
+3. Click **edit** and **Add item**.
+
+4. Paste your public ssh key and **Save**.
.. figure:: /_static/images/cloud-gcp-02.png
+For more information, please visit the official Google Cloud documentation:
+
+https://cloud.google.com/compute/docs/connect/add-ssh-keys
+
+https://cloud.google.com/compute/docs/connect/create-ssh-keys
+
+
+Step 2: Create a Service Account (If You Don't Have One)
+-------------------------------
+
+1. In the Google Cloud console **IAM & Admin > Service Accounts**.
+
+2. Select select a project.
+
+.. figure:: /_static/images/cloud-gcp-proj.png
+
+3. Click **Create Service Account**:
+
+ - Name: e.g., ``vyos-test``
+
+ - Service account ID: e.g., ``vyos-test``
+
+ - Description: e.g., ``VyOS Test Service Account``
+
+4. Click **Done**.
+
+.. figure:: /_static/images/cloud-gcp-svc.png
+
+For more information, please visit the official Google Cloud documentation:
+
+https://cloud.google.com/iam/docs/service-accounts-create
+
+https://cloud.google.com/iam/docs/service-account-overview
+
+
+Step 3: Create VPC Networks and Subnets
+-------------------------------
+
+1. In the Google Cloud console **VPC Network > VPC Networks** https://console.cloud.google.com/networking/networks/list
+
+2. Select select a project.
+
+.. figure:: /_static/images/cloud-gcp-proj.png
+
+3. Click **Create VPC Network**.
+
+ **Public VPC**:
+
+ - Name: e.g., ``vyos-public-vpc``
+
+ - Subnet creation mode: ``Custom``
+
+ - Subnet name: e.g., ``vyos-public-subnet``
+
+ - Region: e.g., ``europe-west1``
+
+ - IP range: e.g., ``10.0.1.0/24``
+
+ - Leave all other settings at default, then click **Create**.
+
+.. figure:: /_static/images/cloud-gcp-vpc-01.png
+
+.. figure:: /_static/images/cloud-gcp-vpc-02.png
+
+ **Private VPC**:
+
+ - Name: ``vyos-private-vpc``
+
+ - Subnet creation mode: ``Custom``
+
+ - Subnet name: ``vyos-private-subnet``
+
+ - Region: e.g., ``europe-west1``
+
+ - IP range: ``10.0.11.0/24``
+
+ - Leave all other settings at default, then click **Create**.
+
+.. figure:: /_static/images/cloud-gcp-vpc-03.png
+
+.. figure:: /_static/images/cloud-gcp-vpc-04.png
+
+4. Add firewall rules to allow specific network traffic from the Internet. By default all incoming traffic from outside a network is blocked.
+
+.. figure:: /_static/images/cloud-gcp-vpc-05.png
+
+.. figure:: /_static/images/cloud-gcp-vpc-06.png
+
+.. figure:: /_static/images/cloud-gcp-vpc-07.png
-2. On marketplace search "VyOS"
+For more information, please visit the official Google Cloud documentation:
-3. Change Deployment name/Zone/Machine type and click ``Deploy``
+https://cloud.google.com/vpc/docs/create-modify-vpc-networks
-.. figure:: /_static/images/cloud-gcp-03.png
-4. After few seconds click to ``instance``
+Step 4: Deploy VyOS instance from Marketplace
+---------
+
+1. Go to the Google Cloud Marketplace page in the Google Cloud console https://console.cloud.google.com/marketplace
+
+2. Choose the project where you want to deploy the VyOS instance.
+
+.. figure:: /_static/images/cloud-gcp-proj.png
+
+3. In the search bar, type ``vyos`` to find the VyOS image in the Marketplace.
+
+.. figure:: /_static/images/cloud-gcp-market-01.png
+
+.. figure:: /_static/images/cloud-gcp-market-02.png
+
+4. On the next page, review details such as support, pricing, and other details.
+
+.. figure:: /_static/images/cloud-gcp-market-03.png
+
+5. Click the ``GET STARTED`` button to start deployment process.
+
+.. figure:: /_static/images/cloud-gcp-market-04.png
+
+.. figure:: /_static/images/cloud-gcp-market-05.png
+
+6. General settings.
+
+ - Deployment name: e.g., ``vyos-test-vm``
+
+ - Select a Service Account: Select the service account created earlier.
+
+ - Image: Select VyOS image for deployment.
+
+ - Zone: e.g., ``europe-west1-b``
+
+ - Machine type: Choose based on performance and resource needs.
+
+.. figure:: /_static/images/cloud-gcp-vm-01.png
+
+.. figure:: /_static/images/cloud-gcp-vm-02.png
+
+7. Configure the network interfaces.
+
+ **Public Network interface:**
+
+ Edit the first (default) network interface and select following settings:
+
+ - Network: ``vyos-public-vpc``
+
+ - Subnetwork: ``vyos-public-subnet``
+
+ - External IP: ``Ephemeral``
+
+ - Private Network interface:
-.. figure:: /_static/images/cloud-gcp-04.png
+ **Private Network Interface:**
+
+ Click **ADD A NETWORK INTERFACE** button to create a second (private) interface, and select following settings:
-5. Find out your external IP address
+ - Network: ``vyos-private-vpc``
-.. figure:: /_static/images/cloud-gcp-05.png
+ - Subnetwork: ``vyos-private-subnet``
-6. Connect to the instance. SSH key was generated in the first step.
+ - External IP: ``None``
+
+.. figure:: /_static/images/cloud-gcp-vm-03.png
+
+8. Deployment automation.
+
+ - You can use ``cloud-init`` ``User Data`` to automatically inject specific configuration commands into the VyOS instance during deployment.
+
+ - Example:
+
+ .. code-block:: none
+
+ #cloud-config
+ vyos_config_commands:
+ - set system host-name 'VyOS-for-GCP'
+ - set system login banner pre-login 'Welcome to the VyOS for on GCP'
+ - set interfaces ethernet eth0 description 'WAN'
+ - set interfaces ethernet eth1 description 'LAN'
+ - set interfaces ethernet eth1 address 'dhcp'
+ - set interfaces ethernet eth1 dhcp-options no-default-route
+
+For more information, please visit the official VyOS documentation:
+
+https://docs.vyos.io/en/stable/automation/cloud-init.html#module-vyos-userdata
+
+.. figure:: /_static/images/cloud-gcp-vm-09.png
+
+9. Click ``Deploy`` button.
+
+.. figure:: /_static/images/cloud-gcp-vm-06.png
+
+.. figure:: /_static/images/cloud-gcp-vm-07.png
+
+
+Connect to the VyOS instance
+-----------
+
+To connect to the VyOS instance, use the SSH key that was generated in the first step.
+
+To retrieve the public IP address, go to the **Google Cloud Console** and navigate to: **Compute Engine** > **VM instances** https://console.cloud.google.com/compute/instances?project=vyos-images
+
+.. figure:: /_static/images/cloud-gcp-vm-08.png
+
+Example:
.. code-block:: none
- ssh -i ~/.ssh/vyos_gcp vyos@203.0.113.3
- vyos@vyos-r1-vm:~$
+ ssh vyos@35.233.97.132 -i .ssh/vyos_gcp
+
+ The authenticity of host '35.233.97.132 (35.233.97.132)' can't be established.
+ ED25519 key fingerprint is SHA256:KCsCnwCGhwX2ba5RcPUAO3ZUSNzS4sXIkujFoScCd0g.
+ This key is not known by any other names
+ Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+ Warning: Permanently added '35.233.97.132' (ED25519) to the list of known hosts.
+ Welcome to the VyOS for on GCP
+ Welcome to VyOS!
+
+ ┌── ┐
+ . VyOS 1.4.2
+ └ ──┘ sagitta
+
+ * Documentation: https://docs.vyos.io/en/sagitta
+ * Project news: https://blog.vyos.io
+ * Bug reports: https://vyos.dev
+
+ You can change this banner using "set system login banner post-login" command.
+
+ VyOS is a free software distribution that includes multiple components,
+ you can check individual component licenses under /usr/share/doc/*/copyright
+ vyos@VyOS-for-GCP:~$
+
-References
-----------
-https://console.cloud.google.com/