#random - March 2019

187 messages

A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you’d prefer to keep out of more focused work-related channels.
Archive: https://archive.sweetops.com/random/

Andrew Jeffree
Andrew Jeffreeover 7 years ago
sarkis
sarkisover 7 years ago(edited)
Curious anyone here made a pixelbook their everyday driver? Given crostini and debian available - don't see what other blockers there may be from doing so 🤔
Dave Yu
Dave Yuover 7 years ago
@sarkis i’ve been thinking about that also. it’s good enough for kelsey hightower, at least https://twitter.com/kelseyhightower/status/1097961280990720000
Gonzalo Peci
Gonzalo Peciover 7 years ago
FirstWorldProblems
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Nikola Velkovski
Nikola Velkovskiover 7 years ago
Nikola Velkovski
Nikola Velkovskiover 7 years ago
🤔
Richy de la cuadra
Richy de la cuadraover 7 years ago
Any body knows how to Connect two monitors in a MacBook air?
Alex Siegman
Alex Siegmanover 7 years ago
We use some of these at work: https://www.elgato.com/en/dock/thunderbolt-3
loren
lorenover 7 years ago
nice
Richy de la cuadra
Richy de la cuadraover 7 years ago
it’s too expensive :C
Valter Henrique
Valter Henriqueover 7 years ago
@Richy de la cuadra I've used this in my previous company and it worked really well!
https://www.youtube.com/watch?v=t2zA2gOeT8E
Richy de la cuadra
Richy de la cuadraover 7 years ago
perfect!
Milan Dasek
Milan Dasekover 7 years ago
Hi, guys can I ask for some guidance with https://github.com/cloudposse/prometheus-to-cloudwatch ?

I am looking for some "best practice" what and how it should be monitored / alarmed inside CloudWatch

for instance I am running EKS and have some limit of pods on each node and I am looking to get % of node occupancy

it seems easy like
sum(kube_pod_status_phase) / sum(kube_node_status_allocatable_pods) * 100 in prometheus
but I have no idea how can I do this in CW and have alarm on top of that
because it seems that CW cannot do this https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html
without having metrics connected to the "graphed metrics" and even if I do, there is a limit of 10 metrics underlying each alarm
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)over 7 years ago
@Milan Dasek prometheus-to-cloudwatch will scrape any Prometheus endpoint you point it to
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)over 7 years ago
it’s the job of the endpoint to expose the required metrics
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)over 7 years ago
in the example we use <https://github.com/helm/charts/tree/master/stable/kube-state-metrics>, take a look if it provides the metrics you want to see
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)over 7 years ago
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)over 7 years ago
https://github.com/cloudposse/prometheus-to-cloudwatch by itself does not create nor expose any metrics
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
Hi all, I’ve been researched about load test tools. Do you know any open source tools able to extract important metrics for a good analysis and report ?
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
This is our strategy
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
My intention is to study the performance of AWS Cloudfront and your bahavior across regions.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Sounds like that is better done using RUM
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
Awesome @Erik Osterman (Cloud Posse)!
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Felipe Ribeiro
Felipe Ribeiroover 7 years ago(edited)
Yeah man. An alternative open source do you know some like ?
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
the main tools about are private.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
I haven’t used one that is open source (Pingdom, Datadog and new relic offer it as a service )
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
That said this might get you on your way: https://github.hubspot.com/bucky/
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
yeah.. great !
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Now this is not for load testing per say, but what it will tell you is what your users are actually experiencing
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Load testing a CDN is kind of pointless
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
(Unless you have access to a bot net!)
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
lol.. It is not the point .. 🙂
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
A CDN is a resource as another . I understand that the CMP wants to guarantee your own SLA.
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
I want to study the flow when these resources are topping. you got it ?
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
Maybe not. But ok !
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
lol
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
Thanks for your help!
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Report back what you find!
Felipe Ribeiro
Felipe Ribeiroover 7 years ago
Sure !
Gonzalo Peci
Gonzalo Peciover 7 years ago
Gonzalo Peci
Gonzalo Peciover 7 years ago
like GitBooks but free
Dave Yu
Dave Yuover 7 years ago
@Felipe Ribeiro https://www.sitespeed.io/ is a great tool for testing web page performance, including measuring the requests from CDNs, if that’s what you’re after
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)over 7 years ago
Google have gained a Guinness World Record with this effort that took 2,795 node days of computation time and 17 PB of disk IO. As an interesting aside, Corey Quinn calculates it would have cost about $226k on GCP versus $180K on AWS
i5okie
i5okieover 7 years ago
man i don’t even know where else to talk about this.
I’m pushing heroku logs to graylog which goes into elasticsearch.
using graylog’s geo mapping plugin. but the _geolocation field a string. its a geo_point put of string type.
So in Graylog I can create a map graph.

