diff --git a/lib/manager/terraform/lockfile/__snapshots__/index.spec.ts.snap b/lib/manager/terraform/lockfile/__snapshots__/index.spec.ts.snap
index f6af2a1e5c7ddce66b982e76fc27e75f524b9387..182047b7165274bf4867173c4f27dea59824352a 100644
--- a/lib/manager/terraform/lockfile/__snapshots__/index.spec.ts.snap
+++ b/lib/manager/terraform/lockfile/__snapshots__/index.spec.ts.snap
@@ -202,7 +202,7 @@ Array [
 ]
 `;
 
-exports[`manager/terraform/lockfile/index update single dependency with exact constraint 1`] = `
+exports[`manager/terraform/lockfile/index update single dependency with exact constraint and and depType required_provider 1`] = `
 Object {
   "contents": "# This file is maintained automatically by \\"terraform init\\".
 # Manual edits may be lost in future updates.
@@ -259,7 +259,74 @@ provider \\"registry.terraform.io/hashicorp/random\\" {
 }
 `;
 
-exports[`manager/terraform/lockfile/index update single dependency with exact constraint 2`] = `
+exports[`manager/terraform/lockfile/index update single dependency with exact constraint and and depType required_provider 2`] = `
+Array [
+  Array [
+    "https://registry.terraform.io",
+    "hashicorp/aws",
+    "3.36.0",
+  ],
+]
+`;
+
+exports[`manager/terraform/lockfile/index update single dependency with exact constraint and depType provider 1`] = `
+Object {
+  "contents": "# This file is maintained automatically by \\"terraform init\\".
+# Manual edits may be lost in future updates.
+
+provider \\"registry.terraform.io/hashicorp/aws\\" {
+  version     = \\"3.36.0\\"
+  constraints = \\"3.36.0\\"
+  hashes = [
+    \\"h1:lDsKRxDRXPEzA4AxkK4t+lJd3IQIP2UoaplJGjQSp2s=\\",
+    \\"h1:6zB2hX7YIOW26OrKsLJn0uLMnjqbPNxcz9RhlWEuuSY=\\",
+  ]
+}
+
+provider \\"registry.terraform.io/hashicorp/azurerm\\" {
+  version     = \\"2.50.0\\"
+  constraints = \\"~> 2.50\\"
+  hashes = [
+    \\"h1:Vr6WUm88s9hXGkyVjHtHsP2Jmc2ypQXn6ww7dXtvk1M=\\",
+    \\"zh:0c0688d5a743248f8646d39eb3645a4ac19fd7523ba1b47072fa3fb03b92b1b0\\",
+    \\"zh:2beb3a55ee970f87a9292ae96d57134be8a03d0566117e7be0fe0d9c1267e4ea\\",
+    \\"zh:38091b463fbafe5756420ce34c87845c2a391fec0cded27bdcbbca28febad382\\",
+    \\"zh:4ba455da3b37ba8f8b03ff2781121d9c54d0bd8afd76dfe67593011c475dd73f\\",
+    \\"zh:5d32b9ed871b3c3b774dc69f1fe14cdf7c1fd63d12bb5f21aad4bfbf75e5ee3d\\",
+    \\"zh:6c80cf90a3fc1e17d9caf67cc558c2ff91f8b25e29fdf00942f67711895be5c0\\",
+    \\"zh:c0a53e3165407999d10de7aaa983485d42797433c60b5775791ae299121279ed\\",
+    \\"zh:dab51d6d76041505aeebf20111febe8616ec465ca31dfb7901f5f5c23a5af095\\",
+    \\"zh:e1ad6399f6a6d799002206ee4cb7b794dbb2533b8c3c14502a4419955ec96bff\\",
+    \\"zh:e98f1d178d1e111b3f3449e27d305ce263071226fad3d86272e1bd161c26fd43\\",
+    \\"zh:eb76ec000c9c49a0bf730370c8880f671597bc01f7b7401ab301df7124c049ec\\",
+  ]
+}
+
+provider \\"registry.terraform.io/hashicorp/random\\" {
+  version     = \\"2.2.1\\"
+  constraints = \\"~> 2.2\\"
+  hashes = [
+    \\"h1:Zg1Bpi6vr7b0H6no8kVDfEucn5pvNALivdrVKVHarGs=\\",
+    \\"zh:072ce92b0138ee65df2e4e2e6e5f6632fa12a7e6453b91399bad89291855d426\\",
+    \\"zh:5731987fe61051515f449033e456ee55207caf17ef41096eb82247810585f53b\\",
+    \\"zh:6f18b10175708bb5839e1f2082dcc02651b876786cd54ec415a091f3821807c3\\",
+    \\"zh:7fa7737661380d18cba3cdc71c4ec6f2fd281b9d61112f6b48d06ca8bbf97771\\",
+    \\"zh:8466cb8fbb4de887b23039082a6e3dc85aeabce86dd808e2a7a65e4e1c51dbae\\",
+    \\"zh:888c63417701c13bbe785ab11dc690d4803e6a2156318cf188970b7b6400b99e\\",
+    \\"zh:a231df55d36fbad1a6705f5d3be4f7459a73ec76117d13f22aa83c10fc610278\\",
+    \\"zh:b62d9a4cd64a2d229070260f4abfef476ebbd7c5511b43e9cdccf23ce938f630\\",
+    \\"zh:b6bd1a325f909bb93f7c9bef00eb306bef1e406cbdf557901d755a3e7a4a5448\\",
+    \\"zh:b9f59afc23cc5567075f76313214baa1e5ce909325229e23c9a4666f7b26e7f7\\",
+    \\"zh:d040220c09b8d9d6bd937572bd5b14bc069af2b883185a873460530d8a1de6e6\\",
+    \\"zh:f254c1f943eb016ae07ebe91b23f813dc79f2064616c65f98c8f64ce23be90c4\\",
+  ]
+}
+",
+  "name": ".terraform.lock.hcl",
+}
+`;
+
+exports[`manager/terraform/lockfile/index update single dependency with exact constraint and depType provider 2`] = `
 Array [
   Array [
     "https://registry.terraform.io",
diff --git a/lib/manager/terraform/lockfile/index.spec.ts b/lib/manager/terraform/lockfile/index.spec.ts
index 091fe80984a7f2f3261903749a9f48a70d02f5a6..731d287b5aef077cbb172888182eaf7542b6366b 100644
--- a/lib/manager/terraform/lockfile/index.spec.ts
+++ b/lib/manager/terraform/lockfile/index.spec.ts
@@ -61,7 +61,7 @@ describe('manager/terraform/lockfile/index', () => {
     ).toBeNull();
   });
 
-  it('update single dependency with exact constraint', async () => {
+  it('update single dependency with exact constraint and depType provider', async () => {
     fs.readLocalFile.mockResolvedValueOnce(validLockfile as any);
     fs.getSiblingFileName.mockReturnValueOnce('.terraform.lock.hcl');
 
@@ -79,7 +79,50 @@ describe('manager/terraform/lockfile/index', () => {
 
     const result = await updateArtifacts({
       packageFileName: 'main.tf',
-      updatedDeps: [{ depName: 'hashicorp/aws', lookupName: 'hashicorp/aws' }],
+      updatedDeps: [
+        {
+          depName: 'hashicorp/aws',
+          lookupName: 'hashicorp/aws',
+          depType: 'provider',
+        },
+      ],
+      newPackageFileContent: '',
+      config: localConfig,
+    });
+    expect(result).not.toBeNull();
+    expect(result).toBeArrayOfSize(1);
+    expect(result[0].file).not.toBeNull();
+    expect(result[0].file).toMatchSnapshot();
+
+    expect(mockHash.mock.calls).toBeArrayOfSize(1);
+    expect(mockHash.mock.calls).toMatchSnapshot();
+  });
+
+  it('update single dependency with exact constraint and and depType required_provider', async () => {
+    fs.readLocalFile.mockResolvedValueOnce(validLockfile as any);
+    fs.getSiblingFileName.mockReturnValueOnce('.terraform.lock.hcl');
+
+    mockHash.mockResolvedValueOnce([
+      'h1:lDsKRxDRXPEzA4AxkK4t+lJd3IQIP2UoaplJGjQSp2s=',
+      'h1:6zB2hX7YIOW26OrKsLJn0uLMnjqbPNxcz9RhlWEuuSY=',
+    ]);
+
+    const localConfig: UpdateArtifactsConfig = {
+      updateType: 'minor',
+      newVersion: '3.36.0',
+      newValue: '3.36.0',
+      ...config,
+    };
+
+    const result = await updateArtifacts({
+      packageFileName: 'main.tf',
+      updatedDeps: [
+        {
+          depName: 'hashicorp/aws',
+          lookupName: 'hashicorp/aws',
+          depType: 'required_provider',
+        },
+      ],
       newPackageFileContent: '',
       config: localConfig,
     });
@@ -92,6 +135,29 @@ describe('manager/terraform/lockfile/index', () => {
     expect(mockHash.mock.calls).toMatchSnapshot();
   });
 
+  it('do not update dependency with depType module', async () => {
+    const localConfig: UpdateArtifactsConfig = {
+      updateType: 'minor',
+      newVersion: '3.36.0',
+      newValue: '3.36.0',
+      ...config,
+    };
+
+    const result = await updateArtifacts({
+      packageFileName: 'main.tf',
+      updatedDeps: [
+        {
+          depName: 'terraform-aws-modules/vpc/aws',
+          lookupName: 'terraform-aws-modules/vpc/aws',
+          depType: 'module',
+        },
+      ],
+      newPackageFileContent: '',
+      config: localConfig,
+    });
+    expect(result).toBeNull();
+  });
+
   it('update single dependency with range constraint and minor update from private registry', async () => {
     fs.readLocalFile.mockResolvedValueOnce(validLockfile as any);
     fs.getSiblingFileName.mockReturnValueOnce('.terraform.lock.hcl');
@@ -113,6 +179,7 @@ describe('manager/terraform/lockfile/index', () => {
       updatedDeps: [
         {
           depName: 'azurerm',
+          depType: 'provider',
           lookupName: 'azurerm',
           registryUrls: ['https://registry.example.com'],
         },
@@ -147,7 +214,13 @@ describe('manager/terraform/lockfile/index', () => {
 
     const result = await updateArtifacts({
       packageFileName: 'main.tf',
-      updatedDeps: [{ depName: 'random', lookupName: 'hashicorp/random' }],
+      updatedDeps: [
+        {
+          depName: 'random',
+          lookupName: 'hashicorp/random',
+          depType: 'provider',
+        },
+      ],
       newPackageFileContent: '',
       config: localConfig,
     });
@@ -178,7 +251,13 @@ describe('manager/terraform/lockfile/index', () => {
 
     const result = await updateArtifacts({
       packageFileName: 'test/main.tf',
-      updatedDeps: [{ depName: 'random', lookupName: 'hashicorp/random' }],
+      updatedDeps: [
+        {
+          depName: 'random',
+          lookupName: 'hashicorp/random',
+          depType: 'provider',
+        },
+      ],
       newPackageFileContent: '',
       config: localConfig,
     });
diff --git a/lib/manager/terraform/lockfile/index.ts b/lib/manager/terraform/lockfile/index.ts
index 93ce5384291cf0b59aed1ff0e402051a620fc369..1171d4d4dd1c37243541e23a881211466c872397 100644
--- a/lib/manager/terraform/lockfile/index.ts
+++ b/lib/manager/terraform/lockfile/index.ts
@@ -80,7 +80,9 @@ export async function updateArtifacts({
       // update all locks in the file during maintenance --> only update version in constraints
       const maintenanceUpdates = await updateAllLocks(locks);
       updates.push(...maintenanceUpdates);
-    } else {
+    } else if (
+      ['provider', 'required_provider'].includes(updatedDeps[0].depType)
+    ) {
       // update only specific locks but with constrain updates
       const dep = updatedDeps[0];