/iohk-ops

NixOps deployment configuration for IOHK devops

Primary LanguageNix

Build status

Collection of tooling and automation to deploy IOHK infrastructure.

Structure

  • deployments - includes all NixOps deployments controlled via .hs scripts
  • modules - NixOS modules
  • lib.nix - wraps upstream <nixpkgs/lib.nix> with our common functions
  • scripts - has bash scripts not converted to Haskell/Turtle into Cardano.hs yet
  • default.nix - is a collection of Haskell packages
  • static includes files using in deployments
  • jobsets is used by Hydra CI
  • terraform - other AWS infrastructure
  • nix-darwin - deployment script and configurations for MacOS X machines

Getting SSH access

  1. Fork https://github.com/input-output-hk/iohk-ops
  2. Check out the master branch
  3. Add your username and SSH public key to the appropriate developer section of lib/ssh-keys.nix. Keys should remain sorted alphabetically by username.
  4. Submit a PR against master and let DevOps know.
  5. Wait until the DevOps team deploys the infrastructure cluster.

The io command

Sources for the iohk-ops tool are in the iohk directory.

Usage

After cloning this repo, start a nix-shell.

% nix-shell
[nix-shell:~/iohk/iohk-ops]$ io --help

For more documentation, see docs/iohk-ops-reference.md.

Development

To hack on the iohk-ops tool, use

% nix-shell -A ioSelfBuild
[nix-shell:~/iohk/iohk-ops]$ type io
io is a function
io ()
{
    cabal exec iohk-ops -- "$@"
}
[nix-shell:~/iohk/iohk-ops]$ io --help

This will provide a Haskell environment where you can use io to run the script or ghci for development:

[nix-shell:~/iohk/iohk-ops]$ ghci -iiohk/common
GHCi, version 8.2.2: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /home/rodney/config/.ghc/ghci.conf
λ> :l iohk/iohk-ops.hs

Run from anywhere

$(nix-build --no-out-link https://github.com/input-output-hk/iohk-ops/archive/master.tar.gz -A iohk-ops)/bin/iohk-ops --help