ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

ec2を起動・停止をシェルで実行できる&起動したらRoute53にIPを紐付けてくれるシェルスクリプトつくったった

aws便利ですよね。apiが豊富なのがたまらんんんんん。

しかし、停止漏れを帰る前にブラウザでチェックとか。起動したらRoute53でパブリックIPを紐付ける作業とか、何度もやってくるとめんどくさくなってきます。EIP使えばいいじゃんと思うかもしれませんが、EC2が起動していないときはEIP解放しないと課金されるんですよね。先月まる1ヶ月解放しないで放っておいたらなんと6ドル!

もっとコストを抑えたい、だが、何度も手を動かすのは面倒。ということで久々にシェルスクリプト組んだ。

github.com

github.com

正直しょぼいお(^ω^ = ^ω^)おっおっおっ

こいつらJenkinsと組み合わせたらそもそもシェルも叩かなくていいので楽ですね。本当いい世の中。えっ、Readme?今度かく。

俺がデータセンターのインフラ担当のときは、雨の日も風邪の日も台風の日も(長くなりそうなのでまた今度

Djangoのチュートリアル中にマイグレーションでエラー

ブログサイトを作ろうとして、modelをこんな感じで作った。

from django.db import models

class Post(models.Model):
  contents  = models.TextField(max_length=5000)
  post_date = models.DateTimeField('date published')

class Tag(models.Model):
  tag_name = models.CharField(max_length=200)
  post     = models.ManyToManyField(Post)

分かる人はわかると思うが、これじゃダメだ。これではPostがManyで、TagがOneになっている。

やりたいことはOneToMany(PostがOneで、TagがMany)だ。

ということで修正する。

from django.db import models

class Tag(models.Model):
  tag_name = models.CharField(max_length=200)

class Post(models.Model):
  contents  = models.TextField(max_length=5000)
  post_date = models.DateTimeField('date published')
  tag_name  = models.ManyToManyField(Tag)

(なぜか宣言順によみこむようになっているので、Post -> Tagの順で書くとエラーになるのでひっくり返した)

っつこーとで、sqlを反映させる。

$ $ python manage.py migrate
Operations to perform:
  Apply all migrations: contenttypes, auth, admin, posts, sessions
Running migrations:
  No migrations to apply.
  Your models have changes that are not yet reflected in a migration, and so won't be applied.
  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

!?

エラーがでた。

ぐぐってみると、まずはファイルを作成してから、migrationを実行しなさいとのこと。

$  python manage.py makemigrations posts
Migrations for 'posts':
  0002_auto_20160109_2157.py:
    - Remove field post from tag
    - Add field tag_name to post

$ python manage.py migrate
Operations to perform:
  Apply all migrations: contenttypes, sessions, posts, auth, admin
Running migrations:
  Rendering model states... DONE
  Applying posts.0002_auto_20160109_2157... OK

この順番で進めたらできた。

なるほど。わかりやすい。

しかし、簡単に管理画面ができた。これすごい。