well we’re using grafana. and worldmap plugin in grafana needs geo_point to be of geo_point type in elasticsearch.
argggh this is so annoying lol
Nikola Velkovski
Nikola Velkovskiover 7 years ago(edited)
you may already know this but logstash might help you, although you'll introduce some complexity but if it's only for that field you might want to check it out.
erik
erikover 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Who knew it was that expensive to operate the infrastructure of a popular ride hailing app? :-)
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)over 7 years ago
probably not optimized because of too many resources to manage 🙂
erik
erikover 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
chrism
chrismover 7 years ago
Nah its been in use a while; the RFC took the usual years to filter into place
chrism
chrismover 7 years ago
some isps use it as part of their expected role in blocking "child" nasties; which of course showed they could mass block ips and was quickly abused by copyright holders to block torrent sites
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
awesome visualization of the cloud landscape
erik
erikover 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
@Igor Rodionov ☝️
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
whats the state of the art in terms of “dotfile managers”
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
anything better than yadm?
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
kind’a wish there was a popular one in go - single installable binary
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
joshmyers
joshmyersover 7 years ago
@Milan Dasek late to the party but look at aggregation rules for precalculating and exposing a metric
Nikola Velkovski
Nikola Velkovskiover 7 years ago

When you, the student writer, understand that nobody wants to read your shit, you develop empathy.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Lol
erik
erikover 7 years ago
ldlework
ldleworkover 7 years ago
What is knative?
Alex Siegman
Alex Siegmanover 7 years ago(edited)
Anyone here familiar with Hashicorp Consul? I can't help but feel I'm doing something pretty wrong. I've got an autoscale group with 3 instances in it, each running the consul:1.4.4 docker container, but they won't bootstrap properly. once all three are up, if i restart the docker containers, they start to work. it's like the first instance starts up and doesn't find the other two, and the -retry-join option with aws discovery doesn't keep looking for new instances with the tag. Do I need to manually wait for at least 3 instances to be up before I start consul up on each of these instances?
Nikola Velkovski
Nikola Velkovskiover 7 years ago(edited)
Hi Alex, what does docker logs says for the consul containers?
Nikola Velkovski
Nikola Velkovskiover 7 years ago
Also which Os are you using and how do you bootstrap them ?
Nikola Velkovski
Nikola Velkovskiover 7 years ago
It's a long shot but maybe the bootstrap script runs before the network is up ?
Alex Siegman
Alex Siegmanover 7 years ago
So, the instances all show some combination of this:
    2019/03/27 15:33:22 [INFO] agent: Discovered LAN servers: 172.20.44.160 172.20.46.61
    2019/03/27 15:33:22 [INFO] agent: (LAN) joining: [172.20.44.160 172.20.46.61]
    2019/03/27 15:33:29 [ERR] agent: failed to sync remote state: No cluster leader
    2019/03/27 15:33:30 [WARN] raft: no known peers, aborting election
    2019/03/27 15:33:32 [INFO] agent: (LAN) joined: 1 Err: <nil>
    2019/03/27 15:33:32 [INFO] agent: Join LAN completed. Synced with 1 initial agents
Alex Siegman
Alex Siegmanover 7 years ago
And then it will fail with just a lot of
    2019/03/27 15:35:07 [ERR] agent: Coordinate update error: No cluster leader
    2019/03/27 15:35:25 [ERR] agent: failed to sync remote state: No cluster leader
Alex Siegman
Alex Siegmanover 7 years ago
but when i restart the first instance that launched, it started working right away
Alex Siegman
Alex Siegmanover 7 years ago
docker run -d --net=host --name=consul -v /consul:/consul consul:1.4.4 consul agent -server -ui -bind=172.20.36.141 -client=0.0.0.0 -retry-join 'provider=aws tag_key=aws:cloudformation:stack-name tag_value=dev-consul' -bootstrap-expect=3 -data-dir=/consul
Nikola Velkovski
Nikola Velkovskiover 7 years ago
hmm why do you have bind set to a instance ip ?
Nikola Velkovski
Nikola Velkovskiover 7 years ago
that doesn't seem right
Alex Siegman
Alex Siegmanover 7 years ago(edited)
It complains if i take the bind out, I'm pretty sure. Let me double check. Yeah,
==> Multiple private IPv4 addresses found. Please configure one with 'bind' and/or 'advertise'.
Nikola Velkovski
Nikola Velkovskiover 7 years ago

