Skip to content

Add a new CHIP

batchku edited this page Dec 29, 2016 · 9 revisions

Intro

Ansible seems to be the right way to do this.

Some additional references:

Before starting

We het up password-less ssh like this or this. The process involves:

  • Generate ssh keys if you don't have them:
    ssh-keygen -t rsa

If you see two files called "id_rsa" when you run: ls -l ~/.ssh

  • Copy your public ssh key (from the controller computer) to all hosts, one by one; easiest way is to install ssh-copy-id with brew and run it:

brew install ssh-copy-id
ssh-copy-id [email protected]

  • Install Ansible brew install ansible

Configure Chip to Connect to network

To setup wifi, we have to first connect to the CHIP over USB, and tell it what network to use.
NOTE: don't mess with /etc/network/interfaces like it says some places on the net..

Connect to CHIP over USB

Use this to connect to your chip for the first time, before networking is setup:

  • connect chip to computer with USB; Important to use a "good" USB cable, not one that's only for charging.
  • open terminal on computer, and run ls /dev/tty*
  • look for the item that has a name that's different than the others (!), usually tty.usbmodem...
  • in computer's terminal, type 'screen /dev/tty.usbmodem...', where the 'tty.usbmodem...' is whatever you saw in step 3.

Configure CHIP for your wifi network

  • list all connections:
    sudo nmcli co

  • list all available networks:
    nmcli device wifi list

  • connect to a wifi network; will reconnect to it on reboot:
    nmcli device wifi connect '(your wifi network name/SSID)' password '(your wifi password)' ifname wlan0

  • in our case with network called "Chipchestra" with password "jengajenga", it would be:
    nmcli device wifi connect 'Chipchestra' password 'jengajenga' ifname wlan0

Set up the hosts (i.e. the CHIPS):

Edit the file called "hosts" to your new chip

[chipchestra]
chip1 ansible_ssh_host=192.168.1.101 ansible_ssh_user=root ansible_ssh_pass=chip host_key_checking=false
chip4 ansible_ssh_host=192.168.1.104 ansible_ssh_user=root ansible_ssh_pass=chip host_key_checking=false

This creates a "group" called chipchestra with two hosts called chip1 and chip4; IP address and login credentials follow

Using Ansible Ad-Hoc Commands:

Ping all servers in "Chipchestra" group:
ansible chipchestra -m ping

Execute shell command on all hosts:
ansible chipchestra -s -m shell -a 'ls -l'

Use RSync to synchronize a folder on the controller computer with one on remote hosts:

ansible chipchestra -m synchronize -a "src=/Users/ali/Documents/Development/chip-party/chip-ansible/files/pd-patches dest=/samba-share/"

Using Ansible Playbooks

Run a playbook from the controller computer:
ansible-playbook playbook.yml

Clone this wiki locally