Intecture is an API for managing your servers. Visit intecture.io.
API docs can be found here: intecture.io/api/intecture_api/.
Intecture's APIs (cough and a binary) are the heart and soul of Intecture. Check out each component's README.md
for details:
- core - The core API that does all the heavy lifting
- bindings - Rust FFI and language bindings
- proj - Helpers and boilerplate for building Intecture projects
- agent - Tiny daemon that exposes the core API as a service (for your hosts!)
Intecture is pretty light on external dependencies. In fact, all you'll need to get started is Rust!
Once you've installed Rust, create a new Cargo binary project:
cargo new --bin
Next, add Intecture to your Cargo.toml
:
[dependencies]
futures = "0.1"
intecture_api = {git = "https://github.com/intecture/api", version = "0.4"}
tokio-core = "0.1"
This is all we need to do if we only want to manage the local machine. Just make sure you use the Local
host type, like so:
// You can ignore these two lines. They are boilerplate from `tokio-core` that
// drive Intecture's asynchronous API.
let mut core = Core::new().unwrap();
let handle = core.handle();
let host = Local::new(&handle).and_then(|host| {
// Do stuff on the local host...
});
// You can ignore this line. It is more `tokio-core` boilerplate.
core.run(host).unwrap();
You can find some basic examples here: core/examples. Also you should refer to the API docs: intecture.io/api/intecture_api/
To manage a remote machine with Intecture, you need to take a few extra steps. On the remote machine...
Clone this GitHub repository:
git clone https://github.com/intecture/api
Build the project:
cd api && cargo build --release
Then run the agent, specifying an address to bind to:
target/release/intecture_agent --address 0.0.0.0:7101
Remember, the agent must be running in order for the API to connect to this host.
Finally we can get back to what we came here for - Rust codez! To manage this machine, make sure you use the Plain
remote host type, like so:
let host = Plain::connect("<ip_of_host>:7101").and_then(|host| {
// Do stuff on the remote host...
});
Note the type is Plain
, rather than Remote
. At the moment, Intecture does no encryption, making it unsafe for use over insecure networks (i.e. the internet). The type Plain
signifies this. In the future we will add support for encrypted remote host types as well, but for now, we cannot recommend strongly enough that you only use this on a secure local network.
Check out RELEASES.md for details.