--- - name: Step 00xxxxx software hosts: bastions gather_facts: false become: false tasks: - when: install_ocp4 | bool block: - name: Get awscli bundle get_url: url: https://s3.amazonaws.com/aws-cli/awscli-bundle.zip dest: /tmp/awscli-bundle.zip - name: Unzip awscli-bundle.zip unarchive: src: /tmp/awscli-bundle.zip dest: /tmp/ remote_src: yes - name: Install awscli command: /tmp/awscli-bundle/install -i /usr/local/aws -b /bin/aws args: creates: /usr/local/aws become: yes - name: cleanup archive and tmp files file: path: "{{ item }}" state: absent loop: - /tmp/awscli-bundle - /tmp/awscli-bundle.zip - name: Create .aws directory file: path: ~/.aws state: directory - name: Add aws credentials blockinfile: path: ~/.aws/credentials block: |- [default] aws_access_key_id = {{ hostvars.localhost.student_access_key_id }} aws_secret_access_key = {{ hostvars.localhost.student_secret_access_key }} - hosts: localhost - name: Install Packages become: yes package: name: - golang - python2-boto3 - unzip - name: Get OS (var) shell: "/usr/bin/go env GOOS" register: GOOS_VAR - name: Get Arch (var) shell: "/usr/bin/go env GOARCH" register: GOARCH_VAR - name: Make sure directory /usr/local/bin exists become: yes file: path: /usr/local/bin state: directory - name: Get the OpenShift Installer become: yes get_url: url: "https://github.com/openshift/installer/releases/download/{{ ocp4_installer_version }}/openshift-install-{{ GOOS_VAR.stdout }}-{{ GOARCH_VAR.stdout }}" dest: /usr/local/bin/openshift-install mode: 0775 owner: root group: root - name: Get the OpenShift CLI become: yes unarchive: src: "https://mirror.openshift.com/pub/openshift-v3/clients/{{ oc_client_version }}/linux/oc.tar.gz" remote_src: yes dest: /usr/local/bin mode: 0775 owner: root group: root - name: Generate SSH keys shell: ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N "" args: creates: ~/.ssh/id_rsa - name: Generate SSH pub key shell: ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub args: creates: ~/.ssh/id_rsa.pub - name: Slurp public key slurp: path: /home/{{ ansible_user }}/.ssh/id_rsa.pub register: idrsapub - name: Create cluster directory file: path: /home/{{ ansible_user }}/cluster-{{ guid }} state: directory - stat: path: files/install-config.yaml.{{ ocp4_installer_version }}.j2 register: rconfig delegate_to: localhost - name: Use version-specific template for install-config-yaml set_fact: install_config_template_path: files/install-config.yaml.{{ ocp4_installer_version }}.j2 when: rconfig.stat.exists - name: Use default template for install-config-yaml set_fact: install_config_template_path: files/install-config.yaml.j2 when: not rconfig.stat.exists - name: Generate config install-config.yaml template: src: "{{ install_config_template_path }}" dest: /home/{{ ansible_user }}/cluster-{{ guid }}/install-config.yaml - name: Run the installer command: openshift-install create cluster --dir=/home/{{ ansible_user }}/cluster-{{ guid }}/ - name: Fetch kube config fetch: flat: yes src: /home/{{ ansible_user }}/cluster-{{ guid }}/auth/{{ item }} dest: "{{ hostvars.localhost.output_dir }}/{{ env_type }}_{{ guid }}_{{ item }}" loop: - kubeconfig - kubeadmin-password - name: Get kubeadmin password slurp: path: /home/{{ ansible_user }}/cluster-{{ guid }}/auth/kubeadmin-password register: kubeadminr - name: Get console route environment: KUBECONFIG: /home/{{ ansible_user }}/cluster-{{ guid }}/auth/kubeconfig command: oc get route -n openshift-console console -o json register: routeconsole retries: 5 delay: 30 until: routeconsole is succeeded ignore_errors: yes - name: Set webconsole address set_fact: webconsole: "http://{{ routeconsole.stdout | from_json | json_query('spec.host') }}" when: routeconsole is succeeded # sometimes the route is not ready, guess it - name: Guess webconsole address set_fact: webconsole: "http://console-openshift-console.apps.cluster-{{ guid }}.{{ guid }}.{{ subdomain_base }}" when: routeconsole is failed - name: Get API for command line environment: KUBECONFIG: /home/{{ ansible_user }}/cluster-{{ guid }}/auth/kubeconfig command: oc whoami --show-server register: showserver - name: Print Overview debug: msg: "{{ item }}" with_items: - "user.info: Kubeadmin user / password: kubeadmin / {{ kubeadminr.content | b64decode }}" - "user.info: Openshift Master Console: {{ webconsole }}" - "user.info: Openshift API for command line 'oc' client: {{ showserver.stdout | trim }}" - "user.info: Download oc client from https://mirror.openshift.com/pub/openshift-v3/clients/{{ oc_client_version }}" - name: Step 00xxxxx software hosts: localhost gather_facts: false become: false tasks: # NOT Pre-installed - name: Print Student aws access as user.info debug: msg: "{{ item }}" with_items: - "user.info: WARNING: with great power comes great responsability. We monitor usage." - "user.info: Your AWS programatic access: {{ student_access_key_id }} / {{ student_secret_access_key }}" when: - not install_ocp4 | bool - student_access_key_id is defined - student_secret_access_key is defined