diff --git a/fio/fio_setup.py b/fio/fio_setup.py
index 3220aab..b788b1c 100644
--- a/fio/fio_setup.py
+++ b/fio/fio_setup.py
@@ -1,3 +1,4 @@
+import base64
 import multiprocessing as mp
 import os
 import random
@@ -6,6 +7,7 @@
 
 import connection as conn
 from openstack.exceptions import ResourceFailure
+from oslo_utils import encodeutils
 
 
 compute = conn.cloud.compute
@@ -74,11 +76,15 @@
 
 def create_fio_client(
         image_id: str, flavor_id: str, networks: List,
-        key_name: str, security_groups: List, server_group_id: str
+        key_name: str, security_groups: List, server_group_id: str,
+        user_data: str
 ) -> None:
     rand_name = str(random.randint(1, 0x7fffffff))
     vm_name = f"{CLIENT_NAME_MASK}-{rand_name}"
 
+    kwargs = {}
+    if user_data:
+        kwargs['user_data'] = user_data
     vm = compute.create_server(
         name=vm_name,
         image_id=image_id,
@@ -86,7 +92,8 @@
         networks=networks,
         key_name=key_name,
         security_groups=security_groups,
-        scheduler_hints={'group': server_group_id})
+        scheduler_hints={'group': server_group_id},
+        **kwargs)
     try:
         vm = compute.wait_for_server(vm, wait=180)
         print(f"Fio client '{vm.name}' is created on '{vm.compute_host}' node")
@@ -201,13 +208,20 @@
         server_group = compute.create_server_group(
             name=AA_SERVER_GROUP_NAME, policies=['soft-anti-affinity'])
 
+    # Prepare user data for fio client VMs
+    udata = None
+    with open('user_data.sh', 'r') as script:
+        f = encodeutils.safe_encode(script.read().encode('utf-8'))
+        udata = base64.b64encode(f).decode('utf-8')
+
     vm_kwargs = dict(
         image_id=img.id,
         flavor_id=flavor.id,
         networks=[{'uuid': fio_net.id}],
         key_name=KEYPAIR_NAME,
         security_groups=[{'name': SG_NAME}],
-        server_group_id=server_group.id)
+        server_group_id=server_group.id,
+        user_data=udata)
 
     # Create fio client VMs in parallel in batches of CONCURRENCY size
     with mp.Pool(processes=CONCURRENCY) as pool:
diff --git a/fio/user_data.sh b/fio/user_data.sh
new file mode 100644
index 0000000..dc37dfc
--- /dev/null
+++ b/fio/user_data.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# In necessary, uncomment to add proxy
+# echo "Acquire::https::Proxy \"http://PROXY_ENDPOINT\";" >> /etc/apt/apt.conf.d/proxy.conf
+# echo "Acquire::http::Proxy \"http://PROXY_ENDPOINT\";" >> /etc/apt/apt.conf.d/proxy.conf
+apt update
+# Install fio with a timeout to wait for apt lock to be released
+apt -y -o DPkg::Lock::Timeout=180 install fio
\ No newline at end of file
