tansudasli.gcp_instances
Role Name
=========
Set up compute instance(s) on GCP with production-level standards.
- instance(s)
 - dedicated boot-disk
 - dedicated data and log disk
 - a static IP
 
Requirements
- ansible client
 - ansible.cfg file
 - a service account and GCP account
 
Role Variables
This role is designed for standalone provisioning by default. For distributed provisioning, you can add more nodes with a proper naming format in your YAML file.
In defaults/main.yml, you can specify:
# GCP project
general:
    project: sandbox-236618       # GCP project ID 
    region: europe-west4          # GCP region
    auth_kind: serviceaccount     
    service_account_file: ~/.ssh/ansible.json
scopes:
    - https://www.googleapis.com/auth/compute
# design your infrastructure architecture
nodes:
  - name: standalone-node    # Example node names: standalone-node, name-node, data-node1, etc.
    zone: europe-west4-a     # Choose nearby zones and distribute other nodes accordingly
    machine_type: f1-micro   # Upgrade if necessary
    ips:
        - nic: 
            name: "ip-01"
    tags: hadoop             # Tags used by firewall rules (use tool names like hadoop or elasticsearch)
    labels:                  # Filtering! Use tool names as type and master/worker for identification
        type: hdfs
        name: master
    boot_disk:
        - disk:
            name: "boot-disk-01"
            size: 100
            image: "projects/ubuntu-os-cloud/global/images/family/ubuntu-2004-lts"
            auto_delete: true
            boot: true
    additional_disks:
        - disk: 
            name: "data-disk-01"
            size: 300
            auto_delete: true     # Set to false for production environments
            boot: false
        - disk: 
            name: "log-disk-01"
            size: 300
            auto_delete: true     # Set to false for production environments
            boot: false
Dependencies
N/A
Example Playbook
Click here to test and view example playbooks.
ansible.cfg
[defaults]
host_key_checking = False
inventory = hosts
remote_user = tansudasli                          # Your GCP account
private_key_file = ~/.ssh/google_compute_engine   # Always use this file for authentication if specified
[inventory]
# List of active inventory plugins and their order of usage.
enable_plugins = host_list, script, yaml, ini, auto, gcp_compute
provision.yaml
- name: Create Compute Instance(s)
  hosts: localhost
  gather_facts: no
  vars:
     general:
         project: sandbox-236618
         region: europe-west4
         auth_kind: serviceaccount
         service_account_file: ~/.ssh/ansible.json
     scopes:
         - https://www.googleapis.com/auth/compute
          
  tasks:
  roles:
    # Run with default variable values
    - role: tansudasli.gcp_instances  
License
Apache-2.0
Author Information
Informazioni sul progetto
 Provisions compute instance(s) on GCP with production grade requirements.
Installa
 ansible-galaxy install tansudasli.gcp_instancesLicenza
 
            apache-2.0
          
Download
 
            92
          
Proprietario
 Ansible role boilerplates to inject into the projects that runs on GCP
