I wasted an hour trying to figure out how I converted `index.md` to
`index.html` (`pandoc`? `hugo`?), only to discover that it was never the
true source, I had merely converted then cut-and-pasted to the
hand-curated `index.html`.
Also modified simple so that _unit_ would pass and _integration_ would
fail. If swapped, then _unit_ would fail and _integration_ would never
run.
fixes:
```
error: invalid configuration:
unknown/extra keys:
- jobs[0].plan[0].config.image
- jobs[0].plan[0].config.tags
```
When queried with a mixed-case domain, e.g. "SsLiP.Io", the A and AAAA
records are properly returned. Previously they weren't. This is a
problem when Let's Encrypt queries with a mixed-case domain, which it
does for reasons which are not clear:
<https://github.com/letsencrypt/boulder/issues/1243>
fixes:
```
Failed authorization procedure. sslip.io (http-01): urn:acme:error:unknownHost :: The server could not resolve a domain name :: No valid IP addresses found for sslip.io
```
- cert is from LetsEncrypt
- Hetzner already "owns" the IPv6 version
- For simplicity, it should also own IPv4
This marks a milestone in the sslip.io; its original purpose was to use
a wildcard certificate, and now we're hosting the domain using a
LetsEncrypt certificate. My, how the world has changed.
- Like xip.io, except
- allow dashes as well as dots
- allow IPv6
- allow branding
- allow wildcard TLS
We deprecate the old message, which was about using SSL.
Instead, we use a filler "x{0}", i.e. "'x' appearing exactly
zero times" to separate the parentheses.
fixes:
```
Task 21945 | 00:31:48 | Error: Unable to render instance groups for deployment. Errors are:
- Unable to render jobs for instance group 'concourse'. Errors are:
- Unable to render templates for job 'pdns'. Errors are:
Variable name '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?' must only contain alphanumeric, underscores, dashes, or forward slash characters
```
- api.system.2a01-4f8-c17-b8f--2.sslip.io ➡ 2a01:4f8:c17:b8f::2
- `dashed` domains only (e.g. only "fe80-2a01-4f8-c17--de0e" not
"fe80.2a01.4f8.c17..de0e"; DNS doesn't allow two dots next to each
other.
- mirrored from https://github.com/cunnie/bin/blob/master/pdns_pipe.sh
which has colocated tests.
- DNS is flaky, and sometimes tests fail for spurious reasons
(e.g. <https://ci.nono.io/teams/main/pipelines/sslip.io/jobs/check-dns/builds/1621>)
fixes
```
dig: couldn't get address for 'ns-he.nono.io.': not found
nameserver ns-he.nono.io.'s NS records match whois's ["ns-azure.nono.io.", "ns-aws.nono.io.", "ns-he.nono.io.", "ns-gce.nono.io."], `dig +short ns sslip.io @ns-he.nono.io.` (FAILED - 1)
```
- causes BOSH interpolation to become confused
- separate parentheses using null-string "x{0}"
fixes:
```
Task 19122 | 15:47:01 | Error: Unable to render instance groups for deployment. Errors are:
- Unable to render jobs for instance group 'concourse'. Errors are:
- Unable to render templates for job 'pdns'. Errors are:
Variable name '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?' must only contain alphanumeric, underscores, dashes, or forward slash characters
```
- improperly templated with tabs:
```yaml
pipe: "#!/usr/bin/env bash\n#\n# Originally written by Sam Stephenson for xip.io\nset
-e\nshopt -s nocasematch\n\n# Configuration\n#\n# Increment this timestamp
```
- properly templated without:
```yaml
pipe: |
#!/usr/bin/env bash
#
# Originally written by Sam Stephenson for xip.io
```
fixes:
```
Task 19122 | 15:47:01 | Error: Unable to render instance groups for deployment. Errors are:
- Unable to render jobs for instance group 'concourse'. Errors are:
- Unable to render templates for job 'pdns'. Errors are:
Variable name '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?' must only contain alphanumeric, underscores, dashes, or forward slash characters
```
- previously Name Server line began with "NS"
- now they begin with "Name Server"
- fixed typo
fixes:
```
1) sslip.io should have at least 2 nameservers
Failure/Error: expect(whois_nameservers.size).to be > 1
expected: > 1
got: 0
# ./sslip.io/spec/check-dns_spec.rb:37:in `block (2 levels) in <top (required)>'
```
Works fine on macOS; blows up on Linux.
fixes:
```
/bin/bash: - : invalid option
Usage: /bin/bash [GNU long option] [option] ...
/bin/bash [GNU long option] [option] script-file ...
```
Admittedly it's overkill to use RSpec to run a set of assertions against
a DNS server -- a simple shell script would have been shorter and more
understandable. We are using RSpec merely to practice using RSpec.
Also, RSpec is not quite appropriate because we're not testing a Ruby
class. In fact, we're not test Ruby code at all. So we should not be
using RSpec. Just sayin'.