Skip to content

Commit

Permalink
Merge pull request #2 from ii/new-site
Browse files Browse the repository at this point in the history
add new site stuff
  • Loading branch information
cooldracula authored Dec 12, 2023
2 parents 9ac4126 + e809381 commit 3dbdff9
Show file tree
Hide file tree
Showing 176 changed files with 5,152 additions and 167 deletions.
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake .
17 changes: 15 additions & 2 deletions content/_index.org
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
#+title: ii.nz
#+title: Homepage
#+image: /assets/ii-fresh.png
#+image_alt_text: "the ii logo, bright yellow, filled with cartoon versions of software mascots from the various free software we use in our work."
#+exclude_footer: true

coming soon!
* Hello!
We are a tech company based in Aotearoa New Zealand. We develop and consult on
open-source, cloud-based solutions that focus on collaboration. Specializing in
cloud-native technology like Kubernetes, Talos, Knative, and more, our goal is
to contribute to community growth and wellbeing through service and technology.

Check out [[/projects/][the projects]] we work on, meet our [[/team][team]], read our [[/post/][blog]], or
[[mailto:[email protected]][say hello]]!


**Let's pair!**
3 changes: 3 additions & 0 deletions content/contact/_index.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#+title: Get in touch

Let us know how we can help
28 changes: 28 additions & 0 deletions content/post/5-usb-gadgets-for-everyone.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
+++
title = "5 Dollar USB Gadgets for Everyone"
date = 2015-12-06
author = ["Hippie Hacker"]
lastmod = "Sun Dec 06 00:10:35 NZDT 2015"
+++


In my work trying to create devices that can install OSes from scratch on computers and flash phones and embedded IoT devices, I'm always looking for things that can support being both a usb host and a usb gadget.

Think about your phone, how it works to connect a micro-B to charge and connect to it as a gadget to your computer, then when you connect a micro-A cable you plug mice, keyboard, and thumb drives into your phone.

As a usb host, you can plug a mouse, keyboard, and pretty much anything you'd plug into your computer to it. Allowing you to do things like:

* Format a thumb drive or microSD card
* bootstrap embedded devices like intel edison
* flash a phone

As a usb gadget, you can plug the device into a computer and have it show up as a usb keyboard, disk, network, and other interesting things.

* show up as a network adapter
* provide a web / programming interface to the gadget without needing internet
* send some keystrokes a computer
* present a dynamic USB cdrom / dvd drive
* re-install a computer from scratch combining keyboard and drive support
* install OSes to a drive hosted on the device and snapshot them

