[ansible] raspberry pi setup

pull/28/head
Alpha Chen 5 years ago
parent 1e4ef18ab2
commit 5f0c1539c5

@ -0,0 +1,25 @@
# Attitude Adjuster
## Installation notes
1. [Download Raspberian Stretch Lite](https://www.raspberrypi.org/downloads/raspbian/)
1. Install Etcher: `brew cask install balenaetcher`
1. [Flash the SD card](https://www.raspberrypi.org/documentation/installation/installing-images/README.md)
1. [Enable SSH](https://www.raspberrypi.org/documentation/remote-access/ssh/)
1. Run the Ansible playbooks
- `ansible-playbook --extra-vars "ansible_user=pi" --ask-pass attitude-adjuster/bootstrap.yml`
- `ansible-playbook attitude-adjuster/main.yml`
1. Install Pi-hole
- `curl -sSL https://install.pi-hole.net | bash`
## Optional
1. Use `raspi-config` to set up the WiFi
- [Additional setup](https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md)
- Add `scan_ssid=1` to `/etc/wpa_supplicant/wpa_supplicant.conf`
- Restart WiFi: `wpa_cli -i wlan0 reconfigure`
1. Use `raspi-config` to set the keyboard layout

@ -0,0 +1,46 @@
- hosts: attitude-adjuster
become: yes
vars_files:
- vars.yml.private
tasks:
- name: change hostname to {{ ansible_hostname }}
hostname:
name: "{{ ansible_hostname }}"
notify: reboot
- name: update hostname in /etc/hosts
replace:
path: /etc/hosts
regexp: '(\s+)raspberrypi(\s+.*)?$'
replace: '\{{ ansible_hostname }}\2'
notify: reboot
- name: disable wifi
lineinfile:
path: /boot/config.txt
insertafter: dtoverlay
line: dtoverlay=pi3-disable-wifi
notify: reboot
- name: create user
user:
name: alpha
password: "{{ password | password_hash('sha512') }}"
shell: /bin/bash
- name: give user sudo access
lineinfile:
path: /etc/sudoers.d/alpha
line: "alpha ALL=(ALL) NOPASSWD: ALL"
create: yes
validate: visudo -cf %s
- name: add ssh keys
authorized_key:
user: alpha
key: https://github.com/kejadlen.keys
handlers:
- name: reboot
reboot:

@ -0,0 +1,17 @@
{
"bridge": {
"name": "Homebridge",
"username": "67:9E:AC:02:F4:51",
"port": 59377,
"pin": "617-05-928"
},
"platforms": [
{
"platform": "SmartThings",
"name": "SmartThings",
"app_url": "https://graph-na04-useast2.api.smartthings.com:443/api/smartapps/installations/",
"access_token": "d03f2c6e-36e4-4069-8b7a-a2fcb30c1d68",
"app_id": "d0549bc7-23cc-4355-b261-6bfe9e5e48b6"
}
]
}

@ -0,0 +1,113 @@
- hosts: attitude-adjuster
tasks:
- name: install dependencies
package:
name: "{{ item }}"
state: present
with_items:
- git
- vim
become: yes
# ssh
- hosts: attitude-adjuster
tasks:
- name: disable ssh password logins
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^(#\s*)?{{ item }} '
line: "{{ item }} no"
notify: reload ssh
with_items:
- ChallengeResponseAuthentication
- PasswordAuthentication
- UsePAM
become: yes
- name: disable pi user
user:
name: pi
password: !
become: yes
handlers:
- name: reload ssh
service:
name: ssh
state: reloaded
# Pi-Hole
- hosts: attitude-adjuster
tasks:
- name: clone the pi-hole repo
git:
repo: https://github.com/pi-hole/pi-hole.git
dest: ~/src/pi-hole
depth: 1
# ddclient
- hosts: attitude-adjuster
tasks:
- name: install ddclient
package:
name: ddclient
state: present
become: yes
- name: configure ddclient
copy:
src: ddclient.conf.private
dest: /etc/ddclient.conf
mode: go-r
become: yes
notify: restart ddclient
- name: enable ddclient
service:
name: ddclient
enabled: yes
become: yes
handlers:
- name: restart ddclient
service:
name: ddclient
state: restarted
become: yes
# Homebridge
- hosts: attitude-adjuster
tasks:
- name: install npm
package:
name: npm
state: present
become: yes
- name: install homebridge
npm:
name: "{{ item }}"
global: yes
with_items:
- homebridge
- homebridge-smartthings-tonesto7
become: yes
- name: create ~/.homebridge
file:
path: ~/.homebridge
state: directory
- name: copy homebridge config
copy:
src: config.json
dest: ~/.homebridge/config.json
Loading…
Cancel
Save