diff --git a/linux/files/apt.conf b/linux/files/apt.conf
index 709fbd6..f685f3d 100644
--- a/linux/files/apt.conf
+++ b/linux/files/apt.conf
@@ -1,7 +1,7 @@
 // apt.conf file managed by salt-minion
 // DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
 
-{%- for key, value in config.iteritems() %}
+{%- for key, value in config.items() %}
 {{ key }} {% if value is iterable and value is not string %}{ {% for entry in value %}"{{ entry }}";{% endfor %} } {% else %}{{ value }};{% endif %}
 {%- endfor %}
 {#-
diff --git a/linux/files/cgconfig.conf b/linux/files/cgconfig.conf
index 0ea2e75..6074160 100644
--- a/linux/files/cgconfig.conf
+++ b/linux/files/cgconfig.conf
@@ -2,11 +2,11 @@
 ##
 ## This is cgconfig configuration file is managed by Salt
 ##
-{%- for cgroup_name, cg in system.cgroup.group.iteritems() %}
+{%- for cgroup_name, cg in system.cgroup.group.items() %}
 group {{ cgroup_name }} {
-  {%- for controller_name, controller in cg.controller.iteritems() %}
+  {%- for controller_name, controller in cg.controller.items() %}
         {{ controller_name }} {
-    {%- for v_name, v in controller.iteritems() %}
+    {%- for v_name, v in controller.items() %}
                 {{ controller_name }}.{{ v_name }}="{{ v.value }}";
     {%- endfor %}
 
diff --git a/linux/files/cgrules.conf b/linux/files/cgrules.conf
index 116a9d6..aee7726 100644
--- a/linux/files/cgrules.conf
+++ b/linux/files/cgrules.conf
@@ -3,8 +3,8 @@
 ## This is cgrules configuration file is managed by Salt
 ##
 #<user/group>         <controller(s)>         <cgroup>
-{%- for cgroup_name, cg in system.cgroup.group.iteritems() %}
+{%- for cgroup_name, cg in system.cgroup.group.items() %}
 {%- for subject in cg.mapping.subjects %}
-{{ subject }}{% raw %}         {% endraw %}{%- for controller_name, controller in cg.controller.iteritems() -%}{{ controller_name }}{%- if not loop.last -%},{%- endif -%}{%- endfor -%}{% raw %}         {% endraw %}{{ cgroup_name }}
+{{ subject }}{% raw %}         {% endraw %}{%- for controller_name, controller in cg.controller.items() -%}{{ controller_name }}{%- if not loop.last -%},{%- endif -%}{%- endfor -%}{% raw %}         {% endraw %}{{ cgroup_name }}
 {%- endfor %}
 {%- endfor %}
diff --git a/linux/files/dhclient.conf b/linux/files/dhclient.conf
index 1f767c6..bab0de8 100644
--- a/linux/files/dhclient.conf
+++ b/linux/files/dhclient.conf
@@ -95,7 +95,7 @@
 option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
 {{ render_section(dhclient) }}
 {%- if dhclient.get("interface") -%}
-{%- for iface_name, options in dhclient.interface.iteritems() %}
+{%- for iface_name, options in dhclient.interface.items() %}
 {%- if network.interface.get(iface_name) and network.interface.get(iface_name).enabled == True
    and network.interface.get(iface_name).proto == 'dhcp' -%}
 interface "{{ iface_name }}" {
diff --git a/linux/files/dpdk_interfaces b/linux/files/dpdk_interfaces
index 97ebf30..688c889 100644
--- a/linux/files/dpdk_interfaces
+++ b/linux/files/dpdk_interfaces
@@ -1,5 +1,5 @@
 {%- from "linux/map.jinja" import network with context %}
-{%- for interface_name, interface in network.interface.iteritems() %}
+{%- for interface_name, interface in network.interface.items() %}
 {%- if 'dpdk' in interface.type and interface.pci is defined %}
 pci {{ interface.pci }} {{ interface.driver }}
 {%- endif %}
diff --git a/linux/files/etc_environment b/linux/files/etc_environment
index 0ffa7e1..a09dbc6 100644
--- a/linux/files/etc_environment
+++ b/linux/files/etc_environment
@@ -1,5 +1,5 @@
 
-{%- for name,value in variables.iteritems() if not name.lower().endswith('_proxy') %}
+{%- for name,value in variables.items() if not name.lower().endswith('_proxy') %}
 
 {%- if value is sequence and value is not string %}
 {{ name }}="{{ value|join(':') }}"
diff --git a/linux/files/grub_hugepages b/linux/files/grub_hugepages
index 509cc11..f7c7aa7 100644
--- a/linux/files/grub_hugepages
+++ b/linux/files/grub_hugepages
@@ -1,2 +1,2 @@
 {%- from "linux/map.jinja" import system with context %}
-GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT {%- for hugepages_type, hugepages in system.kernel.hugepages.iteritems() %}{%- if hugepages.get('default', False) %} default_hugepagesz={{ hugepages.size }} {%- endif %} hugepagesz={{ hugepages.size }} hugepages={{ hugepages.count }} {%- endfor %}"
+GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT {%- for hugepages_type, hugepages in system.kernel.hugepages.items() %}{%- if hugepages.get('default', False) %} default_hugepagesz={{ hugepages.size }} {%- endif %} hugepagesz={{ hugepages.size }} hugepages={{ hugepages.count }} {%- endfor %}"
diff --git a/linux/files/hosts b/linux/files/hosts
index 4971f6c..17ee079 100644
--- a/linux/files/hosts
+++ b/linux/files/hosts
@@ -31,7 +31,7 @@
         'ip6-allhosts'
     ],
 } -%}
-{%- for name, host in host_dict.iteritems() -%}
+{%- for name, host in host_dict.items() -%}
 {%- for hname in host.names -%}
 {%- if hname in hosts.get('127.0.1.1', []) -%}
 {%- do hosts.pop('127.0.1.1') -%}
diff --git a/linux/files/lvm.conf b/linux/files/lvm.conf
index 02f1c74..e6b8a58 100644
--- a/linux/files/lvm.conf
+++ b/linux/files/lvm.conf
@@ -129,7 +129,7 @@
         # Example
         # Accept every block device:
 
-        filter = [ {%- for vgname, vg in storage.lvm.iteritems() %}{%- if vg.get('enabled', True) %}{%- for dev in vg.devices %}"a|{{ dev }}*|"{%- if not loop.last %},{%- endif %}{%- endfor %}{%- endif %}{%- endfor %}, "r|.*|" ]
+        filter = [ {%- for vgname, vg in storage.lvm.items() %}{%- if vg.get('enabled', True) %}{%- for dev in vg.devices %}"a|{{ dev }}*|"{%- if not loop.last %},{%- endif %}{%- endfor %}{%- endif %}{%- endfor %}, "r|.*|" ]
 
         # filter = [ "a|.*/|" ]
         # Reject the cdrom drive:
diff --git a/linux/files/motd.sh b/linux/files/motd.sh
index d29fc88..8d1871c 100644
--- a/linux/files/motd.sh
+++ b/linux/files/motd.sh
@@ -1,7 +1,7 @@
 {%- from "linux/map.jinja" import system with context -%}
 {%- for motd in system.motd -%}
 {%- if loop.index == index -%}
-{%- for name, value in motd.iteritems() -%}
+{%- for name, value in motd.items() -%}
 {%- if name == motd_name -%}{{ value }}{%- endif %}
 {%- endfor -%}
 {%- endif -%}
diff --git a/linux/files/netconsole.conf b/linux/files/netconsole.conf
index 01b2ced..bf9ede3 100644
--- a/linux/files/netconsole.conf
+++ b/linux/files/netconsole.conf
@@ -8,7 +8,7 @@
 # unicast, could be multiline
 #netconsole ens3 192.168.1.32 fa:16:3e:8d:f6:d0
 {%- if system.netconsole is mapping and system.netconsole.target is mapping %}
-{%- for target, data in system.netconsole.target.iteritems() %}
+{%- for target, data in system.netconsole.target.items() %}
 {%- if data is mapping %}
 netconsole "{{ data.get('interface', '${interface}') }}" "{{ target }}" "{{ data.get('mac', '') }}"
 {%- endif %}
diff --git a/linux/files/nslcd.conf b/linux/files/nslcd.conf
index 772be85..4eb4134 100644
--- a/linux/files/nslcd.conf
+++ b/linux/files/nslcd.conf
@@ -52,14 +52,14 @@
 
 {%- if ldap.filter is defined %}
 # Filters
-{%- for key, value in ldap.filter.iteritems() %}
+{%- for key, value in ldap.filter.items() %}
 filter {{ key }} {{ value }}
 {%- endfor %}
 {%- endif %}
 {%- if ldap.map is defined %}
 # Mappings
-{%- for map_name,map in ldap.map.iteritems() %}
-{%- for key, value in map.iteritems() %}
+{%- for map_name,map in ldap.map.items() %}
+{%- for key, value in map.items() %}
 map {{ map_name }} {{ key }} {{ value }}
 {%- endfor %}
 {%- endfor %}
diff --git a/linux/files/prompt.sh b/linux/files/prompt.sh
index 0663bfd..27061d1 100644
--- a/linux/files/prompt.sh
+++ b/linux/files/prompt.sh
@@ -6,7 +6,7 @@
 # Don't set prompt on non-interactive shell
 [[ $- == *i* ]] || return 0
 
-{%- for user, prompt in system.prompt.iteritems() %}
+{%- for user, prompt in system.prompt.items() %}
 {% if user != "default" %}
 if [ "$USERNAME" == "{{ user }}" ]; then
   export PS1="{{ prompt }} "
diff --git a/linux/files/sources.list b/linux/files/sources.list
index ed41e7b..3166ba6 100644
--- a/linux/files/sources.list
+++ b/linux/files/sources.list
@@ -1,4 +1,4 @@
-{%- for name, repo in default_repos.iteritems() %}
+{%- for name, repo in default_repos.items() %}
 # Repository {{ name }}
 {{ repo.source }}
 {%- endfor %}
diff --git a/linux/files/sudoer-aliases b/linux/files/sudoer-aliases
index 9e44886..38b434c 100644
--- a/linux/files/sudoer-aliases
+++ b/linux/files/sudoer-aliases
@@ -1,19 +1,19 @@
 # sudoer aliases, file managed by salt-minion
 # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
 
-{%- for alias,commands in aliases.get('command',{}).iteritems() %}
+{%- for alias,commands in aliases.get('command',{}).items() %}
 Cmnd_Alias {{ alias }}={{ commands|join(', ') }}
 {%- endfor %}
 
-{%- for alias,users in aliases.get('user',{}).iteritems() %}
+{%- for alias,users in aliases.get('user',{}).items() %}
 User_Alias {{ alias }}={{ users|join(', ') }}
 {%- endfor %}
 
-{%- for alias,users in aliases.get('runas',{}).iteritems() %}
+{%- for alias,users in aliases.get('runas',{}).items() %}
 Runas_Alias {{ alias }}={{ users|join(', ') }}
 {%- endfor %}
 
-{%- for alias,hosts in aliases.get('host',{}).iteritems() %}
+{%- for alias,hosts in aliases.get('host',{}).items() %}
 Host_Alias {{ alias }}={{ hosts|join(', ') }}
 {%- endfor %}
 
diff --git a/linux/files/sudoer-groups b/linux/files/sudoer-groups
index b0c1fdf..ed8c479 100644
--- a/linux/files/sudoer-groups
+++ b/linux/files/sudoer-groups
@@ -1,7 +1,7 @@
 # sudoer groups, file managed by salt-minion
 # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
 
-{%- for group,spec in groups.iteritems() %}
+{%- for group,spec in groups.items() %}
 %{{ spec.name|default(group) }} {{ spec.get('hosts', ['ALL'])|join(',') }}=({{ spec.get('runas', ['ALL'])|join(', ') }}) {% if spec.get('nopasswd', True) %}NOPASSWD: {% endif %}{{ spec.get('commands', ['ALL'])|join(', ') }}
 {%- endfor %}
 
diff --git a/linux/files/sudoer-users b/linux/files/sudoer-users
index 738d25d..13cb2fe 100644
--- a/linux/files/sudoer-users
+++ b/linux/files/sudoer-users
@@ -1,7 +1,7 @@
 # sudoer users, file managed by salt-minion
 # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
 
-{%- for user,spec in users.iteritems() %}
+{%- for user,spec in users.items() %}
 {{ spec.name|default(user) }} {{ spec.get('hosts', ['ALL'])|join(',') }}=({{ spec.get('runas', ['ALL'])|join(', ') }}) {% if spec.get('nopasswd', True) %}NOPASSWD:{% endif %}{% if spec.get('setenv', False) %}SETENV:{% endif %} {{ spec.get('commands', ['ALL'])|join(', ') }}
 {%- endfor %}
 
diff --git a/linux/files/sysfs.conf b/linux/files/sysfs.conf
index 513a53a..ff26672 100644
--- a/linux/files/sysfs.conf
+++ b/linux/files/sysfs.conf
@@ -1,9 +1,9 @@
 # Sysfs file for {{ name }} managed by salt-minion(1)
 #   DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
 
-{%- for key, value in sysfs.iteritems() %}
+{%- for key, value in sysfs.items() %}
   {%- if key in ["mode", "owner"] %}
-    {%- for attr, val in value.iteritems() %}
+    {%- for attr, val in value.items() %}
 mode {{ attr }} = {{ val }}
     {%- endfor %}
   {%- else %}
diff --git a/linux/files/systemd-network.conf b/linux/files/systemd-network.conf
index 6a21b4f..4777adf 100644
--- a/linux/files/systemd-network.conf
+++ b/linux/files/systemd-network.conf
@@ -1,8 +1,8 @@
 {%- from "linux/map.jinja" import system with context -%}
-{%- for section, options in settings.iteritems() %}
+{%- for section, options in settings.items() %}
 
 [{{ section[0].upper() + section[1:] }}]
-{%- for option, value in options.iteritems() %}
+{%- for option, value in options.items() %}
 {{ option[0].upper() + option[1:] }}={{ value }}
 {%- endfor %}
 {%- endfor %}
diff --git a/linux/files/systemd.conf b/linux/files/systemd.conf
index 2663aed..3edb9a0 100644
--- a/linux/files/systemd.conf
+++ b/linux/files/systemd.conf
@@ -1,7 +1,7 @@
 {%- from "linux/map.jinja" import system with context -%}
-{%- for section, options in settings.iteritems() %}
+{%- for section, options in settings.items() %}
 [{{ section }}]
-{%- for option, value in options.iteritems() %}
+{%- for option, value in options.items() %}
 {{ option }}={{ value }}
 {%- endfor -%}
 {%- endfor -%}
diff --git a/linux/meta/meta.yml b/linux/meta/meta.yml
index 8d17c54..c2dfa95 100644
--- a/linux/meta/meta.yml
+++ b/linux/meta/meta.yml
@@ -6,7 +6,7 @@
   type: software-system
   relations:
   {%- if system.repo is defined %}
-  {%- for repo_name, repo in system.repo.iteritems() %}
+  {%- for repo_name, repo in system.repo.items() %}
   {%- if repo.get('enabled', True) %}
   - service: apt.repo
     host_external: {{ repo.source }}
diff --git a/linux/network/dpdk.sls b/linux/network/dpdk.sls
index 05fe05f..97a81b5 100644
--- a/linux/network/dpdk.sls
+++ b/linux/network/dpdk.sls
@@ -82,19 +82,19 @@
 
 {%- endif %}
 
-{%- for interface_name, interface in network.interface.iteritems() if interface.get('enabled', True) %}
+{%- for interface_name, interface in network.interface.items() if interface.get('enabled', True) %}
 
   {%- if interface.type == "dpdk_ovs_bond" %}
 
     {%- set bond_interfaces = {} %}
-    {%- for iface_name, iface in network.interface.iteritems() if iface.get('enabled', True) and iface.get('bond',"") == interface_name %}
+    {%- for iface_name, iface in network.interface.items() if iface.get('enabled', True) and iface.get('bond',"") == interface_name %}
       {#- Get list of child interfaces #}
       {%- do bond_interfaces.update({iface_name: iface}) %}
     {%- endfor %}
 
 linux_network_dpdk_bond_interface_{{ interface_name }}:
   cmd.run:
-    - name: "ovs-vsctl add-bond {{ interface.bridge }} {{ interface_name }} {{ bond_interfaces.keys()|join(' ') }} {% for iface_name, iface in bond_interfaces.iteritems() %}-- set Interface {{ iface_name }} type=dpdk options:dpdk-devargs={{ iface.pci }} {% endfor %}"
+    - name: "ovs-vsctl add-bond {{ interface.bridge }} {{ interface_name }} {{ bond_interfaces.keys()|join(' ') }} {% for iface_name, iface in bond_interfaces.items() %}-- set Interface {{ iface_name }} type=dpdk options:dpdk-devargs={{ iface.pci }} {% endfor %}"
     - unless: "ovs-vsctl show | grep {{ interface_name }}"
     - require:
         - cmd: linux_network_dpdk_bridge_interface_{{ interface.bridge }}
diff --git a/linux/network/host.sls b/linux/network/host.sls
index 14bd837..1281f73 100644
--- a/linux/network/host.sls
+++ b/linux/network/host.sls
@@ -5,7 +5,7 @@
 
 {%- if network.mine_dns_records %}
 
-{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
+{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').items() %}
 {%- if node_grains.get('dns_records', []) is iterable %}
 {%- for record in node_grains.get('dns_records', []) %}
 {%- set record_key = node_name ~ '-' ~ loop.index %}
@@ -28,12 +28,12 @@
 
 {%- else %}
 
-{%- for name, host in host_dict.iteritems() %}
+{%- for name, host in host_dict.items() %}
 
 {%- if host.names is defined %}
 
 {%- set clearers = [] %}
-{%- for etc_addr, etc_names in salt.hosts.list_hosts().iteritems() %}
+{%- for etc_addr, etc_names in salt.hosts.list_hosts().items() %}
 {%- set names_to_clear = [] %}
 {%- for host_name in host.names %}
 {%- if (host.address != etc_addr) and host_name in etc_names %}
diff --git a/linux/network/interface.sls b/linux/network/interface.sls
index b9c1c41..7375b04 100644
--- a/linux/network/interface.sls
+++ b/linux/network/interface.sls
@@ -53,7 +53,7 @@
 
 {%- endif %}
 
-{%- for interface_name, interface in network.interface.iteritems() %}
+{%- for interface_name, interface in network.interface.items() %}
 
 {%- set interface_name = interface.get('name', interface_name) %}
 
@@ -69,7 +69,7 @@
   - name: {{ interface_name }}
 
 {# add linux network interface into OVS bridge #}
-{%- for int_name, int in network.interface.iteritems() %}
+{%- for int_name, int in network.interface.items() %}
 
 {%- set int_name = int.get('name', int_name) %}
 
@@ -340,7 +340,7 @@
   network.routes:
   - name: {{ interface_name }}
   - routes:
-    {%- for route_name, route in interface.route.iteritems() %}
+    {%- for route_name, route in interface.route.items() %}
     - name: {{ route_name }}
       ipaddr: {{ route.address }}
       netmask: {{ route.netmask }}
diff --git a/linux/network/systemd.sls b/linux/network/systemd.sls
index a8e1f24..68208f0 100644
--- a/linux/network/systemd.sls
+++ b/linux/network/systemd.sls
@@ -2,7 +2,7 @@
 {%- if network.enabled and grains.get('init', None) == 'systemd' %}
 
 {%- if network.systemd is mapping %}
-{%- for config_type, configs in network.systemd.iteritems() %}
+{%- for config_type, configs in network.systemd.items() %}
 
 {%- if config_type == 'link' %}
 /etc/udev/rules.d/80-net-setup-link.rules:
@@ -11,7 +11,7 @@
     - content: ""
 {%- endif %}
 
-{%- for config_name, config in configs.iteritems() %}
+{%- for config_name, config in configs.items() %}
 linux_network_systemd_networkd_{{ config_type }}_config_{{ config_name }}:
   file.managed:
     - name: /etc/systemd/network/{{ config_name }}.{{ config_type }}
diff --git a/linux/storage/disk.sls b/linux/storage/disk.sls
index 493b8df..a088aae 100644
--- a/linux/storage/disk.sls
+++ b/linux/storage/disk.sls
@@ -7,7 +7,7 @@
 xfsprogs:
   pkg.installed
 
-{%- for disk_name, disk in storage.disk.iteritems() %}
+{%- for disk_name, disk in storage.disk.items() %}
 {%- set disk_name = disk.name|default(disk_name) %}
 
 create_disk_label_{{ disk_name }}:
diff --git a/linux/storage/lvm.sls b/linux/storage/lvm.sls
index 2a0a67c..6d1797d 100644
--- a/linux/storage/lvm.sls
+++ b/linux/storage/lvm.sls
@@ -22,7 +22,7 @@
   - watch:
     - file: /etc/lvm/lvm.conf
 
-{%- for vgname, vg in storage.lvm.iteritems() %}
+{%- for vgname, vg in storage.lvm.items() %}
 
 {%- if vg.get('enabled', True) %}
 
@@ -43,7 +43,7 @@
     - name: {{ vg.get('name', vgname) }}
     - devices: {{ vg.devices|join(',') }}
 
-{%- for lvname, volume in vg.get('volume', {}).iteritems() %}
+{%- for lvname, volume in vg.get('volume', {}).items() %}
 
 lvm_{{ vg.get('name', vgname) }}_lv_{{ volume.get('name', lvname) }}:
   lvm.lv_present:
@@ -66,4 +66,4 @@
 
 {%- endfor %}
 
-{%- endif %}
\ No newline at end of file
+{%- endif %}
diff --git a/linux/storage/swap.sls b/linux/storage/swap.sls
index f2e3a2d..7b8d82e 100644
--- a/linux/storage/swap.sls
+++ b/linux/storage/swap.sls
@@ -1,7 +1,7 @@
 {%- from "linux/map.jinja" import storage with context %}
 {%- if storage.enabled %}
 
-{%- for swap_name, swap in storage.swap.iteritems() %}
+{%- for swap_name, swap in storage.swap.items() %}
 
 {%- if swap.enabled %}
 
diff --git a/linux/system/apt.sls b/linux/system/apt.sls
index dca8135..0c3f7a7 100644
--- a/linux/system/apt.sls
+++ b/linux/system/apt.sls
@@ -7,7 +7,7 @@
 - linux.system.repo
 {%- endif %}
 
-{%- for key, config in system.apt.get('config', {}).iteritems() %}
+{%- for key, config in system.apt.get('config', {}).items() %}
 
 linux_apt_conf_{{ key }}:
   file.managed:
diff --git a/linux/system/certificate.sls b/linux/system/certificate.sls
index ffa20c4..58ccb7e 100644
--- a/linux/system/certificate.sls
+++ b/linux/system/certificate.sls
@@ -8,7 +8,7 @@
     - name: ca-certificates
 {%- if system.ca_certificates is mapping %}
 
-{%- for name, cert in system.ca_certificates.iteritems() %}
+{%- for name, cert in system.ca_certificates.items() %}
 {{ system.ca_certs_dir }}/{{ name }}.crt:
   file.managed:
   - contents_pillar: "linux:system:ca_certificates:{{ name }}"
diff --git a/linux/system/config.sls b/linux/system/config.sls
index 0c965da..8f13a71 100644
--- a/linux/system/config.sls
+++ b/linux/system/config.sls
@@ -3,13 +3,13 @@
 
 {%- if system.enabled %}
 
-  {%- for config_name, config in system.get('config', {}).iteritems() %}
+  {%- for config_name, config in system.get('config', {}).items() %}
     {%- if config.enabled|default(True) %}
       {%- for service_name in config.pillar.keys() %}
         {%- if pillar.get(service_name, {}).get('_support', {}).get('config', {}).get('enabled', False) %}
           {%- set support_fragment_file = service_name+'/meta/config.yml' %}
           {%- set service_config_files = load_support_file(support_fragment_file, config.pillar, config.get('grains', {}))|load_yaml %}
-          {%- for service_config_name, service_config in service_config_files.config.iteritems() %}
+          {%- for service_config_name, service_config in service_config_files.config.items() %}
 
 {{ service_config.path }}:
   file.managed:
@@ -24,7 +24,7 @@
     - defaults:
         pillar: {{ config.pillar|yaml }}
         grains: {{ config.get('grains', {}) }}
-        {%- for key, value in service_config.get('defaults', {}).iteritems() %}
+        {%- for key, value in service_config.get('defaults', {}).items() %}
         {{ key }}: {{ value }}
         {%- endfor %}
 
diff --git a/linux/system/console.sls b/linux/system/console.sls
index 3112bc5..8e5f3ab 100644
--- a/linux/system/console.sls
+++ b/linux/system/console.sls
@@ -3,7 +3,7 @@
 
 {%- if system.console is defined %}
 
-{%- for tty_name, console in system.console.iteritems() %}
+{%- for tty_name, console in system.console.items() %}
 
 {%- if grains.get('init', None) == 'upstart' %}
 {{ tty_name }}_service_file:
diff --git a/linux/system/directory.sls b/linux/system/directory.sls
index f53a870..81bff4d 100644
--- a/linux/system/directory.sls
+++ b/linux/system/directory.sls
@@ -1,11 +1,11 @@
 {%- from "linux/map.jinja" import system with context %}
 
-{%- for name, dir in system.directory.iteritems() %}
+{%- for name, dir in system.directory.items() %}
 
 {{ dir.name|default(name) }}:
   file.directory:
     {%- if dir %}
-      {%- for key, value in dir.iteritems() %}
+      {%- for key, value in dir.items() %}
     - {{ key }}: {{ value }}
       {%- endfor %}
     {%- else %}
diff --git a/linux/system/file.sls b/linux/system/file.sls
index ba24860..0de42fe 100644
--- a/linux/system/file.sls
+++ b/linux/system/file.sls
@@ -1,7 +1,7 @@
 {%- from "linux/map.jinja" import system with context %}
 {%- if system.enabled %}
 
-{%- for file_name, file in system.file.iteritems() %}
+{%- for file_name, file in system.file.items() %}
 
 linux_file_{{ file_name }}:
   file.managed:
diff --git a/linux/system/group.sls b/linux/system/group.sls
index 1a241a8..0e5545a 100644
--- a/linux/system/group.sls
+++ b/linux/system/group.sls
@@ -7,7 +7,7 @@
   {%- endif -%}
 {%- endmacro -%}
 
-{%- for group_name, group in system.group.iteritems() %}
+{%- for group_name, group in system.group.items() %}
 
 {%- if group.enabled %}
 
diff --git a/linux/system/hugepages.sls b/linux/system/hugepages.sls
index 59bf813..81eb7d6 100644
--- a/linux/system/hugepages.sls
+++ b/linux/system/hugepages.sls
@@ -17,7 +17,7 @@
 
 {%- endif %}
 
-{%- for hugepages_type, hugepages in system.kernel.hugepages.iteritems() %}
+{%- for hugepages_type, hugepages in system.kernel.hugepages.items() %}
 
 {%- if hugepages.get('mount', False) or hugepages.get('default', False) %}
 
diff --git a/linux/system/job.sls b/linux/system/job.sls
index 09ae0de..af42b58 100644
--- a/linux/system/job.sls
+++ b/linux/system/job.sls
@@ -4,7 +4,7 @@
 include:
 - linux.system.user
 
-{%- for name, job in system.job.iteritems() %}
+{%- for name, job in system.job.items() %}
 
 linux_job_{{ job.command }}:
   {%- if job.enabled|default(True) %}
diff --git a/linux/system/kernel.sls b/linux/system/kernel.sls
index 226a540..0f50a19 100644
--- a/linux/system/kernel.sls
+++ b/linux/system/kernel.sls
@@ -56,7 +56,7 @@
 
 {%- endfor %}
 
-{%- for module_name, module_content in system.kernel.get('module', {}).iteritems() %}
+{%- for module_name, module_content in system.kernel.get('module', {}).items() %}
 
 /etc/modprobe.d/{{ module_name }}.conf:
   file.managed:
@@ -71,7 +71,7 @@
 
 {%- endfor %}
 
-{%- for sysctl_name, sysctl_value in system.kernel.get('sysctl', {}).iteritems() %}
+{%- for sysctl_name, sysctl_value in system.kernel.get('sysctl', {}).items() %}
 
 linux_kernel_{{ sysctl_name }}:
   sysctl.present:
diff --git a/linux/system/limit.sls b/linux/system/limit.sls
index bb29268..8f424d8 100644
--- a/linux/system/limit.sls
+++ b/linux/system/limit.sls
@@ -1,7 +1,7 @@
 {%- from "linux/map.jinja" import system with context %}
 {%- if system.enabled %}
 
-{%- for name, limit in system.limit.iteritems() %}
+{%- for name, limit in system.limit.items() %}
 
 linux_limit_{{ name }}:
   {%- if limit.get('enabled', True) %}
diff --git a/linux/system/locale.sls b/linux/system/locale.sls
index 2941c17..656aeb3 100644
--- a/linux/system/locale.sls
+++ b/linux/system/locale.sls
@@ -1,7 +1,7 @@
 {%- from "linux/map.jinja" import system with context %}
 {%- if system.enabled %}
 
-{%- for locale_name, locale in system.locale.iteritems() %}
+{%- for locale_name, locale in system.locale.items() %}
 {%- if locale.get('enabled', True) %}
 
 linux_locale_{{ locale_name }}:
diff --git a/linux/system/motd.sls b/linux/system/motd.sls
index f6cdc47..c44b81e 100644
--- a/linux/system/motd.sls
+++ b/linux/system/motd.sls
@@ -36,7 +36,7 @@
 {%- for motd in system.motd %}
 {%- set motd_index = loop.index %}
 
-{%- for name, value in motd.iteritems() %}
+{%- for name, value in motd.items() %}
 motd_{{ motd_index }}_{{ name }}:
   file.managed:
     - name: /etc/update-motd.d/5{{ motd_index }}-{{ name }}
diff --git a/linux/system/netconsole.sls b/linux/system/netconsole.sls
index 92dab5d..0df0e83 100644
--- a/linux/system/netconsole.sls
+++ b/linux/system/netconsole.sls
@@ -24,7 +24,7 @@
     - template: jinja
 
 {% if system.netconsole is mapping and system.netconsole.target is mapping %}
-{% for target, data in system.netconsole.target.iteritems() %}
+{% for target, data in system.netconsole.target.items() %}
 {% if data is mapping and data.interface is defined %}
 /etc/network/if-up.d/netconsole {{ target }} {{ data.interface }}:
   cmd.run:
diff --git a/linux/system/package.sls b/linux/system/package.sls
index 4f42ec8..276194c 100644
--- a/linux/system/package.sls
+++ b/linux/system/package.sls
@@ -7,7 +7,7 @@
   'removed': [],
   'installed': [],
   } %}
-{%- for name, package in system.package.iteritems() %}
+{%- for name, package in system.package.items() %}
 
   {%- if package.repo is defined or package.hold is defined or package.verify is defined %}
 linux_extra_package_{{ name }}:
@@ -47,7 +47,7 @@
 
 {%- endfor %}
 
-{%- for pkgs_group, pkgs in pkgs_groups.iteritems() %}
+{%- for pkgs_group, pkgs in pkgs_groups.items() %}
   {%- if pkgs %}
 linux_extra_packages_{{ pkgs_group }}:
   pkg.{{ pkgs_group }}:
diff --git a/linux/system/profile.sls b/linux/system/profile.sls
index 7e1fb28..bc74489 100644
--- a/linux/system/profile.sls
+++ b/linux/system/profile.sls
@@ -9,7 +9,7 @@
 
 {%- if system.profile|length > 0 %}
 
-{%- for name, script in system.profile.iteritems() %}
+{%- for name, script in system.profile.items() %}
 profile.d_script_{{ name  }}:
     file.managed:
     - name: /etc/profile.d/salt_profile_{{ name }}{%if name.split('.')|length == 1 %}.sh{% endif %}
diff --git a/linux/system/repo.sls b/linux/system/repo.sls
index 5d4d059..ace6dab 100644
--- a/linux/system/repo.sls
+++ b/linux/system/repo.sls
@@ -38,7 +38,7 @@
 
 {%- endif %}
 
-{%- for name, repo in system.repo.iteritems() %}
+{%- for name, repo in system.repo.items() %}
 {%- set name=repo.get('name', name) %}
 {%- if grains.os_family == 'Debian' %}
 
@@ -201,7 +201,7 @@
 {#- os_family Redhat #}
 {%- endif %}
 
-{#- repo.iteritems() loop #}
+{#- repo.items() loop #}
 {%- endfor %}
 
 {%- if default_repos|length > 0 and grains.os_family == 'Debian' %}
diff --git a/linux/system/service.sls b/linux/system/service.sls
index 869760d..a6f9f02 100644
--- a/linux/system/service.sls
+++ b/linux/system/service.sls
@@ -1,7 +1,7 @@
 {%- from "linux/map.jinja" import system with context %}
 {%- if system.enabled %}
 
-{%- for name, service in system.service.iteritems() %}
+{%- for name, service in system.service.items() %}
 
 linux_service_{{ name }}:
   service.{{ service.status }}:
diff --git a/linux/system/sysfs.sls b/linux/system/sysfs.sls
index fdf1686..71c560b 100644
--- a/linux/system/sysfs.sls
+++ b/linux/system/sysfs.sls
@@ -11,7 +11,7 @@
     - require:
       - pkg: linux_sysfs_package
 
-{%- for name, sysfs in system.get('sysfs', {}).iteritems() %}
+{%- for name, sysfs in system.get('sysfs', {}).items() %}
 
 /etc/sysfs.d/{{ name }}.conf:
   file.managed:
@@ -26,7 +26,7 @@
     - require:
       - file: /etc/sysfs.d
 
-  {%- for key, value in sysfs.iteritems() %}
+  {%- for key, value in sysfs.items() %}
     {%- if key not in ["mode", "owner"] %}
       {%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %}
       {#- Sysfs cannot be set in docker, LXC, etc. #}
diff --git a/linux/system/user.sls b/linux/system/user.sls
index fc64038..5e37b5d 100644
--- a/linux/system/user.sls
+++ b/linux/system/user.sls
@@ -4,7 +4,7 @@
 include:
   - linux.system.group
 
-{%- for name, user in system.user.iteritems() %}
+{%- for name, user in system.user.items() %}
 
 {%- if user.enabled %}
 
