Skip to main content

Nameless Deploy Tools

Build Status Coverage Status Ruff

Released version 1.337

Nameless deploy tools are a set of tools to implement a true Infrastructure As Code workflow with various cloud infrastructure management tools. Currently supported tools are:

  • CloudFormation
  • AWS CDK
  • Serverless Framework
  • Terraform
  • Azure Resource Manager (with YAML syntax)
  • Bicep

Why Nameless?

A common analogy for cloud infrastructure has been to move from having pets with names that need lots of looking after, to cattle that has at most id's. It's time to move to the industrial age from the agrarian era. The infrastructure our applications runs now comes and goes, and we know at most some statistical information about the actual executions. Run times, memory usage, used bandwidth and the like. We no longer know even the id's of the things that actually run the code. Hence - nameless.

Rationale

We at Nitor are software engineers with mostly a developer or architect background, but a lot of us have had to work closely with various Operations teams around the world. DevOps has a natural appeal to us and immediately "infrastructure as code" meant for us that we should apply the best development practices to infrastructure development. It starts with version control and continues with testing new features in isolation and a workflow that supports this. Our teams usually take into use a feature branch workflow if it is feasible, and we expect all the tools and practices to support this. For infrastructure this type of branching means that you should be able to spin up enough of the infrastructure to be able to verify the changes you want to implement in production. Also, the testing environment should be close enough to the target environment for the results to be valid. So the differences between testing and production environments should be minimized and reviewable.

With the popular tools like Ansible, Terraform, Chef etc. you need to come up with and implement the ways to achieve the goals above. As far as I know, no tool besides ndt has at its core a thought-out way of a branching infrastructure development model.

What it is

nameless-deploy-tools works by defining Amazon Machine Images, Docker containers, Serverless services, and deploying CloudFormation stacks of resources. CloudFormation stacks can also be defined with AWS CDK applications. All of the above can also be deployed using Terraform.

Installation

Requires Python 3.9 or newer.

Use pipx or uv to install it globally in an isolated environment. pipx is the older and stable tool, uv is a new, much faster version.

pipx install nameless-deploy-tools
# or
uv tool install nameless-deploy-tools

Directly installing with pip is no longer supported by most Python distributions.

Getting started

To use nameless-deploy-tools you need to set up a project repository that describes the images you want to build, and the stacks you want to deploy them in. See ndt-project-template for an example.

Here are few commands you can use. All of these are run in your project repository root. You need to have AWS credentials for command line access set up.

  • To bake a new version of an image: ndt bake-image <image-name>
  • To build a new Docker container image ndt bake-docker <component> <docker-name>
  • To deploy a stack:
    • with a known AMI id: ndt deploy-stack <image-name> <stack-name> <AMI-id>
    • with the newest AMI id by a given bake job: ndt deploy-stack <image-name> <stack-name> "" <bake-job-name>
  • To undeploy a stack: ndt undeploy-stack <image-name> <stack-name>

For full list of commands see here

Faster shell complete

You can additionally use a faster register-complete by running ./faster_register_complete.sh. This compiles C++ programs from the files n_utils/nameless-dt-register-complete.cpp and n_utils/nameless-dt-print-aws-profiles.cpp, and replaces the Python versions of nameless-dt-register-complete and nameless-dt-print-aws-profiles with these much faster compiled binaries.

Documentation

Versioning

This library uses a simplified semantic versioning scheme: major version change for changes that are not backwards compatible (not expecting these) and the minor version for all backwards compatible changes. We won't make the distinction between new functionality and bugfixes, since we don't think it matters and is not a thing worth wasting time on. We will release often and if we need changes that are not comptatible, we will fork the next major version and release alphas versions of that until we are happy to release the next major version and try and have a painless upgrade path.

Development

uv is the recommended way to handle virtual environments for development.

Create a venv and install all dependencies:

uv sync --all-extras

You can then run commands directly with the venv using uv run, or activate the venv manually first. The uv default venv location is .venv.

source .venv/bin/activate
# or Windows
.venv\Scripts\activate

Dependencies

Python dependencies are specified in pyproject.toml. The requirements.txt file is generated by pip compile and should not be modified manually.

