File tree Expand file tree Collapse file tree 7 files changed +98
-0
lines changed Expand file tree Collapse file tree 7 files changed +98
-0
lines changed Original file line number Diff line number Diff line change 77
88# .tfvars files
99* .tfvars
10+
11+ # gcloud configs
12+ account.json
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change 1+ provider "google" {
2+ credentials = " ${ file (" account.json" )} "
3+ project = " ${ var . project_name } "
4+ region = " us-central1"
5+ }
6+
7+ resource "google_compute_instance" "tfansible" {
8+ name = " terraform-ansible"
9+ machine_type = " n1-standard-1"
10+ zone = " us-central1-a"
11+
12+ tags = [" web" ]
13+
14+ boot_disk {
15+ initialize_params {
16+ image = " rhel-cloud/rhel-7"
17+ }
18+ }
19+
20+ // Local SSD disk
21+ scratch_disk {}
22+
23+ network_interface {
24+ network = " default"
25+
26+ access_config {
27+ // Ephemeral IP
28+ }
29+ }
30+
31+ metadata {
32+ Name = " Terraform and Ansible Demo"
33+ ssh-keys = " ${ var . ssh_user } :${ file (" ${ var . public_key_path } " )} "
34+ }
35+
36+ metadata_startup_script = " echo hi > /test.txt"
37+
38+ service_account {
39+ scopes = [" userinfo-email" , " compute-ro" , " storage-ro" ]
40+ }
41+
42+ provisioner "remote-exec" {
43+ inline = [" echo 'Hello World'" ]
44+
45+ connection {
46+ type = " ssh"
47+ host = " ${ google_compute_instance . tfansible . network_interface . 0 . access_config . 0 . assigned_nat_ip } "
48+ user = " ${ var . ssh_user } "
49+ private_key = " ${ file (" ${ var . private_key_path } " )} "
50+ }
51+ }
52+
53+ provisioner "local-exec" {
54+ command = " ansible-playbook -i '${ google_compute_instance . tfansible . network_interface . 0 . access_config . 0 . assigned_nat_ip } ,' --private-key ${ var . private_key_path } ../ansible/httpd.yml"
55+ }
56+ }
57+
58+ resource "google_compute_firewall" "default" {
59+ name = " web-firewall"
60+ network = " default"
61+
62+ allow {
63+ protocol = " icmp"
64+ }
65+
66+ allow {
67+ protocol = " tcp"
68+ ports = [" 80" ]
69+ }
70+
71+ source_ranges = [" 0.0.0.0/0" ]
72+ target_tags = [" web" ]
73+ }
Original file line number Diff line number Diff line change 1+ output "Webapp URL" {
2+ value = " http://${ google_compute_instance . tfansible . network_interface . 0 . access_config . 0 . assigned_nat_ip } "
3+ }
Original file line number Diff line number Diff line change 1+ variable "public_key_path" {
2+ description = " Path to the public SSH key you want to bake into the instance."
3+ default = " ~/.ssh/id_dsa.pub"
4+ }
5+
6+ variable "private_key_path" {
7+ description = " Path to the private SSH key, used to access the instance."
8+ default = " ~/.ssh/id_dsa"
9+ }
10+
11+ variable "project_name" {
12+ description = " Name of your GCP project. Example: ansible-terraform-218216"
13+ default = " ansible-terraform-218216"
14+ }
15+
16+ variable "ssh_user" {
17+ description = " SSH user name to connect to your instance."
18+ default = " scarolan"
19+ }
You can’t perform that action at this time.
0 commit comments