I'm looking to see if we can't get the new $5 RPi zero to [function as both](http://blog.ii.delivery/rpi-zero-gadget-support/).
208 changes: 208 additions & 0 deletions content/post/bringing-the-cloud-to-your-community.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
+++
title = "Bringing the cloud to your community"
author = ["Hippie Hacker"]
date = 2017-01-04
lastmod = 2017-01-04T16:00:03+13:00
tags = ["kubernetes", "cloud"]
categories = ["guides"]
draft = false
summary = "Creating local clouds should not be hard"
+++

# creating local clouds should not be hard

It should be easy to deploy complex cloud infrastructure onto _real hardware_
without having to be an IT guru. We want to use a $9 C.H.I.P flashed from the
web with a paperclip to setup the same open source cloud infrastructure used by
Google.

Several years ago we demoed a Banana Pi powering on and installing different
cloud operating systems to real hardware.

The advent of [Docker](https://www.docker.com/) and IoT provisioning platforms
that utilize containers like [Resin](http://resin.io/) are democratizing access
to deploy and manage complex infrastructure.

# Resin and IoT hardware can create and manage your local cloud

It just takes a few steps:

* flash a [C.H.I.P.](https://getchip.com/pages/chip) (or Raspberry Pi) with
Resin OS via the web
* connect the Resin device to some computers set to [netboot
PXE](https://en.wikipedia.org/wiki/Preboot_Execution_Environment)
* watch your Resin console as your computers are turned into a cloud
(Kubernetes running GitLab or OpenStack)

## Flash a CHIP (or Raspi) with Resin OS

We have recently pulled together a [Docker
build](https://gitlab.ii.org.nz/iichip/Hanlon/blob/resin/Dockerfile)
that we push to our resin project.

<figure class="oversized">
<img src="/images/2017/01/ii_k8s_resin.png" />
<figcaption>
</figcaption>
</figure>

## Connect the Resin device to some computers configured to netboot

Once the Resin + ii device is connected to our network we power on the servers.
This could be done manually, but what fun would that be?

<figure class="oversized">
<img src="/images/2017/01/ii_poweron.png" />
<figcaption>
</figcaption>
</figure>

We use some software that listens to the network boot requests and orchestrates
the installation of the OS installs called
[Hanlon](https://github.com/csc/Hanlon).

When the servers power up they register with the Hanlon. This process is [fairly
complex](https://github.com/csc/Hanlon/wiki/How-is-it-all-connected#breakdown)
but allows us to [save information about the server
hardware](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/node_setup.rb)
and the servers wait to be told what to do next via the [Hanlon
API](https://github.com/csc/Hanlon/wiki/Hanlon-API-Overview).

<figure class="oversized">
<img src="/images/2017/01/ii_register.png" />
<figcaption>
</figcaption>
</figure>

## Watch your Resin console as your computers are turned into a cloud

Once we have enough nodes, we use Hanlon info about the hardware (number of
cores for now) to [select the right
hardware](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/node_state.rb)
for the Kubernetes master (the one with the least cores) and allocate the rest
as minions.

<figure class="oversized">
<img src="/images/2017/01/ii_k8s_waiting.png" />
<figcaption>
</figcaption>
</figure>

This allows us to generate a local ssl Certificate Authority and [create signed
certificates](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/certs.rb)
for all our nodes.

<figure class="oversized">
<img src="/images/2017/01/ii_certs.png" />
<figcaption>
</figcaption>
</figure>

Now we tie it all together with [Hanlon tags, models, and policies per
node](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/hanlon.rb)
that deploy CoreOS.

<figure>
<img src="/images/2017/01/ii_provision_hanlon.png" />
<figcaption>
</figcaption>
</figure>

We wait for all the [CoreOS nodes to be provisioned and
available](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/hanlon.rb#L51),
logging the state changes along the way.

<figure class="oversized">
<img src="/images/2017/01/ii_os_complete.png" />
<figcaption>
</figcaption>
</figure>

Next we use chef-provisioning-ssh to [ensure each CoreOS node is
ready](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/via_ssh.rb#L10).

<figure class="oversized">
<img src="/images/2017/01/ii_k8s_ready.png" />
<figcaption>
</figcaption>
</figure>

Then the master [needs to be
initialized](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/via_ssh.rb#L46).

<figure>
<img src="/images/2017/01/ii_k8s_configure_master.png" />
<figcaption>
</figcaption>
</figure>

And then [the
minions](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/via_ssh.rb#L83).

<figure class="oversized">
<img src="/images/2017/01/ii_k8s_minions.png" />
<figcaption>
</figcaption>
</figure>

We [setup
kubectl](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/kubectl.rb)
to communicate to our new Kubernetes cluster.

<figure class="oversized">
<img src="/images/2017/01/ii_k8s_kubectl.png" />
<figcaption>
</figcaption>
</figure>

[Create Kubernetes
manifest](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/main.rb#L20)
specific to our [deploy of
gitlab](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/tree/master/provision/files).


<figure class="oversized">
<img src="/images/2017/01/ii_k8s_gitlab.png" />
<figcaption>
</figcaption>
</figure>

The end result is a gitlab instance running on kubernetes!

<figure class="oversized">
<img src="/images/2017/01/ii_k8s_pods.png" />
<figcaption>
</figcaption>
</figure>

We can looking up our service ip, which we can add to DNS.

<figure class="oversized">
<img src="/images/2017/01/ii_k8s_ingress.png" />
<figcaption>
</figcaption>
</figure>

## Start developing in your community on a local cloud

Yes... that's gitlab, deployed from any resin device, to real hardware running kubernetes.

<figure class="oversized">
<img src="/images/2017/01/ii_gitlab_running.png" />
<figcaption>
</figcaption>
</figure>

# Why is this important?

GitLab published a blog post detailing how quickly you can take your ideas to production using a local cloud

* [In 13 minutes from Kubernetes to a complete application development
tool](https://about.gitlab.com/2016/11/14/idea-to-production/)

**There are so many places to go from here. We are looking for funding and
people who share our passion for creating instant infrastructure that is easy
for others to use, change, and replicate.** Send [us an
email](mailto://ii.org.nz/) or give us a ring at +64 22 646 1502.


Loading

0 comments on commit 3dbdff9

Please sign in to comment.