CSIT-770 Installation of prerequisites on physical hosts
[csit.git] / resources / tools / testbed-setup / playbooks / 01-host-setup.yaml
1 ---
2 - hosts: all
3   remote_user: testuser
4   sudo: yes
5   tasks:
6   - name: copy sudoers file
7     copy: src=files/sudoers dest=/etc/sudoers.d/testuser owner=root group=root mode=660
8   - name: copy hosts file
9     template: src=files/hosts dest=/etc/hosts owner=root group=root mode=644
10   - name: copy hostname file
11     template: src=files/hostname dest=/etc/hostname owner=root group=root mode=644
12   - name: copy grub file
13     template: src=files/grub dest=/etc/default/grub owner=root group=root mode=644
14   - name: update grub
15     command: update-grub
16   - name: copy apt sources file
17     template: src=files/apt-sources.list dest=/etc/apt/sources.list
18   - name: install python-apt
19     raw: apt-get update && apt-get install python-apt -y -q
20   - name: update repositories
21     apt: update_cache=yes
22   - name: install git
23     apt: name=git state=present
24   - name: install crudini
25     apt: name=crudini state=present
26   - name: install expect
27     apt: name=expect state=present
28   - name: install socat
29     apt: name=socat state=present
30   - name: install qemu
31     apt: name=qemu-system-x86 state=present
32   - name: Install packages to allow apt to use a repository over HTTPS
33     apt: name=apt-transport-https state=present
34 - hosts: virl
35   remote_user: testuser
36   sudo: yes
37   tasks:
38   - name: interfaces file
39     template: src=files/interfaces_virl dest=/etc/network/interfaces owner=root group=root mode=644
40   - name: Add VIRL user
41     user: name=virl shell=/bin/bash comment="VIRL user" password="$6$mJPlK5FKLar6$xxXPP0LRhC7T1yhHtym18Z3nKZweTtfTxzi1WpvVHJ0U/Em1UWcHqfMhRApFp0rsY9jHRuL6FfeFbKPN..uDK."
42   - name: Add VIRL user to sudoers
43     copy: src=files/sudoers_virl dest=/etc/sudoers.d/virl owner=root group=root mode=660
44   - name: Add post up for additional address
45     copy: src=files/ifup dest=/etc/network/if-up.d/virl owner=root group=root mode=755
46   - name: Set VIRL user authorized key
47     authorized_key: user=virl key="{{ lookup('file', '/home/testuser/.ssh/id_rsa.pub') }}"
48   - name: install bridge-utils
49     apt: name=bridge-utils state=present
50   - name: Old interface naming
51     command: ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
52   - name: update init for old interface naming
53     command: update-initramfs -u
54   - name: QEMU log garbage collector
55     cron: minute="0" hour="0"
56           name="QEMU log garbage collector"
57           job="find /var/log/libvirt/qemu -type f -mtime +14 -name 'instance*.log' -delete"
58   - name: VPP deb package garbage collector
59     cron: minute="0" hour="0"
60           name="VPP deb package garbage collector"
61           job="find /tmp -type f -atime +14 -name '*.deb' -delete"
62   - name: VPP rpm package garbage collector
63     cron: minute="0" hour="0"
64           name="VPP rpm package garbage collector"
65           job="find /tmp -type f -atime +14 -name '*.rpm' -delete"
66   - name: NFS scratch dir garbage collector
67     cron: minute="0" hour="0"
68           name="NFS scratch dir garbage collector"
69           job="find /nfs/scratch/ -type d -mtime +1 -name 'session-*' -exec rm -r '{}' \\;"
70 - hosts: tg:sut
71   remote_user: testuser
72   sudo: yes
73   tasks:
74   - name: interfaces file
75     template: src=files/interfaces_physical dest=/etc/network/interfaces owner=root group=root mode=644
76   - name: copy sysctl file
77     template: src=files/90-csit dest=/etc/sysctl.d/90-csit.conf owner=root group=root mode=644
78   - name: isolcpus and pstate parameter
79     lineinfile: dest=/etc/default/grub regexp=^GRUB_CMDLINE_LINUX= line=GRUB_CMDLINE_LINUX="\"isolcpus={{ isolcpus }} nohz_full={{ isolcpus }} rcu_nocbs={{ isolcpus }} intel_pstate=disable\""
80   - name: update grub
81     command: update-grub
82   - name: Install python-dev
83     apt: name=python-dev state=present
84   - name: Install python-virtualenv
85     apt: name=python-virtualenv state=present
86   - name: Install python pip
87     apt: name=python-pip state=present
88   - name: Install libpcap-dev
89     apt: name=libpcap-dev state=present
90   - name: Install cpufrequtils
91     apt: name=cpufrequtils state=present
92   - name: Set cpufrequtils defaults
93     copy: src=files/cpufrequtils dest=/etc/default/cpufrequtils owner=root group=root mode=0644
94   - name: Disable IRQ load balancing
95     copy: src=files/irqbalance dest=/etc/default/irqbalance owner=root group=root mode=0644
96   - name: Disable ondemand
97     service: name=ondemand enabled=no
98   - name: Install cgroup-support
99     apt: name=cgroup-bin state=present
100   - name: Install zlib1g-dev
101     apt: name=zlib1g-dev state=present
102   - name: Copy Python requirements file
103     copy: src=files/requirements.txt dest=/tmp/requirements.txt
104   - name: Install PIP requirements
105     pip: requirements=/tmp/requirements.txt
106   - name: IRQ pinning
107     lineinfile:
108         dest: /etc/rc.local
109         insertbefore: '^exit 0'
110         line: 'for l in `ls /proc/irq`; do echo 1 | sudo tee /proc/irq/$l/smp_affinity; done'
111   - name: RCU pinning
112     lineinfile:
113         dest: /etc/rc.local
114         insertbefore: '^exit 0'
115         line: 'for i in `pgrep rcu[^c]` ; do sudo taskset -pc 0 $i ; done'
116   - name: CPU writeback mask
117     lineinfile:
118         dest: /etc/rc.local
119         insertbefore: '^exit 0'
120         line: 'echo 1 | sudo tee /sys/bus/workqueue/devices/writeback/cpumask'
121 - hosts: tg
122   remote_user: testuser
123   sudo: yes
124   tasks:
125   - name: Install unzip
126     apt: name=unzip state=present
127 - hosts: sut
128   remote_user: testuser
129   sudo: yes
130   tasks:
131   - name: Install dkms
132     apt: name=dkms state=present
133   - name: Install pkg-config
134     apt: name=pkg-config state=present
135   - name: Install libglib2.0-dev
136     apt: name=libglib2.0-dev state=present
137   - name: Install autoconf
138     apt: name=autoconf state=present
139   - name: Install libtool
140     apt: name=libtool state=present
141   - name: Install screen
142     apt: name=screen state=present
143   - name: Install lxc
144     apt: name=lxc state=present
145   - name: Disable 80-vpp.conf
146     file:
147         src: /dev/null
148         dest: /etc/sysctl.d/80-vpp.conf
149         state: link
150   - name: Install java
151     apt: name=openjdk-8-jdk state=present
152   - name: Add Docker's official GPG key
153     apt_key:
154         url: "https://download.docker.com/linux/ubuntu/gpg"
155         state: present
156   - name: Add Docker's stable repository
157     apt_repository:
158         repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
159         state: present
160   - name: Install Docker CE
161     apt: name=docker-ce state=present
162   - name: Add Kubernetes's official GPG key
163     apt_key:
164         url: "https://packages.cloud.google.com/apt/doc/apt-key.gpg"
165         state: present
166   - name: Add Kubernetes's stable repository
167     apt_repository:
168         repo: deb http://apt.kubernetes.io/ kubernetes-xenial main
169         state: present
170   - name: Install Kubernetes kubelet
171     apt: name=kubelet state=present
172   - name: Install Kubernetes kubeadm
173     apt: name=kubeadm state=present