|
|
|
require "open3"
|
|
|
|
require "yaml"
|
|
|
|
|
|
|
|
DOMAIN = ENV.fetch("LOTUS_LAND_STORY_DOMAIN")
|
|
|
|
|
|
|
|
task bootstrap: "pip:sync"
|
|
|
|
|
|
|
|
namespace :pip do
|
|
|
|
task :sync => "requirements.txt" do
|
|
|
|
sh "pip-sync requirements.txt"
|
|
|
|
end
|
|
|
|
|
|
|
|
desc ""
|
|
|
|
task :upgrade do
|
|
|
|
out, _ = Open3.capture2e("pip-compile --upgrade --resolver=backtracking requirements.in")
|
|
|
|
File.write("requirements.txt", out)
|
|
|
|
end
|
|
|
|
|
|
|
|
file "requirements.txt" => "requirements.in" do |t|
|
|
|
|
out, _ = Open3.capture2e("pip-compile --resolver=backtracking requirements.in")
|
|
|
|
File.write(t.name, out)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
desc ""
|
|
|
|
task terraform: "terraform.tfvars" do
|
|
|
|
sh "terraform apply"
|
|
|
|
end
|
|
|
|
|
|
|
|
desc ""
|
|
|
|
task :ansible, %i[ playbook ] => "vars.yml" do |_, args|
|
|
|
|
playbook = args.fetch(:playbook, "main")
|
|
|
|
|
|
|
|
sh "ansible-playbook #{playbook}.yml"
|
|
|
|
end
|
|
|
|
|
|
|
|
task "terraform.tfvars" do |t|
|
|
|
|
File.write(t.name, "domain = \"#{DOMAIN}\"")
|
|
|
|
end
|
|
|
|
|
|
|
|
task "vars.yml" do |t|
|
|
|
|
linode_volume = `terraform output -raw lotus_land_story_volume`
|
|
|
|
miniflux_db_password = `op read "op://Private/Miniflux/db password"`.strip
|
|
|
|
miniflux_password = `op read op://Private/Miniflux/password`.strip
|
|
|
|
prometheus_linode_api_token = `op read "op://Private/lotus-land-story/prometheus/linode api token"`.strip
|
|
|
|
|
|
|
|
File.write(t.name, YAML.dump({
|
|
|
|
"domain" => DOMAIN,
|
|
|
|
"linode_volume" => linode_volume,
|
|
|
|
"prometheus" => {
|
|
|
|
"linode_api_token" => prometheus_linode_api_token,
|
|
|
|
},
|
|
|
|
"miniflux" => {
|
|
|
|
"db_password" => miniflux_db_password,
|
|
|
|
"password" => miniflux_password,
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
end
|
|
|
|
|
|
|
|
task default: %i[ terraform ansible ]
|