Use the provided shell script to update the requirements file. First install uv (recommended), or alternatively pip-tools using pipx. Then run:

./compile-requirements.sh
# See help
./compile-requirements.sh -h

Running tests

Using uv

uv run python -m pytest -v .

Inside active virtual env

Install test requirements:

pip install -r dev-requirements.txt

Run tests with Pytest:

python -m pytest -v .

Code formatting and linting

Code formatting and linting with ruff.

These are configured with a custom line length limit of 120. The configs can be found in pyproject.toml.

Usage:

ruff format
ruff check --fix

Using with pre-commit:

# setup to be run automatically on git commit
pre-commit install

# run manually
pre-commit run --all-files

Release

Use the provided shell script. Note that you need to have a venv with the extra dependencies installed active when running the script.

./release.sh
# See help
./release.sh -h

Metadata

Release files for nameless-deploy-tools 1.337

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nameless-deploy-tools 1.337
File Size Uploaded
nameless_deploy_tools-1.337.tar.gz 183.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nameless-deploy-tools 1.337
File Interpreter ABI Platform
nameless_deploy_tools-1.337-py3-none-any.whl Python 3 none any Details

Total release size: 432.2 kB

Release files / nameless_deploy_tools-1.337.tar.gz

Download URL nameless_deploy_tools-1.337.tar.gz
Size 183.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b803efed8538eda685d23aa865f0f97d2010296a98d41f68fb1aa224c43b1845
BLAKE2b-256 checksum
How to use checksums
33463c53cdcd9aece86250f94d422540e82ec8dfda07bed041358480fb20735d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / nameless_deploy_tools-1.337-py3-none-any.whl

Download URL nameless_deploy_tools-1.337-py3-none-any.whl
Size 249.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f032a54613a1daf69186c72a5446cd38f74f91b1b51d12666d3cf31086b23bab
BLAKE2b-256 checksum
How to use checksums
fe237a2e6e574f85f203de1092d6b0ef3f74acce388b71db1c211dfb4c4d769e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.337 This release

2 release files

1.336

2 release files

1.335

2 release files

1.334

2 release files

1.333

2 release files

1.332

2 release files

1.331

2 release files

1.330

2 release files

1.329

2 release files

1.328

2 release files

1.327

2 release files

1.326

2 release files

1.325

2 release files

1.324

2 release files

1.323

2 release files

1.322

2 release files

1.321

2 release files

1.320

2 release files

1.319

2 release files

1.318

2 release files

1.317

2 release files

1.316

2 release files

1.315

2 release files

1.314

2 release files

1.313

2 release files

1.312

2 release files

1.311

2 release files

1.310

2 release files

1.309

2 release files

1.308

2 release files

1.307

2 release files

1.306

2 release files

1.305

2 release files

1.304

2 release files

1.303

2 release files

1.302

2 release files

1.301

2 release files

1.300

2 release files

1.299

2 release files

1.298

2 release files

1.297

2 release files

1.296

2 release files

1.295

2 release files

1.294

2 release files

1.293

2 release files

1.292

2 release files

1.291

2 release files

1.290

2 release files

1.289

2 release files

1.288

2 release files

1.287

2 release files

1.286

2 release files

1.285

2 release files

1.284

2 release files

1.283

2 release files

1.282

2 release files

1.281

2 release files

1.280

2 release files

1.279

2 release files

1.278

2 release files

1.277

2 release files

1.276

2 release files

1.275

2 release files

1.274

2 release files

1.273

2 release files

1.272

2 release files

1.271

2 release files

1.270

2 release files

1.269

2 release files

1.268

2 release files

1.267

2 release files

1.266

2 release files

1.265

2 release files

1.264

2 release files

1.263

2 release files

1.262

2 release files

1.261

2 release files

1.260

2 release files

1.259

2 release files

1.258

2 release files

1.257

2 release files

1.256

2 release files

1.255

2 release files

1.254

2 release files

1.253

2 release files

1.252

2 release files

1.251

2 release files

1.250

2 release files

1.249

2 release files

1.248

2 release files

1.247

2 release files

