diff --git a/ansible/check-production.yml b/ansible/check-production.yml new file mode 100644 index 000000000..b32b5d86e --- /dev/null +++ b/ansible/check-production.yml @@ -0,0 +1,19 @@ +--- +- hosts: localhost + gather_facts: false + become: false + tasks: + - name: Confirm continuing if using production environment + ansible.builtin.pause: + prompt: | + ************************************* + * WARNING: PROTECTED ENVIRONMENT! * + ************************************* + + Current environment: {{ appliances_environment_name }} + Do you really want to continue (yes/no)? + register: env_confirm_safe + when: + - appliances_environment_name in appliances_protected_environments + - not (appliances_protected_environment_autoapprove | default(false) | bool) + failed_when: not (env_confirm_safe.user_input | bool) diff --git a/ansible/site.yml b/ansible/site.yml index 79b71e10a..b93da9fde 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -1,4 +1,7 @@ --- + +- ansible.builtin.import_playbook: check-production.yml + - name: Run pre.yml hook vars: # hostvars not available here, so have to recalculate environment root: diff --git a/environments/common/inventory/group_vars/all/defaults.yml b/environments/common/inventory/group_vars/all/defaults.yml index 66e4088b0..ec76ffa2a 100644 --- a/environments/common/inventory/group_vars/all/defaults.yml +++ b/environments/common/inventory/group_vars/all/defaults.yml @@ -4,6 +4,8 @@ ansible_user: rocky appliances_repository_root: "{{ lookup('env', 'APPLIANCES_REPO_ROOT') }}" appliances_environment_root: "{{ lookup('env', 'APPLIANCES_ENVIRONMENT_ROOT') }}" appliances_environment_name: "{{ appliances_environment_root | basename | regex_replace('\\W+', '') }}" # [a-zA-Z0-9_] only +appliances_protected_environments: + - production appliances_cockpit_state: absent # RHEL cockpit installed but not enabled in genericcloud images; appliance defaults to removing it # appliances_state_dir: # define an absolute path here to use for persistent state: NB: This is defined as /var/lib/state in inventory by the default Terraform appliances_mode: configure