the setup
posted: Mon, Jun 12, 2023 | tagged: projects dev electronics fec
return to project home | resources
getting started
Let's get our environment setup. All of the contents of these lessons assume a few things:
- a vanilla install of one of the Ubuntu flavors (we're using Ubuntu Mate 22.04 LTS)
- a local admin user
- a willingness to get your hands dirty, and maybe deal with some "less-than-optimized" code (I'm using this as a learning opportunity too)
the kit
- Laptop/desktop or VM (as above, but if using a VM you'll need USB passthrough and I have not tested this)
- Freenove Ultimate Start Kit for Raspberry Pi Pico W (Amazon, includes Pico W)
- Multimeter
setup
Download and install your preferred version of Ubuntu desktop edition on a laptop or as a virtual machine. As of the time of this writing, I do not have an unattended installer for this process. But that is one of the many things I may develop over time.
Once your OS is up and running, you can then leverage the baseline configuration defined below (eventually this will be scripted). We'll be leveraging some bash scripting and Ansible to configure our environment. If you are unfamiliar, Ansible is a configuration management solution that can automate builds and configurations of systems. This provides for an idempotent environment from which we can work. If you have some chops with Ansible, you can go ahead and tweak the files in the repo to your liking.
baseline configuration
Please note, this is a non-production and not overly secure configuration. Use with appropriate caution.
Open your terminal application on Linux, and let's add your user to the visudo.
sudo visudoAt the end of the file, add the following line of code (replacing [your_username] with your logged in user account)
[your_username] ALL=(ALL) NOPASSWD: ALLSave and close your file. Then close and relaunch your terminal and test executing a sudo command. If not prompted for a password, the configuration worked.
Next we'll generate a SSH key. Ansible will use this key to manage your host over a SSH connection. If you'd like a more in-depth guide for configuring the SSH key, Digital Ocean has a great write-up. But for quick and dirty, in your terminal, execute the following code:
ssh-keygenAccept the defaults, you'll hit enter a few times. Then we'll quickly install open-ssh server.
sudo apt install openssh-server -yNow we'll install the key locally with SSH so Ansible can do it's thing here shortly (replacing [your_username] with your logged in user account).
ssh-copy-id -i ~/.ssh/id_rsa.pub [your_username]@localhostNow we'll install the Python package manager, Pip.
sudo apt install python3-pip -yNow we can install Ansible.
pip3 install ansibleWe'll make one edit to our terminal environment configuration file so we can execute Ansible tasks more easily. Edit your .bashrc file by opening the file for edit with a text editor:
nano ~/.bashrcNow add the following line to the end of the file:
export PATH=$PATH:~/.local/binSave and exit the file. Our baseline configuration is done. We'll move on to installing packages and collecting files for use in our projects.
system configuration via Ansible
For the following to work, please clone files from this Github Repo
Navigate to where you saved the files from the repo. Within the ansible folder, you'll find a vars.yml file. Edit that file and replace my_username with your logged in user account. Please keep the account name in quotes. Save and close the file.
Look over the files in the tasks folder to see what they are doing. The code is commented, and is still a bit of a work in progress. As of the time of this writing, I'm not handling a few things as efficiently as I could. So please recommend any adjustments or corrections with a pull request.
From within your terminal, navigate to the main ansible folder and kick off the playbook as follows (use at your own risk!):
ansible-playbook -i inventory playbook.ymlThis will take several minutes to execute. You can add the -v flag to see more verbose output while the playbook executes.
This ends the configuration and you're ready to start jumping into the lessons which you'll find back on the Friends in Electronics page.