Automation and setup for sites I own.
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

215 строки
5.8 KiB

  1. # gitea is a PITA to automate installation of, watch this pr for when it'll be
  2. # fully setup-able from the cli https://github.com/go-gitea/gitea/issues/9210
  3. variable "gitea_db_passwd" {
  4. type = string
  5. }
  6. variable "cloudflare_functionalidiot_zoneid" {
  7. type = string
  8. }
  9. resource "cloudflare_record" "root" {
  10. depends_on = [
  11. linode_instance.prod,
  12. cloudflare_record.functionalidiot_com_ns1,
  13. cloudflare_record.functionalidiot_com_ns2 ]
  14. zone_id = var.cloudflare_functionalidiot_zoneid
  15. name = "@"
  16. value = linode_instance.prod.ip_address
  17. type = "A"
  18. ttl = 120
  19. }
  20. resource "cloudflare_record" "splat" {
  21. depends_on = [
  22. linode_instance.prod,
  23. cloudflare_record.functionalidiot_com_ns1,
  24. cloudflare_record.functionalidiot_com_ns2 ]
  25. zone_id = var.cloudflare_functionalidiot_zoneid
  26. name = "*"
  27. value = linode_instance.prod.ip_address
  28. type = "A"
  29. ttl = 1
  30. }
  31. # resource "cloudflare_record" "root6" {
  32. # depends_on = [
  33. # linode_instance.prod,
  34. # cloudflare_record.functionalidiot_com_ns1,
  35. # cloudflare_record.functionalidiot_com_ns2 ]
  36. # zone_id = var.cloudflare_functionalidiot_zoneid
  37. # name = "@"
  38. # value = local.ipv6
  39. # type = "AAAA"
  40. # ttl = 120
  41. # }
  42. # resource "cloudflare_record" "splat6" {
  43. # depends_on = [
  44. # linode_instance.prod,
  45. # cloudflare_record.functionalidiot_com_ns1,
  46. # cloudflare_record.functionalidiot_com_ns2 ]
  47. # zone_id = var.cloudflare_functionalidiot_zoneid
  48. # name = "*"
  49. # value = local.ipv6
  50. # type = "AAAA"
  51. # ttl = 1
  52. # proxied = true
  53. # }
  54. resource "cloudflare_record" "www" {
  55. depends_on = [
  56. cloudflare_record.root,
  57. cloudflare_record.splat ]
  58. zone_id = var.cloudflare_functionalidiot_zoneid
  59. name = "www"
  60. value = "functionalidiot.com"
  61. type = "CNAME"
  62. ttl = 120
  63. }
  64. resource "cloudflare_record" "git" {
  65. depends_on = [
  66. cloudflare_record.root,
  67. cloudflare_record.splat ]
  68. zone_id = var.cloudflare_functionalidiot_zoneid
  69. name = "git"
  70. value = "functionalidiot.com"
  71. type = "CNAME"
  72. ttl = 120
  73. }
  74. resource "cloudflare_record" "functionalidiot_com_ns1" {
  75. zone_id = var.cloudflare_functionalidiot_zoneid
  76. name = "@"
  77. value = "mitch.ns.cloudflare.com"
  78. type = "NS"
  79. }
  80. resource "cloudflare_record" "functionalidiot_com_ns2" {
  81. zone_id = var.cloudflare_functionalidiot_zoneid
  82. name = "@"
  83. value = "tegan.ns.cloudflare.com"
  84. type = "NS"
  85. }
  86. resource "null_resource" "functionalidiot_com_setup_new_gitea" {
  87. depends_on = [ null_resource.post_setup ]
  88. count = fileexists("${path.module}/attic/var-lib-gitea.tar") ? 0 : 1
  89. connection {
  90. host = linode_instance.prod.ip_address
  91. user = "root"
  92. private_key = file("~/.ssh/id_rsa")
  93. }
  94. provisioner "file" {
  95. source = "setup_gitea.sh"
  96. destination = "/tmp/setup_gitea.sh"
  97. }
  98. provisioner "remote-exec" {
  99. inline = [<<FIN
  100. install -m755 /tmp/setup_gitea.sh /usr/local/bin/setup_gitea
  101. rm -f /tmp/setup_gitea.sh
  102. rc-update add gitea default
  103. skey=$(su - gitea -c "gitea generate secret SECRET_KEY")
  104. itoken=$(su - gitea -c "gitea generate secret INTERNAL_TOKEN")
  105. SECRET_KEY=$skey INTERNAL_TOKEN=$itoken /usr/local/bin/setup_gitea
  106. rc-service gitea restart
  107. sleep 3
  108. chown gitea:www-data /var/lib/gitea/db/gitea.db
  109. su - gitea -c "gitea migrate --config /etc/gitea/app.ini"
  110. su - gitea -c "gitea admin create-user --username mitch --password ${var.gitea_db_passwd} --email spam@mitchty.com --admin --config /etc/gitea/app.ini"
  111. FIN
  112. ]
  113. }
  114. }
  115. resource "null_resource" "functionalidiot_com_setup_saved_uacme" {
  116. depends_on = [ null_resource.post_setup ]
  117. count = fileexists("${path.module}/attic/etc-ssl-uacme.tar") ? 1 : 0
  118. connection {
  119. host = linode_instance.prod.ip_address
  120. user = "root"
  121. private_key = file("~/.ssh/id_rsa")
  122. }
  123. provisioner "file" {
  124. source = "etc-ssl-uacme.tar"
  125. destination = "/tmp/etc-ssl-uacme.tar"
  126. }
  127. # TODO: Finish post untar setup
  128. provisioner "remote-exec" {
  129. inline = [<<FIN
  130. cd /
  131. tar xvf /tmp/etc-ssl-uacme.tar
  132. FIN
  133. ]
  134. }
  135. }
  136. resource "null_resource" "functionalidiot_com_setup_saved_gitea" {
  137. depends_on = [ null_resource.post_setup ]
  138. count = fileexists("${path.module}/attic/var-lib-gitea.tar") ? 1 : 0
  139. connection {
  140. host = linode_instance.prod.ip_address
  141. user = "root"
  142. private_key = file("~/.ssh/id_rsa")
  143. }
  144. provisioner "file" {
  145. source = "var-lib-gitea.tar"
  146. destination = "/tmp/var-lib-gitea.tar"
  147. }
  148. # TODO: Finish post untar setup
  149. provisioner "remote-exec" {
  150. inline = [<<FIN
  151. cd /
  152. tar xvf /tmp/var-lib-gitea.tar
  153. rc-update add gitea default
  154. rc-service gitea restart
  155. FIN
  156. ]
  157. }
  158. }
  159. resource "null_resource" "functionalidiot_com_setup_new_nginx" {
  160. depends_on = [
  161. null_resource.post_setup,
  162. null_resource.functionalidiot_com_setup_saved_gitea,
  163. null_resource.functionalidiot_com_setup_saved_uacme
  164. ]
  165. connection {
  166. host = linode_instance.prod.ip_address
  167. user = "root"
  168. private_key = file("~/.ssh/id_rsa")
  169. }
  170. provisioner "file" {
  171. source = "http-default.conf"
  172. destination = "/tmp/http-default.conf"
  173. }
  174. provisioner "file" {
  175. source = "https-functionalidiot.com.conf"
  176. destination = "/tmp/https-functionalidiot.com.conf"
  177. }
  178. provisioner "remote-exec" {
  179. inline = [<<FIN
  180. [ -e /etc/nginx/conf.d/default.conf ] && mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disable
  181. install -m644 /tmp/http-default.conf /etc/nginx/conf.d/http-default.conf
  182. install -m644 /tmp/https-functionalidiot.com.conf /etc/nginx/conf.d/https-functionalidiot.com.conf
  183. rm -fr /tmp/*.conf
  184. install -dm755 /var/www/default/htdocs /var/www/.well-known/acme-challenge
  185. echo todo write more stuff > /var/www/default/htdocs/index.html
  186. rc-service nginx restart
  187. FIN
  188. ]
  189. }
  190. }