Environment Variables: Use the CONSUL_CLIENT_INTERFACE and CONSUL_BIND_INTERFACE environment variables. In the following example eth0 is the network interface of the container.

$ docker run \
  -d \
  -e CONSUL_CLIENT_INTERFACE='eth0' \
  -e CONSUL_BIND_INTERFACE='eth0' \
  consul agent -server -bootstrap-expect=3
Nikola Velkovski
Nikola Velkovskiover 7 years ago
taken from the docs
Alex Siegman
Alex Siegmanover 7 years ago
Yeah, saw that, but...
docker logs -f consul
==> Found address '172.20.36.141' for interface 'eth0', setting bind option...
==> Found address '172.20.36.141' for interface 'eth0', setting client option...
==> Multiple private IPv4 addresses found. Please configure one with 'bind' and/or 'advertise'.
Nikola Velkovski
Nikola Velkovskiover 7 years ago
ok
Nikola Velkovski
Nikola Velkovskiover 7 years ago
then try this
Nikola Velkovski
Nikola Velkovskiover 7 years ago
curl <http://169.254.169.254/latest/meta-data/local-ipv4>
Nikola Velkovski
Nikola Velkovskiover 7 years ago
or something similar to get the current up of the instance
Alex Siegman
Alex Siegmanover 7 years ago
Yeah, that's how I'm getting the address to setup the BIND-IP
Nikola Velkovski
Nikola Velkovskiover 7 years ago
argh sorry
Alex Siegman
Alex Siegmanover 7 years ago
No worries. If I could avoid having to do that metadata step I wouldn't have been sad
Nikola Velkovski
Nikola Velkovskiover 7 years ago
🙂
Alex Siegman
Alex Siegmanover 7 years ago
But, I'm not sure that's my problem anyways 😃
Nikola Velkovski
Nikola Velkovskiover 7 years ago
yeah doesnt seem like it
Nikola Velkovski
Nikola Velkovskiover 7 years ago
what about the node-ids of the consul servers ?
I just found an issue that it might be a problem
Nikola Velkovski
Nikola Velkovskiover 7 years ago
-disable-host-node-id
Nikola Velkovski
Nikola Velkovskiover 7 years ago(edited)
and also I assume that the /consul dir on the host OS is empty right?
Alex Siegman
Alex Siegmanover 7 years ago(edited)
Yeah, I guess my question is... does -retry-join periodically re-check for new instances with the provided tags
Nikola Velkovski
Nikola Velkovskiover 7 years ago(edited)

-retry-interval - Time to wait between join attempts. Defaults to 30s.

