diff --git a/lib/manager/terraform-version/__snapshots__/extract.spec.ts.snap b/lib/manager/terraform-version/__snapshots__/extract.spec.ts.snap
new file mode 100644
index 0000000000000000000000000000000000000000..dabebdbc5b11d453beab88829f33fb4c7334e5a6
--- /dev/null
+++ b/lib/manager/terraform-version/__snapshots__/extract.spec.ts.snap
@@ -0,0 +1,21 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`lib/manager/terraform-version/extract extractPackageFile() returns a result 1`] = `
+Array [
+  Object {
+    "currentValue": "12.0.0",
+    "datasource": "github-releases",
+    "depName": "hashicorp/terraform",
+  },
+]
+`;
+
+exports[`lib/manager/terraform-version/extract extractPackageFile() skips non ranges 1`] = `
+Array [
+  Object {
+    "currentValue": "latest",
+    "datasource": "github-releases",
+    "depName": "hashicorp/terraform",
+  },
+]
+`;
diff --git a/lib/manager/terraform-version/extract.spec.ts b/lib/manager/terraform-version/extract.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..31200c84699a47364f7dd778f679789c7205745c
--- /dev/null
+++ b/lib/manager/terraform-version/extract.spec.ts
@@ -0,0 +1,14 @@
+import { extractPackageFile } from './extract';
+
+describe('lib/manager/terraform-version/extract', () => {
+  describe('extractPackageFile()', () => {
+    it('returns a result', () => {
+      const res = extractPackageFile('12.0.0\n');
+      expect(res.deps).toMatchSnapshot();
+    });
+    it('skips non ranges', () => {
+      const res = extractPackageFile('latest');
+      expect(res.deps).toMatchSnapshot();
+    });
+  });
+});
diff --git a/lib/manager/terraform-version/extract.ts b/lib/manager/terraform-version/extract.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1d466f582b325774e87c6c8837ae705eba2ac83b
--- /dev/null
+++ b/lib/manager/terraform-version/extract.ts
@@ -0,0 +1,13 @@
+import * as datasourceGitHubRelease from '../../datasource/github-releases';
+import { logger } from '../../logger';
+import { PackageDependency, PackageFile } from '../common';
+
+export function extractPackageFile(content: string): PackageFile {
+  logger.trace('terraform-version.extractPackageFile()');
+  const dep: PackageDependency = {
+    depName: 'hashicorp/terraform',
+    currentValue: content.trim(),
+    datasource: datasourceGitHubRelease.id,
+  };
+  return { deps: [dep] };
+}
diff --git a/lib/manager/terraform-version/index.ts b/lib/manager/terraform-version/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9a55bdbd5c3eb7dc6e39b1fd049804ceded7485c
--- /dev/null
+++ b/lib/manager/terraform-version/index.ts
@@ -0,0 +1,9 @@
+import * as hashicorpVersioning from '../../versioning/hashicorp';
+
+export { extractPackageFile } from './extract';
+
+export const defaultConfig = {
+  fileMatch: ['(^|/)\\.terraform-version$'],
+  versioning: hashicorpVersioning.id,
+  extractVersion: '^v(?<version>.*)$',
+};
diff --git a/lib/manager/terraform-version/readme.md b/lib/manager/terraform-version/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..f803cd62aa79c49c27ebbf00638cf600772b3284
--- /dev/null
+++ b/lib/manager/terraform-version/readme.md
@@ -0,0 +1 @@
+This will maintain `.terraform-version` files. Available versions will be determined from the official Terraform downloads page.