AnsibleでのGCEインスタンス立ち上げをあきらめた

AnsibleでGCEインスタンスを立ち上げようと思ったけど、 Preemptibleという横取りという意味の一日以内に落ちるけど、安い、AWSのスポットみたいなの、を指定する設定がなかったので やめました。 遊ぶだけなので、コスパ重視

とは言っても、手元のMacからAPI叩けばいいんですが、 うちでは、Mac mini を使い、外では MacBookAirを使い、家ではMacBookAirは嫁専用機と貸していて タイミングが悪いと、Ubuntuのノートを持ち歩くことになるので GCE上に一番安いインスタンスを一個立ち上げっぱなしにして、そこに他のインスタンスを立ち上げるシェルスクリプトでもおいておくとします。

万人受けするから、CentOS6.X でいいやと思ったら、思ったよりハマりました。 けっきょく、Python2.7を入れて解決したので、手順をメモ

gceの中からインスタンス作成コマンド実行

開発ツール関連のインストール

sudo yum groupinstall "Development Tools"
sudo yum install python-devel

pipのインストール

cd /tmp
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py
sudo pip install virtualenv virtualenvwrapper

python2.7のインストール

sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-11.ius.centos6.noarch.rpm

sudo yum install python27 python27-devel python27-setuptools

.bashrc 関連

  • .bashrc に追記
if [ -f /usr/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/bin/virtualenvwrapper.sh
fi
  • 読み込み
source ~/.

Virtualenvを作って入る

mkvirtualenv --python=/usr/bin/python2.7 py27
  • 抜けるのと入るのだけ
deactivate py27
workon py27

pyopensslをインストールするのに必要なパッケージを入れる

sudo yum install openssl-devel libffi-devel

pyopensslのインストール(py27のvirtualenv環境で)

pip install pyopenssl

GCEの管理コンソール周り

  • google cloud の管理コンソールのcredentialあたりからp12ファイルを取ってくる 置く

  • おてもとのPCからの転送コマンド

gcloud compute copy-files hogehogekeyfile.p12 インスタンス名:~/
chmod 600 hogehogekeyfile.p12

export CLOUDSDK_PYTHON_SITEPACKAGES=1
gcloud auth activate-service-account --key-file my_key_file.p12 my_service_account@developer.gserviceaccount.com
gcloud config set プロジェクト名

ここまでやると、 google cloud の管理コンソールのコマンドがCentOS6から実行できる

こんなかんじのも打てるようになるよ

gcloud compute --project "プロジェクト名" \
instances create "test01" \
--zone "asia-east1-a" \
--machine-type "n1-standard-1" \
--network "default" \
--no-restart-on-failure --maintenance-policy "TERMINATE" \
--preemptible --scopes "https://www.googleapis.com/auth/devstorage.read_only" "https://www.googleapis.com/auth/logging.write" \
--tags "http-server" "https-server" \
--image "https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-6-v20150710" \
--boot-disk-type "pd-standard" \
--boot-disk-device-name "test01"