-retry-max - The maximum number of -join attempts to be made before exiting with return code 1. By default, this is set to 0 which is interpreted as infinite retries.
Nikola Velkovski
Nikola Velkovskiover 7 years ago
so it's infinite
Nikola Velkovski
Nikola Velkovskiover 7 years ago
I was just checking my old working docker command for consul and everything seems to be the same
Nikola Velkovski
Nikola Velkovskiover 7 years ago
you just don't have the -datacenter argument
Nikola Velkovski
Nikola Velkovskiover 7 years ago(edited)
but it defaults to dc1
Alex Siegman
Alex Siegmanover 7 years ago
Yeah, I'm okay with dc1 for now
Alex Siegman
Alex Siegmanover 7 years ago
/consul/ on the host only contains an empty /consul/config file because it complained otherwise
Alex Siegman
Alex Siegmanover 7 years ago
Curious why that retry didn't find new instances
Alex Siegman
Alex Siegmanover 7 years ago(edited)
Good to know it should work that way. Downside, testing cycle for a "new" cluster is like... as long as it takes autoscaling to spin up 3 new instances after I can the existing ones. I didn't see that it was working that way, but, I'll poke around a bit more and find out.
Nikola Velkovski
Nikola Velkovskiover 7 years ago
hmmm I don't think consul needs to persist it's data
Nikola Velkovski
Nikola Velkovskiover 7 years ago
you should definitelly try running it without that
Alex Siegman
Alex Siegmanover 7 years ago(edited)
without -data-dir? It was giving me grief, let me try though. Yeah.
$ docker run -d --net=host --name=consul -v /consul:/consul consul:1.4.4 consul agent -server -ui -bind=$(curl -s <http://169.254.169.254/latest/meta-data/local-ipv4>) -client=0.0.0.0 -retry-join 'provider=aws tag_key=aws:cloudformation:stack-name tag_value=dev-consul' -bootstrap-expect=3
86ba1b7d7a420374d971969daade4835fa5f554b3f0ec2ad4819f6cec39dde6a
[ec2-user@ip-172-20-36-141 ~]$ docker logs -f consul
==> data_dir cannot be empty
Nikola Velkovski
Nikola Velkovskiover 7 years ago
argh yeah
Alex Siegman
Alex Siegmanover 7 years ago
It's fine, this is some fine tuning for me. Really, I'd love to see a working production-ready cluster built with autoscale groups in cloudformation, but all the stuff I find is really dated or incomplete
Alex Siegman
Alex Siegmanover 7 years ago
I feel like this should be a solved problem
Nikola Velkovski
Nikola Velkovskiover 7 years ago
well I had the smae but with terraform
Nikola Velkovski
Nikola Velkovskiover 7 years ago
and on a different os
Alex Siegman
Alex Siegmanover 7 years ago
What I have now was basically converted from various terraform modules, even hashicorps
Nikola Velkovski
Nikola Velkovskiover 7 years ago
but you are sure that -v /consul:/consul the dir on the host is empty ?
Alex Siegman
Alex Siegmanover 7 years ago
when the host first comes up, yes
Nikola Velkovski
Nikola Velkovskiover 7 years ago
ok so that's how you test, terminate all and wait
Nikola Velkovski
Nikola Velkovskiover 7 years ago
good
Alex Siegman
Alex Siegmanover 7 years ago
It will complain that /consul/config doesnt exist, so in my userdata I have
              # Consul data directory
              mkdir -p /consul
              chmod 777 /consul
              touch /consul/config
Nikola Velkovski
Nikola Velkovskiover 7 years ago
and I assume the ports are open between the instances ?
Nikola Velkovski
Nikola Velkovskiover 7 years ago
so I just tried the command locally
Nikola Velkovski
Nikola Velkovskiover 7 years ago
and I get the same error but because I don't have other consuls to connect to
Nikola Velkovski
Nikola Velkovskiover 7 years ago

docker run --net=host --name=consul4 consul:1.4.4 consul agent -server -ui -bind=192.168.10.181 -client=0.0.0.0 -retry-join 'provider=aws tag_key=aws:cloudformation:stack-name tag_value=dev-consul' -bootstrap-expect=3 --data-dir=/consul
bootstrap_expect > 0: expecting 3 servers
==> Starting Consul agent...
==> Consul agent running!
           Version: 'v1.4.4'
           Node ID: 'ba7904d7-c5ef-2547-01d6-15988833964c'
         Node name: 'awesome-pc'
        Datacenter: 'dc1' (Segment: '<all>')
            Server: true (Bootstrap: false)
       Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)
      Cluster Addr: 192.168.10.181 (LAN: 8301, WAN: 8302)
           Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false

==> Log data will now stream in as it occurs:

    2019/03/27 19:42:09 [INFO] raft: Initial configuration (index=0): []
    2019/03/27 19:42:09 [INFO] raft: Node at 192.168.10.181:8300 [Follower] entering Follower state (Leader: "")
    2019/03/27 19:42:09 [INFO] serf: EventMemberJoin: awesome-pc.dc1 192.168.10.181
    2019/03/27 19:42:09 [INFO] serf: EventMemberJoin: awesome-pc 192.168.10.181
    2019/03/27 19:42:09 [INFO] consul: Handled member-join event for server "awesome-pc.dc1" in area "wan"
    2019/03/27 19:42:09 [INFO] discover-aws: Address type  is not supported. Valid values are {private_v4,public_v4,public_v6}. Falling back to 'private_v4'
    2019/03/27 19:42:09 [INFO] discover-aws: Region not provided. Looking up region in metadata...
    2019/03/27 19:42:09 [INFO] consul: Adding LAN server awesome-pc (Addr: tcp/192.168.10.181:8300) (DC: dc1)
    2019/03/27 19:42:09 [INFO] agent: Started DNS server 0.0.0.0:8600 (udp)
    2019/03/27 19:42:09 [INFO] agent: Started DNS server 0.0.0.0:8600 (tcp)
    2019/03/27 19:42:09 [INFO] agent: Started HTTP server on [::]:8500 (tcp)
    2019/03/27 19:42:09 [INFO] agent: started state syncer
    2019/03/27 19:42:09 [INFO] agent: Retry join LAN is supported for: aliyun aws azure digitalocean gce k8s os packet scaleway softlayer triton vsphere
    2019/03/27 19:42:09 [INFO] agent: Joining LAN cluster...
    2019/03/27 19:42:16 [ERR] agent: failed to sync remote state: No cluster leader
    2019/03/27 19:42:19 [WARN] raft: no known peers, aborting election
    2019/03/27 19:42:21 [ERR] agent: Join LAN: discover-aws: GetInstanceIdentityDocument failed: EC2MetadataRequestError: failed to get EC2 instance identity document
