| - hosts: all | |
| remote_user: chrome-bot | |
| become_user: root | |
| become: yes | |
| become_method: sudo | |
| vars: | |
| interface_templ: "interfaces.j2" | |
| expanded_interface: "/etc/network/interfaces" | |
| vars_prompt: | |
| - name: "interface" | |
| prompt: "What is ethernet interface? If you don't know, run ip addr first" | |
| private: no | |
| tasks: | |
| - name: Update and Upgrade | |
| apt: upgrade=safe update_cache=yes | |
| - name: Install openssh-server | |
| apt: name=openssh-server | |
| # These are needed to run swarming | |
| - name: Install libssl-dev | |
| apt: name=libssl-dev | |
| - name: Install openssl | |
| apt: name=openssl | |
| - name: Install time | |
| apt: name=time | |
| - name: Install build-essential | |
| apt: name=build-essential | |
| - name: Install swig | |
| apt: name=swig | |
| - name: Install python-m2crypto | |
| apt: name=python-m2crypto | |
| - name: Install ntpdate | |
| apt: name=ntpdate | |
| - name: Install python-pip | |
| apt: name=python-pip | |
| - name: Install ethtool | |
| apt: name=ethtool | |
| # These are needed to run our swarming tests | |
| - name: Install Beignet OpenCL driver | |
| apt: name=beignet-opencl-icd,ocl-icd-libopencl1 | |
| # These are needed for general use | |
| - name: Install collectd, without the JDK | |
| apt: name=collectd install_recommends=no | |
| - name: Get collectd config situated | |
| copy: src=../../common/collectd.conf dest=/etc/collectd/collectd.conf owner=root group=root mode=0644 | |
| - name: Fixing udev rules for Android and NVIDIA devices | |
| copy: src=../../common/udev-rules dest=/etc/udev/rules.d/51-android.rules owner=root group=root mode=0644 | |
| - name: Fix nsswitch.conf | |
| copy: src=../nsswitch.conf dest=/etc/nsswitch.conf | |
| - name: Start collectd | |
| service: name=collectd state=restarted enabled=true | |
| - name: create /b | |
| file: | |
| state: directory | |
| path: /b | |
| mode: 0777 | |
| owner: root | |
| group: root | |
| - name: Touch .boto | |
| file: | |
| path: /home/chrome-bot/.boto | |
| owner: chrome-bot | |
| group: chrome-bot | |
| state: touch | |
| mode: 0644 | |
| - name: make sudo reboot passwordless | |
| lineinfile: dest=/etc/sudoers line="chrome-bot ALL=NOPASSWD:/sbin/shutdown -r now" | |
| - name: disable wifi | |
| command: nmcli radio wifi off | |
| - name: Creates lightdm directory if it doesn't exist | |
| file: path=/etc/lightdm/lightdm.conf.d/ state=directory | |
| - name: enable auto-login | |
| blockinfile: | |
| dest: /etc/lightdm/lightdm.conf.d/50-myconfig.conf | |
| create: yes | |
| block: | | |
| [SeatDefaults] | |
| autologin-user=chrome-bot | |
| - name: "Checking MAC pause support" | |
| command: "/sbin/ethtool -A {{interface}}" | |
| register: mac_pause | |
| ignore_errors: True | |
| # This takes the pre-existing /etc/network/interfaces template | |
| # (which is a jinja2 template, as per ansible spec) and fills in | |
| # the interface name. | |
| - name: disable ethernet flow control | |
| # mac_pause.rc means the return code from the previous command (mac_pause) | |
| # The magic number 78 is returned when configuring MAC PAUSE is supported | |
| # but no params were passed in (which we did intentionally above.) | |
| # If MAC_PAUSE is not supported, something else will be returned | |
| # (e.g. 77 "Operation not supported" ) | |
| when: mac_pause.rc == 78 | |
| template: | |
| src: "{{interface_templ}}" | |
| dest: "{{expanded_interface}}" | |
| owner: root | |
| group: root | |
| mode: 0644 | |
| force: yes | |
| backup: yes |