Skip to content

Instantly share code, notes, and snippets.

@otiai10
Last active December 20, 2017 05:58
Show Gist options
  • Save otiai10/e7372817cfed79e0ff6ccb1ee1bbdfc8 to your computer and use it in GitHub Desktop.
Save otiai10/e7372817cfed79e0ff6ccb1ee1bbdfc8 to your computer and use it in GitHub Desktop.
Butlerはクソ

tl;dr

Cons

  1. 前提条件としてユーザにインストールさせるべきパッケージが多すぎるのが糞
  2. しかもそれをユーザに叩かせているのが糞
  3. ユーザに書かせる設定ファイルが多すぎて糞
  4. butler-jump, salt-master を常時upさせとくのが糞

Pros

  1. マルチプラットフォーム(自称)
  2. salt+airflowな環境がいつでも利用可能

Prerequisites

  1. Install terraform, then terraform init
  2. Launch AWS EC2 instance and get certificates on local
% mkdir -p ~/.ssh/butler-test
% ssh-keygen -f ~/.ssh/butler-test/id_rsa
% openssl rsa -in ~/.ssh/butler-test/id_rsa -outform pem > ~/.ssh/butler-test/butler-test.pem
% chmod 600 ~/.ssh/butler-test/butler-test.pem
% cd /tmp
% git clone https://github.com/llevar/butler.git
% cd butler
% cd ./examples/deployment/aws/large-cluster
diff --git a/examples/deployment/aws/large-cluster/vars.tf b/examples/deployment/aws/large-cluster/vars.tf
index 0ae0956..27d1370 100644
--- a/examples/deployment/aws/large-cluster/vars.tf
+++ b/examples/deployment/aws/large-cluster/vars.tf
@@ -1,14 +1,14 @@

 variable "region" {
-       default="CHANGE ME"
+       default="ap-southeast-2"
 }

 variable "access_key" {
-       default="CHANGE ME"
+       default="ほげら"
 }

 variable "secret_key" {
-       default = "CHANGE ME"
+       default = "ふがら"
 }

 variable "key_path" {
@@ -16,15 +16,15 @@ variable "key_path" {
 }

 variable "key_name" {
-       default = "sergei"
+       default = "butler-test"
 }

 variable "public_key_path" {
-       default="~/.ssh/sergei.pub"
+       default="~/.ssh/butler-test/id_rsa.pub"
 }

 variable "private_key_path" {
-       default="~/.ssh/sergei.pem"
+       default="~/.ssh/butler-test/butler-test.pem"
 }

 variable "username" {
@@ -37,25 +37,25 @@ variable "worker_count" {

 variable "aws_amis" {
   default = {
-    eu-central-1 = "ami-1d1ea272"
+    ap-southeast-2 = "ami-ff4ea59d"
   }
 }

 variable "salt-master-flavor" {
-       default="t2.xlarge"
+       default="t2.micro"
 }
 variable "worker-flavor" {
-       default="t2.xlarge"
+       default="t2.micro"
 }

 variable "db-server-flavor" {
-       default="t2.xlarge"
+       default="t2.micro"
 }

 variable "job-queue-flavor" {
-       default="t2.xlarge"
+       default="t2.micro"
 }

 variable "tracker-flavor" {
-       default="t2.xlarge"
-}
\ No newline at end of file
+       default="t2.micro"
+}
% terraform plan
...

Plan: 15 to add, 0 to change, 0 to destroy.

----------------
% terraform apply
* aws_instance.butler_jump: Error launching source instance: InvalidAMIID.NotFound: The image id '[ami-fa2df395]' does not exist
% grep ami-fa2df395 *.tf
butler-jump.tf:	ami = "ami-fa2df395"

ハードコーディングが糞

aws_instance.butler_jump: Still creating... (4m30s elapsed)
aws_instance.butler_jump: Still creating... (4m40s elapsed)
aws_instance.butler_jump: Still creating... (4m50s elapsed)
aws_instance.butler_jump: Still creating... (5m0s elapsed)
aws_instance.butler_jump: Still creating... (5m10s elapsed)
aws_instance.butler_jump: Still creating... (5m20s elapsed)
Error applying plan:

1 error(s) occurred:

* aws_instance.butler_jump: 1 error(s) occurred:

* ssh: handshake failed: ssh: unable to authenticate, attempted methods [publickey none], no supported methods remain

Terraform does not automatically rollback in the face of errors.
Instead, your Terraform state file has been partially updated with
any resources that successfully completed. Please address the error
above and apply again to incrementally change your infrastructure.

ハードコーディングが糞すぎる

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment