diff --git a/installers/charm/grafana/config.yaml b/installers/charm/grafana/config.yaml
index 3a7e63fc55f4595f7e4da3537d3d55e971dd9ea0..632f2120fbfec60f1f370b38d4621b70b65c721c 100644
--- a/installers/charm/grafana/config.yaml
+++ b/installers/charm/grafana/config.yaml
@@ -57,3 +57,9 @@ options:
     type: boolean
     description: Enable OSM System monitoring dashboards
     default: false
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/grafana/src/charm.py b/installers/charm/grafana/src/charm.py
index 28be79aad3d204498cfedd9bbf61412dd484d804..9bc612e0cc00bb40ca04cb9ddd75630c38929996 100755
--- a/installers/charm/grafana/src/charm.py
+++ b/installers/charm/grafana/src/charm.py
@@ -54,6 +54,7 @@ class ConfigModel(ModelValidator):
     ingress_class: Optional[str]
     ingress_whitelist_source_range: Optional[str]
     tls_secret_name: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("max_file_size")
     def validate_max_file_size(cls, v):
@@ -75,6 +76,18 @@ class ConfigModel(ModelValidator):
             ip_network(v)
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class GrafanaCharm(CharmedOsmBase):
     """GrafanaCharm Charm."""
@@ -137,7 +150,9 @@ class GrafanaCharm(CharmedOsmBase):
         # Create Builder for the PodSpec
         pod_spec_builder = PodSpecV3Builder()
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_http_readiness_probe(
             "/api/health",
diff --git a/installers/charm/kafka-exporter/config.yaml b/installers/charm/kafka-exporter/config.yaml
index 706e330d5d6dbb4b40abb9dac0a11d46579a8906..456c9c49249bf7b39e3792c5e97b63f2cd2eab44 100644
--- a/installers/charm/kafka-exporter/config.yaml
+++ b/installers/charm/kafka-exporter/config.yaml
@@ -46,3 +46,9 @@ options:
     type: string
     description: Name of the cluster issuer for TLS certificates
     default: ""
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/kafka-exporter/src/charm.py b/installers/charm/kafka-exporter/src/charm.py
index a15abc841b57356cdbaa507a92d13fd6431c23e6..fd24964f10bdd4fac226f3bfe11594fe040116cf 100755
--- a/installers/charm/kafka-exporter/src/charm.py
+++ b/installers/charm/kafka-exporter/src/charm.py
@@ -52,6 +52,7 @@ class ConfigModel(ModelValidator):
     ingress_class: Optional[str]
     ingress_whitelist_source_range: Optional[str]
     tls_secret_name: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("site_url")
     def validate_site_url(cls, v):
@@ -67,6 +68,18 @@ class ConfigModel(ModelValidator):
             ip_network(v)
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class KafkaExporterCharm(CharmedOsmBase):
     def __init__(self, *args) -> NoReturn:
@@ -163,7 +176,9 @@ class KafkaExporterCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_http_readiness_probe(
             path="/api/health",
diff --git a/installers/charm/keystone/config.yaml b/installers/charm/keystone/config.yaml
index 9a7acd5e6b654ae1199f519b1abd1f498d67c51d..945ea48bd7a17a457d150575cf24e0d4907ab1c8 100644
--- a/installers/charm/keystone/config.yaml
+++ b/installers/charm/keystone/config.yaml
@@ -42,6 +42,12 @@ options:
     type: string
     description: Ingress URL
     default: ""
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
   region_id:
     type: string
     description: Region ID to be created when starting the service
diff --git a/installers/charm/keystone/src/charm.py b/installers/charm/keystone/src/charm.py
index 1dd0ba58f316143ba8558e0a62ef4a820ef1f0a9..4e04e88ae35b4d97c90f2026b45b7441abb1ea1b 100755
--- a/installers/charm/keystone/src/charm.py
+++ b/installers/charm/keystone/src/charm.py
@@ -84,6 +84,7 @@ class ConfigModel(ModelValidator):
     mysql_host: Optional[str]
     mysql_port: Optional[int]
     mysql_root_password: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("max_file_size")
     def validate_max_file_size(cls, v):
@@ -111,6 +112,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("Mysql port out of range")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class ConfigLdapModel(ModelValidator):
     ldap_enabled: bool
@@ -261,7 +274,9 @@ class KeystoneCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
 
         # Build files
diff --git a/installers/charm/lcm/config.yaml b/installers/charm/lcm/config.yaml
index dcebce8723e5aebd16f4ba72f400c8c75d91c287..27c43e5fc4ff87bb5068bc8056cf97dd3237e79a 100644
--- a/installers/charm/lcm/config.yaml
+++ b/installers/charm/lcm/config.yaml
@@ -274,3 +274,9 @@ options:
     description: CA certificates to validate access to Helm repository
     type: string
     default: ""
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/lcm/src/charm.py b/installers/charm/lcm/src/charm.py
index fecd1b3c0072c5e25affa2daae3e182c7659616f..9d7f5529a2032fa57d4dd3f28a8a36793fc3443f 100755
--- a/installers/charm/lcm/src/charm.py
+++ b/installers/charm/lcm/src/charm.py
@@ -110,6 +110,7 @@ class ConfigModel(ModelValidator):
     vca_model_config_update_status_hook_interval: Optional[str]
     vca_stablerepourl: Optional[str]
     vca_helm_ca_certs: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("log_level")
     def validate_log_level(cls, v):
@@ -123,6 +124,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("mongodb_uri is not properly formed")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class LcmCharm(CharmedOsmBase):
     def __init__(self, *args) -> NoReturn:
@@ -167,7 +180,9 @@ class LcmCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_envs(
             {
diff --git a/installers/charm/mon/config.yaml b/installers/charm/mon/config.yaml
index d06b68df14ac75be9ea8a21c63ff1daa1d264eaf..ee593ffa324370de6764d6e9724d307126c7fe51 100644
--- a/installers/charm/mon/config.yaml
+++ b/installers/charm/mon/config.yaml
@@ -87,3 +87,9 @@ options:
         name: name of the file for the certificate
         content: base64 content of the certificate
       The path for the files is /certs.
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/mon/src/charm.py b/installers/charm/mon/src/charm.py
index 8c0a6bc7a9a455477214f89f50b7d6d3ed28d9a6..1b7c74b641f22a776dc0d897d1e42d361ea39010 100755
--- a/installers/charm/mon/src/charm.py
+++ b/installers/charm/mon/src/charm.py
@@ -80,6 +80,7 @@ class ConfigModel(ModelValidator):
     grafana_user: str
     grafana_password: str
     certificates: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("log_level")
     def validate_log_level(cls, v):
@@ -99,6 +100,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("mongodb_uri is not properly formed")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
     @property
     def certificates_dict(cls):
         return _extract_certificates(cls.certificates) if cls.certificates else {}
@@ -167,7 +180,9 @@ class MonCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         certs_files = self._build_cert_files(config)
 
         if certs_files:
diff --git a/installers/charm/mongodb-exporter/config.yaml b/installers/charm/mongodb-exporter/config.yaml
index 727598b9423043170df2217fa72322aa086d54bf..eb19d5bc11e3f81e35b60d546349dbe039b15ed6 100644
--- a/installers/charm/mongodb-exporter/config.yaml
+++ b/installers/charm/mongodb-exporter/config.yaml
@@ -49,3 +49,9 @@ options:
   mongodb_uri:
     type: string
     description: MongoDB URI (external database)
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/mongodb-exporter/src/charm.py b/installers/charm/mongodb-exporter/src/charm.py
index 149940a6e01ed9e50b588995da132f23a4873bca..f4c232a9610493745043351ee11bba4a66e577a1 100755
--- a/installers/charm/mongodb-exporter/src/charm.py
+++ b/installers/charm/mongodb-exporter/src/charm.py
@@ -53,6 +53,7 @@ class ConfigModel(ModelValidator):
     ingress_whitelist_source_range: Optional[str]
     tls_secret_name: Optional[str]
     mongodb_uri: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("site_url")
     def validate_site_url(cls, v):
@@ -74,6 +75,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("mongodb_uri is not properly formed")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class MongodbExporterCharm(CharmedOsmBase):
     def __init__(self, *args) -> NoReturn:
@@ -173,7 +186,9 @@ class MongodbExporterCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_http_readiness_probe(
             path="/api/health",
diff --git a/installers/charm/mysqld-exporter/config.yaml b/installers/charm/mysqld-exporter/config.yaml
index a7702a3f802d6cfed083414d167cfe338a129182..c25886f0fc8eebb586360c94e5f3a9639d614ba7 100644
--- a/installers/charm/mysqld-exporter/config.yaml
+++ b/installers/charm/mysqld-exporter/config.yaml
@@ -49,3 +49,9 @@ options:
   mysql_uri:
     type: string
     description: MySQL URI (external database)
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/mysqld-exporter/src/charm.py b/installers/charm/mysqld-exporter/src/charm.py
index bcd43b5430e22bfe8ffb3799a0263a6fb81249df..adbb519733ad9d6eca7eefcf73b129ae6053fbfb 100755
--- a/installers/charm/mysqld-exporter/src/charm.py
+++ b/installers/charm/mysqld-exporter/src/charm.py
@@ -53,6 +53,7 @@ class ConfigModel(ModelValidator):
     ingress_whitelist_source_range: Optional[str]
     tls_secret_name: Optional[str]
     mysql_uri: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("site_url")
     def validate_site_url(cls, v):
@@ -74,6 +75,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("mysql_uri is not properly formed")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class MysqlExporterCharm(CharmedOsmBase):
     def __init__(self, *args) -> NoReturn:
@@ -173,7 +186,9 @@ class MysqlExporterCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_http_readiness_probe(
             path="/api/health",
diff --git a/installers/charm/nbi/config.yaml b/installers/charm/nbi/config.yaml
index 7f3275273c5fc024973b0cde72c9b1f6ccff0c31..9c353661acbdf3b37fa478b306612082c04610d3 100644
--- a/installers/charm/nbi/config.yaml
+++ b/installers/charm/nbi/config.yaml
@@ -72,3 +72,9 @@ options:
   mongodb_uri:
     type: string
     description: MongoDB URI (external database)
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/nbi/src/charm.py b/installers/charm/nbi/src/charm.py
index d3a22519c56473104bfffcdbe664f8c52aac6554..938a75a012e055e28eaeb2b31b2c686ded636674 100755
--- a/installers/charm/nbi/src/charm.py
+++ b/installers/charm/nbi/src/charm.py
@@ -61,6 +61,7 @@ class ConfigModel(ModelValidator):
     ingress_whitelist_source_range: Optional[str]
     tls_secret_name: Optional[str]
     mongodb_uri: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("auth_backend")
     def validate_auth_backend(cls, v):
@@ -100,6 +101,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("mongodb_uri is not properly formed")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class NbiCharm(CharmedOsmBase):
     def __init__(self, *args) -> NoReturn:
@@ -180,7 +193,9 @@ class NbiCharm(CharmedOsmBase):
         )
 
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_tcpsocket_readiness_probe(
             PORT,
diff --git a/installers/charm/ng-ui/config.yaml b/installers/charm/ng-ui/config.yaml
index 39d3b2d9105e6d8ddf1f504dce58191dd44a2a85..49226b77590fe5bd47902889f0df79d84e7199a9 100644
--- a/installers/charm/ng-ui/config.yaml
+++ b/installers/charm/ng-ui/config.yaml
@@ -54,3 +54,9 @@ options:
     type: string
     description: Name of the cluster issuer for TLS certificates
     default: ""
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/ng-ui/src/charm.py b/installers/charm/ng-ui/src/charm.py
index 5388466e8a47ec783ca9e4fbd661dd2e4e0f1883..cf0b09109e4e59bb43c8c7893782fbf099e3fc24 100755
--- a/installers/charm/ng-ui/src/charm.py
+++ b/installers/charm/ng-ui/src/charm.py
@@ -54,6 +54,7 @@ class ConfigModel(ModelValidator):
     ingress_class: Optional[str]
     ingress_whitelist_source_range: Optional[str]
     tls_secret_name: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("port")
     def validate_port(cls, v):
@@ -81,6 +82,18 @@ class ConfigModel(ModelValidator):
             ip_network(v)
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class NgUiCharm(CharmedOsmBase):
     def __init__(self, *args) -> NoReturn:
@@ -121,7 +134,9 @@ class NgUiCharm(CharmedOsmBase):
         # Create Builder for the PodSpec
         pod_spec_builder = PodSpecV3Builder()
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=config.port)
         container = container_builder.build()
         container_builder.add_tcpsocket_readiness_probe(
diff --git a/installers/charm/pla/config.yaml b/installers/charm/pla/config.yaml
index 1820188a1efb786323f0c2596879328904c0f4d2..75b19d82b5aa0ea546b40d5c996feaf1ff5f6517 100644
--- a/installers/charm/pla/config.yaml
+++ b/installers/charm/pla/config.yaml
@@ -27,3 +27,9 @@ options:
   mongodb_uri:
     type: string
     description: MongoDB URI (external database)
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/pla/src/charm.py b/installers/charm/pla/src/charm.py
index d9dfaa455d69653069b2fef366d3c413101387fc..2a08ea59ffaea6c9774d8c5220baa45db922f9b1 100755
--- a/installers/charm/pla/src/charm.py
+++ b/installers/charm/pla/src/charm.py
@@ -46,6 +46,7 @@ class ConfigModel(ModelValidator):
     database_commonkey: str
     mongodb_uri: Optional[str]
     log_level: str
+    image_pull_policy: Optional[str]
 
     @validator("log_level")
     def validate_log_level(cls, v):
@@ -59,6 +60,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("mongodb_uri is not properly formed")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class PlaCharm(CharmedOsmBase):
     def __init__(self, *args) -> NoReturn:
@@ -97,7 +110,9 @@ class PlaCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_envs(
             {
diff --git a/installers/charm/pol/config.yaml b/installers/charm/pol/config.yaml
index 909235e08f5eb6b8650dc088a2df8064c8c240f1..7b64f5746146f783050393a16a955d6634ce73a2 100644
--- a/installers/charm/pol/config.yaml
+++ b/installers/charm/pol/config.yaml
@@ -32,3 +32,9 @@ options:
     description: |
       Mysql URI with the following format:
         mysql://<user>:<password>@<mysql_host>:<mysql_port>/<database>
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/pol/src/charm.py b/installers/charm/pol/src/charm.py
index 1ad1e266415e7ffa32c45220f4e9e3f55a734cb5..727ffbeba86cfd3b1ab7d7fb011cdd69931f876f 100755
--- a/installers/charm/pol/src/charm.py
+++ b/installers/charm/pol/src/charm.py
@@ -49,6 +49,7 @@ class ConfigModel(ModelValidator):
     log_level: str
     mongodb_uri: Optional[str]
     mysql_uri: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("log_level")
     def validate_log_level(cls, v):
@@ -69,6 +70,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("mysql_uri is not properly formed")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class PolCharm(CharmedOsmBase):
     def __init__(self, *args) -> NoReturn:
@@ -114,7 +127,9 @@ class PolCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_envs(
             {
diff --git a/installers/charm/prometheus/config.yaml b/installers/charm/prometheus/config.yaml
index c1c0fb934e978bf8f77043ea915ccf76a7fba671..6ce1613bea00f4eb548c5857e3e4fda0ea1e67e2 100644
--- a/installers/charm/prometheus/config.yaml
+++ b/installers/charm/prometheus/config.yaml
@@ -65,3 +65,9 @@ options:
     type: boolean
     description: Boolean to enable the web admin api
     default: false
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/prometheus/src/charm.py b/installers/charm/prometheus/src/charm.py
index e3e0e4240225c842a734266e83f32f50d7de665e..3dcb5d412cfef1d4f8c979ea4cad4c9f7cd543c8 100755
--- a/installers/charm/prometheus/src/charm.py
+++ b/installers/charm/prometheus/src/charm.py
@@ -60,6 +60,7 @@ class ConfigModel(ModelValidator):
     ingress_whitelist_source_range: Optional[str]
     tls_secret_name: Optional[str]
     enable_web_admin_api: bool
+    image_pull_policy: Optional[str]
 
     @validator("web_subpath")
     def validate_web_subpath(cls, v):
@@ -87,6 +88,18 @@ class ConfigModel(ModelValidator):
             ip_network(v)
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
 
 class PrometheusCharm(CharmedOsmBase):
 
@@ -157,7 +170,9 @@ class PrometheusCharm(CharmedOsmBase):
         pod_spec_builder.add_container(backup_container)
 
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         container_builder.add_port(name=self.app.name, port=PORT)
         container_builder.add_http_readiness_probe(
             "/-/ready",
diff --git a/installers/charm/ro/config.yaml b/installers/charm/ro/config.yaml
index 0d3c9a0da9a2918e1dbcc0ae061d80a2a7a19826..5bb0362aad39736b38385ea5da1544bb81fb946a 100644
--- a/installers/charm/ro/config.yaml
+++ b/installers/charm/ro/config.yaml
@@ -70,3 +70,9 @@ options:
         name: name of the file for the certificate
         content: base64 content of the certificate
       The path for the files is /certs.
+  image_pull_policy:
+    type: string
+    description: |
+      ImagePullPolicy configuration for the pod.
+      Possible values: always, ifnotpresent, never
+    default: always
diff --git a/installers/charm/ro/src/charm.py b/installers/charm/ro/src/charm.py
index 951f281be542702e69ecdc06bea93fd14487edc4..d87007e7c340c5ea324b1c67b93b65e9a5f6de6c 100755
--- a/installers/charm/ro/src/charm.py
+++ b/installers/charm/ro/src/charm.py
@@ -73,6 +73,7 @@ class ConfigModel(ModelValidator):
     ro_database: str
     openmano_tenant: str
     certificates: Optional[str]
+    image_pull_policy: Optional[str]
 
     @validator("log_level")
     def validate_log_level(cls, v):
@@ -98,6 +99,18 @@ class ConfigModel(ModelValidator):
             raise ValueError("Mysql port out of range")
         return v
 
+    @validator("image_pull_policy")
+    def validate_image_pull_policy(cls, v):
+        values = {
+            "always": "Always",
+            "ifnotpresent": "IfNotPresent",
+            "never": "Never",
+        }
+        v = v.lower()
+        if v not in values.keys():
+            raise ValueError("value must be always, ifnotpresent or never")
+        return values[v]
+
     @property
     def certificates_dict(cls):
         return _extract_certificates(cls.certificates) if cls.certificates else {}
@@ -196,7 +209,9 @@ class RoCharm(CharmedOsmBase):
         pod_spec_builder = PodSpecV3Builder()
 
         # Build Container
-        container_builder = ContainerV3Builder(self.app.name, image_info)
+        container_builder = ContainerV3Builder(
+            self.app.name, image_info, config.image_pull_policy
+        )
         certs_files = self._build_cert_files(config)
 
         if certs_files: