Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 108 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,101 @@
![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/deeep-network/ansible_collections/badge)

# Setting Up Local Machine
- [Overview](#overview)
- [Virtual Machine Setup](#virtual-machine-setup)
- [macos (apple silicon)](#macos-apple-silicon)
- [orbstack - docs](#orbstack---docs)
- [linux/windows/macos (intel)](#linuxwindowsmacos-intel)
- [multipass - docs](#multipass---docs)
- [linux/windows/macos](#linuxwindowsmacos)
- [UTM - docs](#utm---docs)
- [Create Chef Habitat Account](#create-chef-habitat-account)
- [Create a Habitat Builder Account](#create-a-habitat-builder-account)
- [Create an Origin](#create-an-origin)
- [Create Personal Access Token](#create-personal-access-token)
- [Install pipx](#install-pipx)
- [MacOS](#macos)
- [Linux](#linux)
- [Other Install Methods](#other-install-methods)
- [Install Ansible](#install-ansible)
- [Verify Ansible collections](#verify-ansible-collections)
- [Install Molecule](#install-molecule)
- [Post Installation](#post-installation)
- [Getting Started](#getting-started)
- [Next Steps](#next-steps)

# Overview

Developing with bedrock requires a virtual machine, a habitat account, and other dependencies.

# Virtual Machine Setup
You'll need to install virtualization software on your host machine to run bedrock.

We leverage pipx to ensure that all programs and librarys we depend on can be installed globally and isolated with venvs out of the box. It's also supported by MacOS, Linux, and Windows.
On the DeEEP Device - the main Ansible Controller is the Device itself which in turn can manage the VM's (via Incus). Each VM is also an independent Ansible Controller for itself. This setup requires every role to be `localhost` first when developed. This isn't the normal way Ansible is meant to be used (push model) so there are some gotchas and things we do that are slightly out of the norm. Being `localhost` first however provides the VMs the ability to configure themselves when necessary. It's also important to note that if it works via `localhost` it will always work being pushed (not always the case in reverse).

> [!NOTE] For testing, we skip the Incus layer. Meaning the Ansible Controller for tests is your local machine (acting like the Device). Pushing directly to the VM running locally (managed by Orbstack, multipass, KVM, or LXD). This is meant to simplify the testing process. Especially since MacOS support for intel based CPU architecture is not well supported.

As such, depending on your development environment pick the most convenient virtualization software. Usually based on OS and CPU

---

### macos (apple silicon)

#### orbstack - [docs](https://docs.orbstack.dev/install)

```bash
brew install orbstack
```

---

### linux/windows/macos (intel)

#### multipass - [docs](https://multipass.run/install)

```bash
brew install --cask multipass
```

```bash
snap install multipass
```

---

### linux/windows/macos

> not well tested, tread carefully

#### UTM - [docs](https://mac.getutm.app/)

```bash
brew install --cask utm
```

# Create Chef Habitat Account
### Create a Habitat Builder Account

## Install pipx
For local development of Chef Habitat packages you’ll want to create your own Chef Habitat Builder account. It’s similar to a GitHub or a Docker repo, but stores Habitat Packages. (.hart files)

Set up your builder account at [bldr.habitat.sh](http://bldr.habitat.sh). (You’ll need a GitHub account to sign up)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The URL for the Habitat Builder site should use HTTPS instead of HTTP for better security. Please update the link from http://bldr.habitat.sh to https://bldr.habitat.sh to ensure secure connections when users access the site.

Suggested change
Set up your builder account at [bldr.habitat.sh](http://bldr.habitat.sh). (Youll need a GitHub account to sign up)
Set up your builder account at [bldr.habitat.sh](https://bldr.habitat.sh). (You'll need a GitHub account to sign up)

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.


### Create an Origin

Once signed into your habitat builder account, create a new origin by clicking the ‘Create Origin’ button. This origin will be used for local development of habitat packages.

Name your origin (perhaps use your full name). Set to “Private artifacts” and click “Save & Continue”

### Create Personal Access Token

Head to your profile and create an personal access token. Set this token to the environment on your host machine.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a minor grammatical error in this sentence: "create an personal access token" should be "create a personal access token" since "personal" begins with a consonant sound.

Suggested change
Head to your profile and create an personal access token. Set this token to the environment on your host machine.
Head to your profile and create a personal access token. Set this token to the environment on your host machine.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.


```bash
export HAB_AUTH_TOKEN='your-token-here'
```

# Install pipx

We leverage pipx to ensure that all programs and librarys we depend on can be installed globally and isolated with venvs out of the box. It's also supported by MacOS, Linux, and Windows.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a small typo in this sentence - "librarys" should be spelled "libraries".

Suggested change
We leverage pipx to ensure that all programs and librarys we depend on can be installed globally and isolated with venvs out of the box. It's also supported by MacOS, Linux, and Windows.
We leverage pipx to ensure that all programs and libraries we depend on can be installed globally and isolated with venvs out of the box. It's also supported by MacOS, Linux, and Windows.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.


### MacOS

Expand Down Expand Up @@ -59,48 +150,31 @@ or
source ~/.zshrc
```

---

## Setup for Local Virtual Machines

On the DeEEP Device - the main Ansible Controller is the Device itself which in turn can manage the VM's (via Incus). Each VM is also an independent Ansible Controller for itself. This setup requires every role to be `localhost` first when developed. This isn't the normal way Ansible is meant to be used (push model) so there are some gotchas and things we do that are slightly out of the norm. Being `localhost` first however provides the VMs the ability to configure themselves when necessary. It's also important to note that if it works via `localhost` it will always work being pushed (not always the case in reverse).

> [!NOTE] For testing, we skip the Incus layer. Meaning the Ansible Controller for tests is your local machine (acting like the Device). Pushing directly to the VM running locally (managed by Orbstack, multipass, KVM, or LXD). This is meant to simplify the testing process. Especially since MacOS support for intel based CPU architecture is not well supported.

As such, depending on your development environment pick the most convenient virtualization software. Usually based on OS and CPU

---
# Getting Started

### macos (apple silicon)
> **Important**: Before proceeding, ensure you have set your `HAB_AUTH_TOKEN` environment variable. This token is required for authenticating with the Habitat Builder service and is expected to be set before continuing.
>
> ```bash
> export HAB_AUTH_TOKEN='your-token-here'
> ```

#### orbstack - [docs](https://docs.orbstack.dev/install)
From the root of the bedrock repo run the following command:

```bash
brew install orbstack
molecule create
```

---

Comment thread
str11ngfello marked this conversation as resolved.
### linux/windows/macos (intel)

#### multipass - [docs](https://multipass.run/install)
This will create the virtual machine and install the needed dependencies. You can follow the creation process (or troubleshoot it) on the VM. For example, if using OrbStack, you can shell into the VM with the orb cli and follow the cloud-init logs:

```bash
brew install --cask multipass
> orb -m bedrock -u nerdnode
$bedrock> sudo tail -f /var/log/cloud-init-output.log
```
[More Orb Commands](https://docs.orbstack.dev/machines/commands)
# Next Steps

```bash
snap install multipass
```
Develop a new service with [coral-reef](https://github.com/deeep-network/coral-reef)

---

### linux/windows/macos

> not well tested, tread carefully

#### UTM - [docs](https://mac.getutm.app/)

```bash
brew install --cask utm
```