# Copyright 2020 Dell Inc. or its subsidiaries. All Rights Reserved. # # 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: Create a custom fact directory on each host file: path: "{{ custom_fact_dir }}" state: directory mode: "{{ custom_fact_dir_mode }}" - name: Install accelerator discovery script copy: src: inventory.fact dest: "{{ accelerator_discovery_script_dest }}" owner: root group: root mode: "{{ accelerator_discovery_script_mode }}" - name: Add epel-release repo package: name: epel-release state: present tags: install - name: Add elrepo GPG key rpm_key: state: present key: "{{ elrepo_gpg_key_url }}" register: elrepo_gpg_key until: elrepo_gpg_key is not failed retries: 20 delay: 10 tags: install - name: Add elrepo (nvidia kmod drivers) package: name: "{{ elrepo_rpm_url }}" state: present register: elrepo until: elrepo is not failed retries: 20 delay: 10 tags: install - name: Add docker community edition repository get_url: url: "{{ docker_repo_url }}" dest: "{{ docker_repo_dest }}" register: docker_repo until: docker_repo is not failed retries: 20 delay: 10 tags: install - name: Permanently Disable swap mount: name: "swap" fstype: swap state: absent - name: Disable selinux selinux: state: disabled tags: install - name: Install common packages package: name: "{{ common_packages }}" state: present tags: install - name: Versionlock docker command: "yum versionlock '{{ item }}'" args: warn: false with_items: - "{{ docker_packages }}" changed_when: true tags: install - name: Collect host facts (including acclerator information) setup: ~ - name: Install infiniBand support package: name: "@Infiniband Support" state: present tags: install - name: Deploy time ntp/chrony include_tasks: ntp.yml tags: install - name: Install Nvidia drivers and software components include_tasks: nvidia.yml when: ansible_local.inventory.nvidia_gpu > 0 tags: install - name: Install AMD GPU drivers and software components include_tasks: amd.yml when: ansible_local.inventory.amd_gpu > 0 tags: install - name: Get the hostname command: hostname register: machine_hostname changed_when: true - name: Set facts for node hostname and ip set_fact: node_ip: "{{ inventory_hostname }}" node_hostname: "{{ machine_hostname.stdout }}" - name: Add host name in hosts file lineinfile: dest: "{{ hosts_file_dest }}" line: "{{ inventory_hostname }} {{ machine_hostname.stdout }}" state: present create: yes mode: "{{ hosts_file_mode }}" - name: Add compute hosts info in manager node hosts file lineinfile: dest: "{{ hosts_file_dest }}" line: "{{ hostvars[item].node_ip }} {{ hostvars[item].node_hostname }}" state: present create: yes mode: "{{ hosts_file_mode }}" with_items: - "{{ groups['compute'] }}" when: "'manager' in group_names" - name: Add manager hosts info in compute node hosts file lineinfile: dest: "{{ hosts_file_dest }}" line: "{{ hostvars[item].node_ip }} {{ hostvars[item].node_hostname }}" state: present create: yes mode: "{{ hosts_file_mode }}" with_items: - "{{ groups['manager'] }}" when: "'compute' in group_names" - name: Add login node info in /etc/hosts of manager node lineinfile: dest: "{{ hosts_file_dest }}" line: "{{ hostvars[item].node_ip }} {{ hostvars[item].node_hostname }}" state: present create: yes mode: "{{ hosts_file_mode }}" with_items: - "{{ groups['login_node'] }}" when: - '"manager" in group_names' - hostvars["127.0.0.1"]["login_node_required"] - name: Add manager info in /etc/hosts of login node lineinfile: dest: "{{ hosts_file_dest }}" line: "{{ hostvars[item].node_ip }} {{ hostvars[item].node_hostname }}" state: present create: yes mode: "{{ hosts_file_mode }}" with_items: - "{{ groups['manager'] }}" when: - '"login_node" in group_names' - hostvars["127.0.0.1"]["login_node_required"] - name: Add compute info in /etc/hosts of login node lineinfile: dest: "{{ hosts_file_dest }}" line: "{{ hostvars[item].node_ip }} {{ hostvars[item].node_hostname }}" state: present create: yes mode: "{{ hosts_file_mode }}" with_items: - "{{ groups['compute'] }}" when: - hostvars["127.0.0.1"]["login_node_required"] - '"login_node" in group_names'