caused by: RequestError: send request failed
caused by: Get <http://169.254.169.254/latest/dynamic/instance-identity/document>: dial tcp 169.254.169.254:80: connect: no route to host
    2019/03/27 19:42:21 [WARN] agent: Join LAN failed: No servers to join, retrying in 30s
Alex Siegman
Alex Siegmanover 7 years ago
Yeah, exactly. When the first instance is launched by the ASG, it only sees one instance (itself) from the -retry-join option I have
Nikola Velkovski
Nikola Velkovskiover 7 years ago
but check the last message
Alex Siegman
Alex Siegmanover 7 years ago
The second one sees two, the third one then sees all three. I restart the first one, it sees all three, a leader is elected
Alex Siegman
Alex Siegmanover 7 years ago
Oh yeah, I don't remember seeing that message. Let me can my instances and see what happens, only takes like 5 minutes
Nikola Velkovski
Nikola Velkovskiover 7 years ago
or just
Nikola Velkovski
Nikola Velkovskiover 7 years ago
use docker-compose and try to cluster 3 dockers with the same command
ldlework
ldleworkover 7 years ago(edited)
@Erik Osterman (Cloud Posse) @loren @keen I might be getting carried away myself: https://gist.github.com/dustinlacewell/59dc2319812c3b6f3083b71aed046d05
ldlework
ldleworkover 7 years ago
That last one is pretty dope though. It opens an SSH tunnel through an EC2 instance to RDS, then starts a Docker container of the service that uses the DB to run migrations, while pointing the Docker container at localhost (because there is a tunnel) and then it kills the SSH tunnel.
ldlework
ldleworkover 7 years ago
Pretty handy 😂
ldlework
ldleworkover 7 years ago
Overall, getting pretty DRY
loren
lorenover 7 years ago
it's clear enough to me 😉
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
LGTM too
erik
erikover 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
I didn't know you could do something like that
ldlework
ldleworkover 7 years ago
Me either until a couple hours ago
ldlework
ldleworkover 7 years ago
Functions too!
ldlework
ldleworkover 7 years ago
Pretty dope I can now do make secret SECRET=db_password or make output MODULE=aurora RESOURCE=endpoint to get secrets or Terraform outputs respectively
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
have you checked out #variant?
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
it's make on steroids
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago(edited)
it allows for the definition of more user-friendly cli tools the way we use make (or even call make from variant)
ldlework
ldleworkover 7 years ago
I'll definitely look into it
Nikola Velkovski
Nikola Velkovskiover 7 years ago
Travis is really having a bad week so far.
Igor
Igorover 7 years ago
CircleCi is as well
ldlework
ldleworkover 7 years ago
I checked out Variant but it seems quite limited compared to make, even in the pretty basic ways I use make. I guess if you don't care about DRYness at all Variant is fine. It does produce a helpful usage string. @Erik Osterman (Cloud Posse) were you saying that you use Variant as a frontend to make?
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
variant is truly make on steroids
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
it's not as well documented b/c that's a lot of work 😃
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
also, keep in mind you can use YAML anchors to keep things DRY
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
and yes, you can call out to make from variant
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago(edited)
you can call out to anything from variant. the key is variant gives you a modern cli interface so that you can combine a mishmash of tools and present a common interface for all of them
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
looking at all of his integration tests, you can see how to use it
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
(@mumoshu is in #variant as well)
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
explanation of YAML anchors ☝️
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
also keep in mind that that variant bakes in documentation to each command, while in make there's none of that
erik
erikover 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
the *exit_on_errors is an example of a YAML anchor
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago(edited)
that's very DRY
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
you can take the output from one task and use it as input to another task
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
you can do conditionals:
erik
erikover 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
you can test your tasks, so it's clear how they logically relate to each other
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
You can get parameter validation
erik
erikover 7 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
no way native way to do that in make
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
ldlework
ldleworkover 7 years ago
Yeah if I try to introduce this people will throw a fit about the lack of documentation but thank you for pointing out that it does have some refactorability.
ldlework
ldleworkover 7 years ago
Maybe I'll just throw it ontop just to call make at first and get people hooked on the self-documenting nature 🙂
Jan
Janover 7 years ago
A great laugh for yall 🙂
ldlework
ldleworkover 7 years ago
i love this meme
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)over 7 years ago
Some interesting projects by Samsung: https://github.com/samsung-cnct
ldlework
ldleworkover 7 years ago
Anyone play Go?