Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. # Setting Up Windows Slave
  2. data "aws_ami" "jenkins_worker_windows" {
  3. most_recent = true
  4. owners = ["self"]
  5.  
  6. filter {
  7. name = "name"
  8. values = ["windows-slave-for-jenkins*"]
  9. }
  10. }
  11.  
  12. resource "aws_key_pair" "jenkins_worker_windows" {
  13. key_name = "jenkins_worker_windows"
  14. public_key = "${file("jenkins_worker.pub")}"
  15. }
  16.  
  17. data "template_file" "userdata_jenkins_worker_windows" {
  18. template = "${file("scripts/jenkins_worker_windows.ps1")}"
  19.  
  20. vars {
  21. env = "dev"
  22. region = "us-east-1"
  23. datacenter = "dev-us-east-1"
  24. node_name = "us-east-1-jenkins_worker_windows"
  25. domain = ""
  26. device_name = "eth0"
  27. server_ip = "${aws_instance.jenkins_server.private_ip}"
  28. worker_pem = "${data.local_file.jenkins_worker_pem.content}"
  29. jenkins_username = "admin"
  30. jenkins_password = "mysupersecretpassword"
  31. }
  32. }
  33.  
  34. # lookup the security group of the Jenkins Server
  35. data "aws_security_group" "jenkins_worker_windows" {
  36. filter {
  37. name = "group-name"
  38. values = ["dev_jenkins_worker_windows"]
  39. }
  40. }
  41.  
  42. resource "aws_launch_configuration" "jenkins_worker_windows" {
  43. name_prefix = "dev-jenkins-worker-"
  44. image_id = "${data.aws_ami.jenkins_worker_windows.image_id}"
  45. instance_type = "t3.medium"
  46. iam_instance_profile = "dev_jenkins_worker_windows"
  47. key_name = "${aws_key_pair.jenkins_worker_windows.key_name}"
  48. security_groups = ["${data.aws_security_group.jenkins_worker_windows.id}"]
  49. user_data = "${data.template_file.userdata_jenkins_worker_windows.rendered}"
  50. associate_public_ip_address = false
  51.  
  52. root_block_device {
  53. delete_on_termination = true
  54. volume_size = 100
  55. }
  56.  
  57. lifecycle {
  58. create_before_destroy = true
  59. }
  60. }
  61.  
  62. resource "aws_autoscaling_group" "jenkins_worker_windows" {
  63. name = "dev-jenkins-worker-windows"
  64. min_size = "1"
  65. max_size = "2"
  66. desired_capacity = "2"
  67. health_check_grace_period = 60
  68. health_check_type = "EC2"
  69. vpc_zone_identifier = ["${data.aws_subnet_ids.default_public.ids}"]
  70. launch_configuration = "${aws_launch_configuration.jenkins_worker_windows.name}"
  71. termination_policies = ["OldestLaunchConfiguration"]
  72. wait_for_capacity_timeout = "10m"
  73. default_cooldown = 60
  74.  
  75. #lifecycle {
  76. # create_before_destroy = true
  77. #}
  78.  
  79.  
  80. ## on replacement, gives new service time to spin up before moving on to destroy
  81. #provisioner "local-exec" {
  82. # command = "sleep 60"
  83. #}
  84.  
  85. tags = [
  86. {
  87. key = "Name"
  88. value = "dev_jenkins_worker_windows"
  89. propagate_at_launch = true
  90. },
  91. {
  92. key = "class"
  93. value = "dev_jenkins_worker_windows"
  94. propagate_at_launch = true
  95. },
  96. ]
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement