AnsibleでGCPインスタンスを作成する

提供: omotenashi-mind
移動先: 案内検索



AnsibleからGCPのCompute Engineインスタンスを作成する方法をまとめます。

事前準備

GCEが要求する「apache-libcloud」ライブラリを導入します。

sudo pip install apache-libcloud


ライブラリ導入が終わったら、作業用フォルダを作成しましょう。ここでは適当に「~/ansible」フォルダを作成します。

アクセス用キーの作成

ansibleスクリプト経由でGCPにアクセスするためのアカウントを用意します。アカウントを作成するとき、
役割から Service Accounts -> サービスアカウントユーザを選択してください。
https://console.developers.google.com/permissions/serviceaccounts

次に、クレデンシャルを作成します。以下のリンクから作成できます。
https://console.cloud.google.com/apis/credentials
クレデンシャルを作成時、先ほど作成したアカウントを選択します。「認証情報を作成」ボタンから、サービスアカウントキーを選択し、先ほど作成したユーザを選択。キーのタイプをJSONに指定すれば、サービスアカウントキーを作成後、クレデンシャル情報を保持したJSONデータがダウンロードされます。
ダウンロードできたら、適当な場所に配置しましょう。ここでは、「~/ansible/credential」配下に保存します。

インスタンス作成用ymlファイルの準備

インスタンスを作成するためのymlを作成していきます。「~/ansible」フォルダ配下に「create-gce.yml」のファイル名で新たなファイルを作成し、以下のように設定を記載します。

create-gce.yml

 - name: Create New instance
   hosts: localhost
   connection: local
   gather_facts: no
 
   vars:
     service_account_email: [*先ほど作成したアカウントのID(@以降を含む)]
     credentials_file: [*先ほどダウンロードしてきたcredention情報を含むjsonファイルのパス]
     project_id: [*ターゲットのproject ID]
     machine_type: n1-standard-1
     image: debian-7
 
   tasks:
    - name: Launch instances
      gce:
          instance_names: test
          machine_type: "{{ machine_type }}"
          image: "{{ image }}"
          service_account_email: "{{ service_account_email }}"
          credentials_file: "{{ credentials_file }}"
          project_id: "{{ proj }}"

[*] の箇所は任意に書き換えてください。また、インスタンスタイプ、イメージおよびインスタンス名称も目的に合わせて書き換えてください。

Ansible実行

では実際に、ansibleを実行してGCP上にインスタンスを作成してみます。

ansible-playbook create-gce.yml

以下のように結果が表示されたら、無事完了です。

 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
 

PLAY [Create instance(s)]  
****************************************************************************************************************************************

TASK [Launch instances]
****************************************************************************************************************************************

changed: [localhost]
 
PLAY RECAP 
****************************************************************************************************************************************

localhost                  : ok=1    changed=1    unreachable=0    failed=0


GCEのコンソールから、実際に作成されたインスタンスを確認してみてください。