https://github.com/txn2/txagent
Docker based iot container orchestration for arm based devices (Raspberry Pi / Orange Pi / Tinkerboard) or traditional servers.
https://github.com/txn2/txagent
Last synced: about 1 year ago
JSON representation
Docker based iot container orchestration for arm based devices (Raspberry Pi / Orange Pi / Tinkerboard) or traditional servers.
- Host: GitHub
- URL: https://github.com/txn2/txagent
- Owner: txn2
- License: mit
- Created: 2018-02-05T08:07:01.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-04-26T03:49:27.000Z (about 8 years ago)
- Last Synced: 2025-05-21T20:59:48.534Z (about 1 year ago)
- Language: Go
- Homepage: https://txn2.com
- Size: 32.2 KB
- Stars: 3
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# txagent - Simplified Docker container provisioning.
# Stable / Work in progress.
This code is used in production on a few hundred iot devices. It was developed for with a very specific, yet recurring use case. Professionally I develop software for a number of platforms, including iot. As a hobbyist, I have a dozen or so different devices that I provision with Docker. This project is in the early stages of becoming more general purpose. In the mean time, you may have a similar need. **txagent** is an uncomplicated way to provision iot devices running your Docker containers. Let me know if this project is useful to you and what features you would like to see.
----
This project is intended to be a very simple docker container for iot devices, that are able to run docker. **txagent** has been tested on a few arm based devices, but is primarily used for the Raspberry Pi.
Pushing updates and configuration to devices is a complex and complicated problem, having to keep track of each device and it's state. **txagent** uses a **pull** model for basic provisioning.
The container runs a compiled Go application that can be configured to get a remote or local json configuration file, then uses the configuration to pull, run and monitor containers.
## Supported Devices
Anything that can run Docker. (Windows is untested)
## Getting Started
The agent can be configured with environment variables, command line flags, or a combination on both. Command line argument will override environment variables.
### Environment Variables
| Prupose | Environment Variable | Flag | Default Value |
| ------- | -------------------- | ---- | ------------- |
| Container configuration. | AGENT_CFG_URL | -cfg | file://conf/defs.json |
| Repository authentication. | AGENT_AUTH_URL | -auth | file://conf/auth.json |
| Poll frequency. | AGENT_CFG_POLL | -poll | 30 |
| Remove existing containers on start. | | -rm | false |
## Testing (with source)
Get a list of commands.
```bash
go run ./agent.go --help
```
### Example #1: Run example configurations from source.
```bash
go run ./agent.go
```
## Using as a lib
see GoDocs
https://godoc.org/github.com/txn2/txagent/txagent
### Development
Uses [goreleaser](https://goreleaser.com):
Install goreleaser with brew (mac):
`brew install goreleaser/tap/goreleaser`
Build without releasing:
`goreleaser --skip-publish --rm-dist --skip-validate`
## TODO
- Get & check configuration on interval (ensure state)
- Configuration auth
- Validate configs
- Documentation, Use Case and Examples
## DONE
- Registry authentication
- Command line flag `--rm` to remove running containers
- Added command line flags `--cfg` and `--poll` (see `--help`)
- Run containers
- Pull containers
- Create volumes
- Create networks (if they do not exists)
- Load and marshal configuration json