[switchboard] Add create_chrome_bot_user Ansible role.

Bug: skia:12063
Change-Id: I16cd7cfd9f3313af2f48e6a848a93eae170a74b9
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/434696
Reviewed-by: Ravi Mistry <rmistry@google.com>
diff --git a/skolo/ansible/switchboard/roles/create_chrome_bot_user/README.md b/skolo/ansible/switchboard/roles/create_chrome_bot_user/README.md
new file mode 100644
index 0000000..eba5511
--- /dev/null
+++ b/skolo/ansible/switchboard/roles/create_chrome_bot_user/README.md
@@ -0,0 +1,26 @@
+# Role Name
+
+`create_chrome_bot_user`
+
+## Description
+
+Creates the 'chrome-bot' user.
+
+## Variables Required
+
+This role requires the `secrets.skolo_password`, which is loaded via the
+required role `load_secret_vars`.
+
+Also requires `gather_facts` to detect the target operating system.
+
+## Example Playbook
+
+```
+# Create the chrome-bit user on all the RPis.
+- hosts: "{{ variable_hosts | default('rpis') }}"
+  user: chrome-bot
+  gather_facts: yes
+
+  roles:
+    - create_chrome_bot_user
+```
diff --git a/skolo/ansible/switchboard/roles/create_chrome_bot_user/meta/main.yml b/skolo/ansible/switchboard/roles/create_chrome_bot_user/meta/main.yml
new file mode 100644
index 0000000..adbb6e4
--- /dev/null
+++ b/skolo/ansible/switchboard/roles/create_chrome_bot_user/meta/main.yml
@@ -0,0 +1,3 @@
+---
+dependencies:
+  - role: load_secret_vars
diff --git a/skolo/ansible/switchboard/roles/create_chrome_bot_user/tasks/linux.yml b/skolo/ansible/switchboard/roles/create_chrome_bot_user/tasks/linux.yml
new file mode 100644
index 0000000..3b071fc
--- /dev/null
+++ b/skolo/ansible/switchboard/roles/create_chrome_bot_user/tasks/linux.yml
@@ -0,0 +1,33 @@
+- name: Make sure we have a 'sudo' group
+  group:
+    name: sudo
+    state: present
+
+- name: Allow 'sudo' group to have passwordless sudo
+  become: yes
+  lineinfile:
+    dest: /etc/sudoers
+    state: present
+    regexp: '^%sudo'
+    line: '%sudo ALL=(ALL) NOPASSWD: ALL'
+    validate: visudo -cf %s
+
+- name: Add sudo users to sudo group
+  become: yes
+  user:
+    name: chrome-bot
+    groups: sudo
+    append: yes
+
+- name: Create chrome-bot user.
+  become: yes
+  user:
+    name: chrome-bot
+    groups: plugdev,sudo
+    generate_ssh_key: yes
+    shell: /bin/bash
+    password: "{{ secrets.skolo_password | password_hash('sha256') }}"
+
+- name:
+    Reset ssh connection to allow user changes to affect 'current login user'
+  meta: reset_connection
diff --git a/skolo/ansible/switchboard/roles/create_chrome_bot_user/tasks/main.yml b/skolo/ansible/switchboard/roles/create_chrome_bot_user/tasks/main.yml
new file mode 100644
index 0000000..49f4f20
--- /dev/null
+++ b/skolo/ansible/switchboard/roles/create_chrome_bot_user/tasks/main.yml
@@ -0,0 +1,9 @@
+---
+- name: Create chrome-bot user for linux
+  import_tasks: linux.yml
+  when: ansible_facts['system']|lower == "linux"
+
+- name: Other platforms
+  fail:
+    msg: This system isn't supported, please add support.
+  when: ansible_facts['system']|lower != "linux"