1.246

2 release files

1.245

2 release files

1.244

2 release files

1.243

2 release files

1.242

2 release files

1.241

2 release files

1.240

2 release files

1.239

2 release files

1.238

2 release files

1.237

2 release files

1.236

2 release files

1.235

2 release files

1.234

2 release files

1.233

2 release files

1.232

2 release files

1.231

2 release files

1.230

2 release files

1.229

2 release files

1.228

2 release files

1.227

2 release files

1.226

2 release files

1.225

2 release files

1.224

2 release files

1.223

2 release files

1.222

2 release files

1.221

2 release files

1.220

2 release files

1.219

2 release files

1.218

2 release files

1.217

2 release files

1.216

2 release files

1.215

2 release files

1.214

2 release files

1.213

1 release file

1.212

2 release files

1.211

2 release files

1.210

1 release file

1.209

1 release file

1.208

1 release file

1.207

1 release file

1.206

1 release file

1.205

1 release file

1.204

1 release file

1.203

1 release file

1.202

1 release file

1.201

1 release file

1.200

1 release file

1.199

1 release file

1.198

1 release file

1.197

1 release file

1.196

1 release file

1.195

1 release file

1.194

1 release file

1.193

1 release file

1.192

1 release file

1.191

1 release file

1.190

1 release file

1.189

1 release file

1.188

1 release file

1.187

1 release file

1.186

1 release file

1.185

1 release file

1.184

1 release file

1.183

1 release file

1.182

1 release file

1.181

1 release file

1.180

1 release file

1.179

1 release file

1.178

1 release file

1.177

1 release file

1.176

1 release file

1.175

1 release file

1.174

1 release file

1.173

1 release file

1.172

1 release file

1.171

1 release file

1.170

1 release file

1.169

1 release file

1.168

1 release file

1.167

1 release file

1.166

1 release file

1.165

1 release file

1.164

1 release file

1.163

1 release file

1.162

1 release file

1.161

1 release file

1.160

1 release file

1.159

1 release file

1.158

1 release file

1.157

1 release file

1.156

1 release file

1.155

1 release file

1.154

1 release file

1.153

1 release file

1.152

1 release file

1.151

1 release file

1.150

1 release file

1.149

1 release file

1.148

1 release file

1.147

1 release file

1.146

1 release file

1.145

1 release file

1.144

1 release file

1.143

1 release file

1.142

1 release file

1.141

1 release file

1.140

1 release file

1.139

1 release file

1.138

1 release file

1.137

1 release file

1.136

1 release file

1.135

1 release file

1.134

1 release file

1.133

1 release file

1.132

1 release file

1.131

1 release file

1.130

1 release file

1.129

1 release file

1.128

1 release file

1.127

1 release file

1.126

1 release file

1.125

1 release file

1.124

1 release file

1.123

1 release file

1.118

1 release file

1.117

1 release file

1.116

1 release file

1.115

1 release file

1.114

1 release file

1.113

1 release file

1.112

1 release file

1.111

1 release file

1.110

1 release file

1.109

1 release file

1.108

1 release file

1.107

1 release file

1.106

1 release file

1.105

1 release file

1.104

1 release file

1.103

1 release file

1.102

1 release file

1.101

1 release file

1.100

1 release file

1.99

1 release file

1.98

1 release file

1.97

1 release file

1.96

1 release file

1.95

1 release file

1.94

1 release file

1.93

1 release file

1.92

1 release file

1.91

1 release file

1.90

1 release file

1.89

1 release file

1.88

1 release file

1.87

1 release file

1.86

1 release file

1.85

1 release file

1.84

1 release file

1.83

1 release file

1.82

1 release file

1.81

1 release file

1.80

1 release file

1.79

1 release file

1.78

1 release file

1.77

1 release file

1.76

1 release file

1.75

1 release file

1.74

1 release file

1.73

1 release file

1.72

1 release file

1.71

1 release file

1.70

1 release file

1.69

1 release file

1.68

1 release file

1.67

1 release file

1.66

1 release file

1.65

1 release file

1.64

1 release file

1.63

1 release file

1.62

1 release file

1.61

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page