anthos-bm-edge-deployment/inventory/group_vars/all.yaml (174 lines of code) (raw):
# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
# Ansible Setttings (per each run)
###
###
###
# Ansible will use the key below
ansible_ssh_private_key_file: "build-artifacts/consumer-edge-machine"
ansible_ssh_common_args: "-F build-artifacts/ssh-config -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
#######
####
#### Commonly changed variables
####
# Latest version can be found: gsutil ls -al gs://anthos-baremetal-release/bmctl
# Version of Anthos Bare Metal to install
abm_version: "1.12.0" # verify coupling of ABM to BMCTL versions
# bmctl binary version
#TODO: set this up to query for the version, then upgrade automatically if updated
#NOTE: A copy of this variable is in Molecule test `for google_tools`
bmctl_version: "1.12.0" # If changed, set the `force_tools_upgrade` to true so new version of BMCTL is downloaded
# Force Upgrade of tools (typically used when updating the ABM version above)
force_tools_upgrade: false
###
### Ansible Pull Configurations
###
# Remote playbook for Ansible Pull to use (if empty, no ansible-pull used for this type of execution)
ansible_pull_remote_execute_repo: ""
# Default for ansible pull drift assistance (defaults to empty or no run)
ansible_pull_drift_repo: ""
####
#### Anthos Config Management
####
acm_root_repo: "{{ lookup('env', 'ROOT_REPO_URL') | default('https://github.com/GoogleCloudPlatform/anthos-samples', True) }}"
acm_repo_type: "{{ lookup('env', 'ROOT_REPO_TYPE') | default('token', True) }}"
# From the above repo, what branch and what directory to use as bases
root_repository_branch: "{{ lookup('env', 'ROOT_REPO_BRANCH') | default('main', True) }}"
# Directory to use as base
root_repository_policy_dir: "{{ lookup('env', 'ROOT_REPO_DIR') | default('/config', True) }}"
###
### Google Core Variables
###
google_project_id: "{{ lookup('env', 'PROJECT_ID') }}"
google_region: "{{ lookup('env', 'REGION') | default('us-central1', True) }}" # NOTE: A copy of this variable is in Molecule test `for google_tools`
google_zone: "{{ lookup('env', 'ZONE') | default('us-central1-a', True) }}" # NOTE: A copy of this variable is in Molecule test `for google_tools`
###
### SCM (GitLab or GitHub access token)
###
scm_token_user: "{{ lookup('env', 'SCM_TOKEN_USER') }}"
scm_token_token: "{{ lookup('env', 'SCM_TOKEN_TOKEN') }}"
# gsutil ls -al gs://config-management-release/released/
# Anthos Config Management version
acm_version: "1.12.0"
####
#### Anthos Network Gateway
####
# Floating IP addresses for Anthos Network Gateway
ang_floating_ips: [] # Floating IP for ANG
vpn_gateway_ips: [] # Gateway IPs for VPN
network_gateway_group_install: false
network_gateway_mcc: false
###
### Global Snapshot & Update Variables
###
snapshot_gcs_bucket_base: "{{ lookup('env', 'SNAPSHOT_GCS') | default( [ google_project_id, '-clusters-snapshots' ] | join, True) }}" # leave empty to generate local-only snapshots
# snapshot_gcs_bucket_base: ""
###
### Storage Provider
###
storage_provider: "longhorn" # Options: openebs, robin, none
# Storage provider roots for disc storage
storage_provider_roots: [ "/customer" ]
# GSM Secret name used for Longhorn HMAC
longhorn_secret_name: "longhorn-cloud-storage-hmac"
###
### OIDC in cluster (setup OIDC before provisioning, set environment variables to the values)
###
enable_oidc: "{{ lookup('env', 'OIDC_ENABLED')|bool or false }}" # Off by default, change with ENV var, not with default value
oidc_client_id: "{{ lookup('env', 'OIDC_CLIENT_ID') }}"
oidc_client_secret: "{{ lookup('env', 'OIDC_CLIENT_SECRET') }}"
oidc_user: "{{ lookup('env', 'OIDC_USER') }}"
###
### VM Runtime (KubeVirt + A4VM)
###
# VM Runtime
enable_vmruntime: true
# Base folder to place configuration and installation items for ABM
abm_install_folder: "/var/abm-install"
###
### Default Ansible configuration variables
###
# All ansible interactions are using this user during provisioning
ansible_user: abm-admin
# Path to the private key file used for SSH
ansible_ssh_key_file_encrypted: build-artifacts/consumer-edge-machine.encrypted
ansible_ssh_key_timeout: "4h"
# Details of Google Cloud KMS key used to decrypt SSH private key
google_kms: {
keyring_name: "gdc-ce-keyring", # Defined in ./scripts/create-primary-gsa.sh -- future will be TF
key_name: "gdc-ssh-key",
location: "global"
}
local_gsa_key: "{{ lookup('env', 'LOCAL_GSA_FILE') }}"
tools_base_path: "/var/google-tools-install"
kubeconfig_shared_root: "/var/kubeconfig"
kubeconfig_shared_location: "{{ kubeconfig_shared_root }}/kubeconfig"
#NOTE: A copy of this variable is in Molecule test `for google_tools`
gcp_services_required:
- anthos.googleapis.com
- anthosaudit.googleapis.com
- anthosgke.googleapis.com
- cloudkms.googleapis.com
- cloudresourcemanager.googleapis.com
- connectgateway.googleapis.com
- container.googleapis.com
- gkeconnect.googleapis.com
- gkehub.googleapis.com
- iam.googleapis.com
- iamcredentials.googleapis.com
- logging.googleapis.com
- monitoring.googleapis.com
- opsconfigmonitoring.googleapis.com
- secretmanager.googleapis.com
- serviceusage.googleapis.com
- sourcerepo.googleapis.com
- stackdriver.googleapis.com
- storage.googleapis.com
#Secret name for longhorn to take backups of volumes and send to cloud storage bucket
volume_backup_secret_name: gcp-cloud-storage-backup-secret
# Setup VLAN on Host # TODO: Add the ability to create multiple VLAN interfaces dynamically
setup_vlan: false
vlan_interfaces: []
# Observability package
install_observability: false
# All of the Service Accounts used in this solution
## LONGHORN
service_accounts: [
{
name: abm-gcr-agent,
keyfile: abm-gcr-agent-creds.json,
description: "ABM GCR Agent Account",
roles: [
"roles/storage.objectViewer"
]
},
{
name: abm-gke-connect-agent,
keyfile: abm-gke-connect-agent-creds.json,
description: "ABM GKE Connect Agent Service Account",
roles: [
"roles/gkehub.connect"
]
},
{
name: abm-gke-register-agent,
keyfile: abm-gke-register-agent-creds.json,
description: "ABM GKE Connect Register Account",
roles: [
"roles/gkehub.admin"
]
},
{
name: abm-cloud-operations-agent,
keyfile: abm-cloud-operations-agent-creds.json,
description: "ABM Cloud Operations Service Account",
roles: [
"roles/logging.logWriter",
"roles/monitoring.metricWriter",
"roles/stackdriver.resourceMetadata.writer",
"roles/monitoring.dashboardEditor",
"roles/opsconfigmonitoring.resourceMetadata.writer"
]
},
{
name: external-secrets-k8s,
keyfile: external-secrets-k8s-creds.json,
description: "External Secrets Service Account",
roles: [
"roles/secretmanager.secretAccessor",
"roles/secretmanager.viewer"
]
},
{
name: longhorn-cloud-storage,
keyfile: longhorn-cloud-storage-creds.json,
description: "Longhorn taking volume backups on cloud storage ",
roles: [
"roles/storage.objectAdmin"
]
},
{
name: gateway-connect-agent,
keyfile: gateway-connect-agent-creds.json,
description: "Agent used for Gateway Connect",
roles: [
"roles/gkehub.gatewayAdmin",
"roles/gkehub.viewer"
]
},
{
name: source-repo-agent,
keyfile: google-source-repo-agent.json,
description: "Agent used for GSR",
roles: [
"roles/source.reader"
]
},
{
name: cdi-import-agent,
keyfile: cdi-import-agent-creds.json,
description: "Agent used for CDI image access",
roles: [
"roles/storage.objectViewer"
]
},
{
name: storage-agent-svc-account,
keyfile: storage-agent-svc-account-creds.json,
description: "Agent used for Snapshot Cloud Storage",
roles: [
"roles/storage.admin"
]
}
]
# git_creds_gcp_secret_name is the secret created to hold the Git PAT info corresponding to that Namespace Repo
# franchise_name, franchise_number aren't used
# Stores: not used now, secrets are created for all franchises in GCP Secrets Manager, ExternalSecrets are controlled in the root-repo for each franchise
# Associations of franchise/store -> cluster is done at the inventory level on "acm_cluster_name" (an unique name across the cluster space)
## All this does is create the git-creds for the different ExternalSecrets used in Namespace Repos
franchises: [
{
franchise_number: "123", # DEPRECATED
git_creds_gcp_secret_name: "global-lab-git-creds", # Secret to access the namespace repo containing the franchise's information
franchise_name: "Global", # DEPRECATED
stores: [
"edge-2" # store-usa-123-1
]
},
{
franchise_name: "Chicago",
franchise_number: "234",
git_creds_gcp_secret_name: "northam-lab-git-creds",
stores: [
"edge-1" # store-usa-234-3
]
}
]