Completion of Generated Code in IntelliJ Rust
Recently, I’ve been doing a lot of work with Tonic, a Rust implementation of
the gRPC protocol. Like many implementations of gRPC, Tonic generates code from
the protocol buffers definitions at build time using the tonic-build
crate in a Cargo
build script, and by default puts them in the path referred to by OUT_DIR
. This has
the unfortunate side effect that tooling such as IntelliJ Rust
does
not see the generated code for the purposes of analysis and completion - something very
useful for the verbose generated protocol buffers code - unless you take some additional
steps.
cfgmgmtcamp 2020 - Slides
At cfgmgmtcamp 2020, I gave a talk entitled “Terraform Without The Mess”, in which we looked at how the history of features in Terraform affect the way we structure and write our Terraform configuration today, and make opinionated recommendations about how to structure modern Terraform code in a way which makes changes simple, predictable and safe.
[Read More]Services in GitHub Actions
While the features of GitHub Actions have existed on various platforms - Travis CI, AppVeyor and more recently Azure DevOps - the overall lack of billing and user management friction combined with the ability to run workflows on Linux, macOS and Windows make Actions very compelling.
[Read More]HashiConf EU 2019 - CloudInit: The Good Parts
At the 2019 edition of HashiConf EU in Amsterdam, I gave a talk entitled “CloudInit: The Good Parts” - a surprisingly long talk given the subject matter! I’ve had a number of requests for the slide deck, which I’m posting here along with the video from the event.
[Read More]Ubuntu 18.4 With Root ZFS on AWS
Last year, I posted about how to build Ubuntu 16.04 AMIs using HashiCorp Packer’s ebs-surrogate builder. Since then Ubuntu 18.04 has been released, and the process has changed a little.
[Read More]HashiDays Amsterdam 2018 - systemd: The Good Parts
Windows AMIs With Even Fewer Tears
Some recent image building work I was doing required images based on Windows Server. One of my more popular posts, Windows AMIs Without the Tears, detailed the fraught endeavor of making the WinRM management system work for this purpose, but since then Microsoft have substantially improved the situation by committing engineering effort to porting OpenSSH to Windows.
[Read More]Building ZFS Root Ubuntu AMIs With Packer
For all applications of importance or significance, we recommend using ZFS. On bare metal servers, ZFS is king of the hill, but on AWS and Linux it is still gaining traction. Data integrity guarantees as well as features such as “instantaneous” snapshots, compression, quotas, and the ability to send/receive datasets make ZFS very compelling. In this post, we’re going to demonstrate how to build from-scratch AMIs booting Ubuntu Linux with a ZFS root file system.
[Read More]Managing IAM Policies in HCL With Terraform
IAM Policy Documents are ubiquitous in AWS - they are used not only for standalone policies you might attach to users or roles, but also for S3 bucket policies, SNS topic policies and more. Unfortunately, the JSON syntax can be error prone to hand write, and the default mechanism for creating policies in many configuration management tools is template rendering.
[Read More]