anthos-bm-edge-deployment/roles/abm-software/tasks/main.yaml (162 lines of code) (raw):
# Copyright 2022 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.
- name: Post-Install--Fail if number of available hosts != in-play count
fail:
msg: "Failure caused by expected {{ ansible_play_hosts_all|length }} hosts but have {{ ansible_play_hosts|length }}. Check failures above to see what issue happened."
when: (ansible_play_hosts_all|length) != (ansible_play_hosts|length)
tags:
- verify
#
# Install ACM
#
- name: Fail if local SCM_TOKEN_USER ENV is not defined
assert:
that:
- scm_token_user != ""
fail_msg: "The local environment variable 'SCM_TOKEN_USER' needs to be defined for the target Google Project ID"
when: "(primary_cluster_machine is defined) and (primary_cluster_machine == true)"
tags:
- verify
- name: Fail if local SCM_TOKEN_TOKEN ENV is not defined
assert:
that:
- scm_token_token != ""
fail_msg: "The local environment variable 'SCM_TOKEN_TOKEN' needs to be defined for the target Google Project ID"
when: "(primary_cluster_machine is defined) and (primary_cluster_machine == true)"
tags:
- verify
- name: Create cluster snapshot
include: create-snapshot.yaml
when:
- (primary_cluster_machine is defined)
- (primary_cluster_machine == true)
tags:
- cluster-snapshot
- name: Remove taint from master node
command:
cmd: kubectl taint nodes {{ cluster_name }} node-role.kubernetes.io/master:NoSchedule-
when: "(primary_cluster_machine is defined) and (primary_cluster_machine == true)"
environment:
KUBECONFIG: "{{ kubeconfig_shared_location }}"
ignore_errors: yes
tags:
- abm-software
- abm-config
- name: Folder for VMRUntime configuration
file:
path: '{{ vmruntime_config_path }}'
state: directory
mode: '0755'
when: "(primary_cluster_machine is defined) and (primary_cluster_machine == true)"
tags:
- abm-software
- vmruntime
- name: Copy VMRuntime for install
template:
src: vmruntime-config.yaml.j2
dest: "{{ vmruntime_config_path }}/vmruntime.yaml"
when:
- (primary_cluster_machine is defined)
- (primary_cluster_machine == true)
tags:
- abm-software
- vmruntime
- name: "Install VMRuntime"
shell: |
kubectl apply -f {{ vmruntime_config_path }}/vmruntime.yaml
# Allow for the API to register the API
sleep 5s
args:
executable: /bin/bash
environment:
KUBECONFIG: "{{ kubeconfig_shared_location }}"
when:
- (primary_cluster_machine is defined)
- (primary_cluster_machine == true)
retries: 3
register: result
until: result.rc == 0
tags:
- abm-software
- vmruntime
- name: Folder for ACM configurations
file:
path: '{{ acm_config_files }}'
state: directory
mode: '0755'
when: "(primary_cluster_machine is defined) and (primary_cluster_machine == true)"
tags:
- abm-software
- abm-config
### Add External Secrets
- name: Setup External Secrets
include: external-secrets.yaml
vars:
kubeconfig: "{{ kubeconfig_shared_location }}"
tags:
- external-secrets-install
- abm-software
### Setup & install Longhorn if settings
- name: Setup Longhorn
include: csi-longhorn.yaml
vars:
kubeconfig: "{{ kubeconfig_shared_location }}"
when: storage_provider == "longhorn"
tags:
- longhorn
- storage-setup
### Anthos Network Gateway
- name: "Install Anthos Config Management (ACM)"
include: acm-install.yaml
tags:
- acm-config-management-install
- acm-config-management
### Anthos Network Gateway
- name: "Install Anthos Network Gateway"
include: network-gateway-group.yaml
when: network_gateway_group_install == true
tags:
- ang-install
- name: "Add CPU Monitor KubeVirt service files"
include: cpumonitor-service.yaml
tags:
- cpu-monitor
- cdi
################# Setup secrets for git-creds and namespace repos per each franchise
- name: "Create git-cred secrets in GCP Secret Manager"
run_once: true # only need to run on one machine, create all of the secets
shell: |
EXISTS=$(gcloud secrets list --filter="{{ item.git_creds_gcp_secret_name }}" --format="value(name)" --project="{{ google_project_id }}")
if [ -z "${EXISTS}" ]]; then
gcloud secrets create {{ item.git_creds_gcp_secret_name }} --replication-policy="automatic" --project="{{ google_project_id }}"
echo "ADDED"
fi
register: out
changed_when: '"ADDED" in out.stdout_lines'
environment:
PATH: "{{ tools_base_path }}/google-cloud-sdk/bin:{{ ansible_env.PATH }}"
loop: "{{ franchises }}"
when:
- (primary_cluster_machine is defined)
- (primary_cluster_machine == true)
tags:
- abm-software
- enable-acm
- post-acm
- name: "Add new version to git-cred franchise secret in GCP Secret Manager IF no current or active versions exists"
run_once: true # only need to run on one machine, create all of the secets
shell: |
EXISTS=$(gcloud secrets versions list {{ item.git_creds_gcp_secret_name }} --filter="state=enabled" --format="value(name)" --project="{{ google_project_id }}")
if [ -z "${EXISTS}" ]; then
echo -n "{\"token\"{{':'}} \"{{ scm_token_token }}\", \"username\"{{':'}} \"{{ scm_token_user }}\"}" | gcloud secrets versions add {{ item.git_creds_gcp_secret_name }} --project="{{ google_project_id }}" --data-file=-
echo "ADDED"
fi
register: out
changed_when: '"ADDED" in out.stdout_lines'
loop: "{{ franchises }}"
when:
- (primary_cluster_machine is defined)
- (primary_cluster_machine == true)
environment:
PATH: "{{ tools_base_path }}/google-cloud-sdk/bin:{{ ansible_env.PATH }}"
tags:
- abm-software
- enable-acm
- post-acm
- name: Setup OIDC in cluster
include: setup-oidc.yaml
when:
- enable_oidc == true
tags:
- abm-software
- oidc
- post-acm