はじめに
前々から気になっていた、構成管理ツールの1種であるAnsibleをGoogle Cloud PlatformのVMインスタンス上で動作させてみた。
自分と同じような、**「AnsibleをGCE上に導入して試してみたい」**という人向けに、自分が試したことを残しておきたいと思います。
環境準備
-
AnsibleをインストールするVMインスタンスの準備
2. GCPプロジェクトにアクセス
3. 「インスタンスを作成」を選択
4. 任意のインスタンスを作成(インスタンスの作成例は以下の通り)
- インスタンス名:ansible-host
- リージョン:asia-northeast1
- ゾーン:asia-northeast1-b
- マシンタイプ:f1-micro (テスト用なので料金を抑える)
- ブートディスク(OS):CentOS 74.作業用のディレクトリの作成
$ mkdir gcp_ansible
-
Ansibleのインストール
$ sudo yum install -y epel-release $ sudo yum install -y ansible $ ansible --version ansible 2.7.7
-
Ansibleの実行に必要なコンポーネントのインストール (apache-libcloudをインストールするため、まずはpipをインストール)
$ sudo yum install -y python-pip $ sudo pip install --upgrade pip $ sudo pip install apache-libcloud
-
サービスアカウントのCredentialファイルの作成と導入
4. GCPプロジェクト-> 「IAMと管理」->サービスアカウント->今回利用するサービスアカウントを選択->「編集」を選択->「キーを作成」->JSONを選択し、「作成」を押下 (その後、credential fileがダウンロードされる)
5. 1.で取得したcredential fileを「my_account.json」と名前を変更し、VMインスタンスのgcp_ansible配下に配置 -
Ansible Playbookの作成 (以下のymlファイルをVMインスタンスのgcp_ansible配下に配置。[YOUR...]の部分は適宜書き換え。)
※ちなみにAnsibleのドキュメントからymlに設定できるパラメータを確認できるgce.yml- name: Create an instance hosts: localhost gather_facts: no connection: local vars: project_id: [YOUR_PROJECT_ID] service_account_file: ./my_account.json service_account_email: [YOUR_SERVICE_ACCOUNT_EMAIL] zone: "asia-northeast1-c" tasks: - name: Create an instance gce: instance_names: "ansible-test" machine_type: "f1-micro" image: "ubuntu-1604" zone: "{{ zone }}" disk_size: 64 service_account_email: "{{service_account_email}}" credentials_file: "{{service_account_file}}" project_id: "{{ project_id }}"
5. Ansible Playbookの実行
```
$ ansible-playbook gce.yml
︙
localhost : ok=1 changed=1 unreachable=0 failed=0
```
6. Ansibleで作成されたGCEインスタンスの確認
[GCPプロジェクト](https://console.cloud.google.com/compute/instances)にアクセスすると、「ansible-test」インスタンスができていることが確認できた

# 参考にしたサイト
https://docs.ansible.com/ansible/latest/scenario_guides/guide_gce.html
https://docs.ansible.com/ansible/latest/modules/gce_module.html