Created
July 20, 2020 23:29
-
-
Save hideojoho/2ad5b92e340da328ed216dbeb73cec66 to your computer and use it in GitHub Desktop.
Ansible playbook for GPU nodes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
- hosts: all | |
vars: | |
ansible_connect_timeout: 300 | |
become: true | |
tasks: | |
- name: Update and upgrade apt packages | |
apt: | |
update_cache: yes | |
upgrade: yes | |
- name: Install packages that allow apt to be used over HTTPS | |
apt: | |
name: "{{ packages }}" | |
state: present | |
update_cache: yes | |
vars: | |
packages: | |
- apt-transport-https | |
- ca-certificates | |
- curl | |
- gnupg-agent | |
- software-properties-common | |
- name: Install build-essential package | |
apt: | |
name: "{{ packages }}" | |
state: present | |
update_cache: yes | |
vars: | |
packages: | |
- build-essential | |
- name: Add a pin for cuda driver | |
get_url: | |
url: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin | |
dest: /etc/apt/preferences.d/cuda-ubuntu1804.pin | |
mode: '0644' | |
- name: Install a cuda driver repository | |
apt: | |
deb: http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb | |
- name: Add an apt signing key for cuda driver | |
apt_key: | |
file: /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub | |
state: present | |
- name: Install the cuda drivers | |
apt: | |
name: cuda-drivers | |
state: present | |
update_cache: yes | |
- name: Add an apt signing key for Docker | |
apt_key: | |
url: https://download.docker.com/linux/ubuntu/gpg | |
state: present | |
- name: Add apt repository for stable version | |
apt_repository: | |
repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable | |
state: present | |
- name: Install docker and its dependecies | |
apt: | |
name: "{{ packages }}" | |
state: present | |
update_cache: yes | |
vars: | |
packages: | |
- docker-ce | |
- docker-ce-cli | |
- containerd.io | |
notify: | |
- docker status | |
- name: Add vagrant user to docker group | |
user: | |
name: vagrant | |
group: docker | |
- name: Reboot | |
reboot: | |
- name: Add an apt signing key for NVIDIA Docker | |
apt_key: | |
url: https://nvidia.github.io/nvidia-docker/gpgkey | |
state: present | |
- name: Add NVidia-Docker repository source | |
get_url: | |
url: https://nvidia.github.io/nvidia-docker/{{ hostvars[inventory_hostname].ansible_distribution | lower }}{{ hostvars[inventory_hostname].ansible_distribution_version }}/nvidia-docker.list | |
dest: /etc/apt/sources.list.d/nvidia-docker.list | |
mode: '0644' | |
- name: Install nvidia-docker2 | |
apt: | |
name: nvidia-container-toolkit | |
state: present | |
update_cache: yes | |
- name: Reload Docker daemon | |
systemd: | |
name: docker | |
state: reloaded | |
# - name: Remove swapfile from /etc/fstab | |
# mount: | |
# name: "{{ item }}" | |
# fstype: swap | |
# state: absent | |
# with_items: | |
# - swap | |
# - none | |
# - name: Disable swap | |
# command: swapoff -a | |
# when: ansible_swaptotal_mb > 0 | |
# - name: Add an apt signing key for Kubernetes | |
# apt_key: | |
# url: https://packages.cloud.google.com/apt/doc/apt-key.gpg | |
# state: present | |
# - name: Adding apt repository for Kubernetes | |
# apt_repository: | |
# repo: deb https://apt.kubernetes.io/ kubernetes-xenial main | |
# state: present | |
# filename: kubernetes.list | |
# - name: Install Kubernetes binaries | |
# apt: | |
# name: "{{ packages }}" | |
# state: present | |
# update_cache: yes | |
# vars: | |
# packages: | |
# - kubelet | |
# - kubeadm | |
# - kubectl | |
# - name: Configure node ip | |
# lineinfile: | |
# create: yes | |
# path: /etc/default/kubelet | |
# line: KUBELET_EXTRA_ARGS=--node-ip={{ node_ip }} | |
# - name: Restart kubelet | |
# service: | |
# name: kubelet | |
# daemon_reload: yes | |
# state: restarted | |
# - name: Initialize the Kubernetes cluster using kubeadm | |
# command: kubeadm init --apiserver-advertise-address="192.168.50.10" --apiserver-cert-extra-sans="192.168.50.10" --node-name k8s-master --pod-network-cidr=192.168.0.0/16 | |
# - name: Setup kubeconfig for vagrant user | |
# command: "{{ item }}" | |
# with_items: | |
# - mkdir -p /home/vagrant/.kube | |
# - cp -i /etc/kubernetes/admin.conf /home/vagrant/.kube/config | |
# - chown vagrant:vagrant /home/vagrant/.kube/config | |
# - name: Install calico pod network | |
# become: false | |
# command: kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml | |
# - name: Generate join command | |
# command: kubeadm token create --print-join-command | |
# register: join_command | |
# - name: Copy join command to local file | |
# become: false | |
# local_action: copy content="{{ join_command.stdout_lines[0] }}" dest="./join-command" | |
# - name: Add an apt signing key for helm | |
# apt_key: | |
# url: https://helm.baltorepo.com/organization/signing.asc | |
# state: present | |
# - name: Install apt-transport-https | |
# apt: | |
# name: apt-transport-https | |
# state: present | |
# update_cache: yes | |
# - name: Adding apt repository for helm | |
# apt_repository: | |
# repo: deb https://baltocdn.com/helm/stable/debian/ all main | |
# state: present | |
# filename: helm-stable-debian.list | |
# - name: Install helm | |
# apt: | |
# name: helm | |
# state: present | |
# update_cache: yes | |
# - name: Copy admin.conf to /vagrant/k8s-setup | |
# copy: | |
# src: /etc/kubernetes/admin.conf | |
# dest: /vagrant/k8s-setup/admin.conf | |
# mode: 0644 | |
handlers: | |
- name: docker status | |
service: name=docker state=started |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment