Merge "Add additional bonding options"
diff --git a/linux/files/60-net-txqueue.rules b/linux/files/60-net-txqueue.rules
index 7805c9c..8f6478c 100644
--- a/linux/files/60-net-txqueue.rules
+++ b/linux/files/60-net-txqueue.rules
@@ -1 +1 @@
-KERNEL==”tap[0-9a-z\-]*", RUN+="/sbin/ip link set %k txqueuelen {{ network.tap_custom_txqueuelen }}"
\ No newline at end of file
+KERNEL=="tap[0-9a-z\-]*", RUN+="/sbin/ip link set %k txqueuelen {{ tap_custom_txqueuelen }}"
diff --git a/linux/meta/prometheus.yml b/linux/meta/prometheus.yml
index bea6995..e8a26e3 100644
--- a/linux/meta/prometheus.yml
+++ b/linux/meta/prometheus.yml
@@ -14,6 +14,7 @@
SystemDiskSpaceTooLow:
if: 'predict_linear(disk_free[1h], 8*3600) < 0'
{% raw %}
+ for: 15m
labels:
severity: warning
service: system
@@ -21,6 +22,16 @@
summary: 'Free space for {{ $labels.path }} too low on {{ $labels.host }}'
description: 'The disk partition ({{ $labels.path }}) will be full in less than 8 hours on {{ $labels.host }}.'
{% endraw %}
+ SystemFreeOpenFilesTooLow:
+ if: 'predict_linear(linux_sysctl_fs_file_nr[1h], 8*3600) > linux_sysctl_fs_file_max'
+ {% raw %}
+ labels:
+ severity: warning
+ service: system
+ annotations:
+ summary: 'Free open files for {{ $labels.path }} too low on {{ $labels.host }}'
+ description: 'Host {{ $labels.host }}) will run out of free open files in less than 8 hours.'
+ {% endraw %}
SystemDiskSpaceFull:
if: 'disk_used_percent >= 99 and disk_inodes_total > 0'
{% raw %}
@@ -34,6 +45,7 @@
SystemDiskInodesTooLow:
if: 'predict_linear(disk_inodes_free[1h], 8*3600) < 0'
{% raw %}
+ for: 15m
labels:
severity: warning
service: system
diff --git a/linux/meta/telegraf.yml b/linux/meta/telegraf.yml
index 693638b..45fef5c 100644
--- a/linux/meta/telegraf.yml
+++ b/linux/meta/telegraf.yml
@@ -22,3 +22,4 @@
processes:
swap:
system:
+ linux_sysctl_fs:
diff --git a/linux/network/dhclient.sls b/linux/network/dhclient.sls
index 6de2cfd..c0b007b 100644
--- a/linux/network/dhclient.sls
+++ b/linux/network/dhclient.sls
@@ -8,4 +8,11 @@
- source: salt://linux/files/dhclient.conf
- template: jinja
+{%- elif network.dhclient.enabled is defined and network.dhclient.enabled == False %}
+
+kill_dhcp_client:
+ cmd.run:
+ - name: "pkill dhclient"
+ - onlyif: "pgrep dhclient"
+
{%- endif %}
diff --git a/linux/network/interface.sls b/linux/network/interface.sls
index c97e3dc..921ceac 100644
--- a/linux/network/interface.sls
+++ b/linux/network/interface.sls
@@ -45,6 +45,13 @@
{%- endfor %}
+{%- if network.interface is defined %}
+
+remove_cloud_init_file:
+ file.absent:
+ - name: /etc/network/interfaces.d/50-cloud-init.cfg
+
+{%- endif %}
{%- for interface_name, interface in network.interface.iteritems() %}
@@ -121,7 +128,7 @@
ovs_port_{{ interface_name }}_line1:
file.replace:
- name: /etc/network/interfaces
- - pattern: auto {{ interface_name }}
+ - pattern: auto {{ interface_name }}$
- repl: ""
ovs_port_{{ interface_name }}_line2:
@@ -218,7 +225,7 @@
linux_interface_ipflush_onchange_{{ interface_name }}:
cmd.run:
- - name: "/sbin/ip address flush dev {{ interface_name }}"
+ - name: "/sbin/ip address flush dev {{ interface_name }}; ifdown {{ interface_name }} ;ifup {{ interface_name }};"
- onchanges:
- network: linux_interface_{{ interface_name }}
@@ -246,7 +253,7 @@
remove_interface_{{ network }}_line1:
file.replace:
- name: /etc/network/interfaces
- - pattern: auto {{ network }}
+ - pattern: auto {{ network }}$
- repl: ""
remove_interface_{{ network }}_line2:
@@ -373,5 +380,19 @@
- source: salt://linux/files/60-net-txqueue.rules
- mode: 755
- template: jinja
+ - defaults:
+ tap_custom_txqueuelen: {{ network.tap_custom_txqueuelen }}
+
+udev_reload_rules:
+ cmd.run:
+ - name: "/bin/udevadm control --reload-rules"
+ - onchanges:
+ - file: /etc/udev/rules.d/60-net-txqueue.rules
+
+udev_retrigger:
+ cmd.run:
+ - name: "/bin/udevadm trigger --attr-match=subsystem=net"
+ - onchanges:
+ - udev_reload_rules
{%- endif %}
diff --git a/linux/storage/disk.sls b/linux/storage/disk.sls
index f6c70c5..493b8df 100644
--- a/linux/storage/disk.sls
+++ b/linux/storage/disk.sls
@@ -31,7 +31,9 @@
- name: partition.mkpart
- device: {{ disk_name }}
- part_type: primary
+ {%- if partition.type is defined %}
- fs_type: {{ partition.type }}
+ {%- endif %}
- start: {{ end_size }}MB
- end: {{ end_size + partition.size }}MB
- unless: "blkid {{ disk_name }}{{ loop.index }} {{ disk_name }}p{{ loop.index }}"
diff --git a/linux/storage/mount.sls b/linux/storage/mount.sls
index af77c26..90e9bd1 100644
--- a/linux/storage/mount.sls
+++ b/linux/storage/mount.sls
@@ -10,7 +10,7 @@
mkfs_{{ mount.device}}:
cmd.run:
- name: "mkfs.{{ mount.file_system }} -L {{ name }} {{ mount.device }}"
- - onlyif: "test `blkid {{ mount.device }} >/dev/null;echo $?` -eq 2"
+ - onlyif: "test `blkid {{ mount.device }} | grep -q TYPE;echo $?` -eq 1"
- require_in:
- mount: {{ mount.path }}
{%- if mount.file_system == 'xfs' %}
diff --git a/linux/system/kernel.sls b/linux/system/kernel.sls
index e3e6bd1..59b7177 100644
--- a/linux/system/kernel.sls
+++ b/linux/system/kernel.sls
@@ -3,11 +3,13 @@
{%- if system.kernel is defined %}
-{%- if system.kernel.isolcpu is defined %}
+{%- if system.kernel.isolcpu is defined or system.kernel.elevator is defined %}
include:
- linux.system.grub
+{%- if system.kernel.isolcpu is defined %}
+
/etc/default/grub.d/90-isolcpu.cfg:
file.managed:
- contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT isolcpus={{ system.kernel.isolcpu }}"'
@@ -20,6 +22,22 @@
{%- endif %}
{%- endif %}
+{%- if system.kernel.elevator is defined %}
+
+/etc/default/grub.d/91-elevator.cfg:
+ file.managed:
+ - contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT elevator={{ system.kernel.elevator }}"'
+ - require:
+ - file: grub_d_directory
+{%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %}
+ - watch_in:
+ - cmd: grub_update
+
+{%- endif %}
+{%- endif %}
+
+{%- endif %}
+
{%- if system.kernel.version is defined %}
linux_kernel_package:
diff --git a/tests/pillar/network_extended.sls b/tests/pillar/network_extended.sls
index 19587c9..e0e428d 100644
--- a/tests/pillar/network_extended.sls
+++ b/tests/pillar/network_extended.sls
@@ -8,6 +8,7 @@
hostname: linux
fqdn: linux.ci.local
network_manager: false
+ tap_custom_txqueuelen: 10000
interface:
eth0:
enabled: true
diff --git a/tests/pillar/system.sls b/tests/pillar/system.sls
index cba1aea..06a1bdc 100644
--- a/tests/pillar/system.sls
+++ b/tests/pillar/system.sls
@@ -18,6 +18,7 @@
default: "linux.ci.local$"
kernel:
isolcpu: 1,2,3,4
+ elevator: deadline
sysfs:
scheduler:
block/sda/queue/scheduler: deadline
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index 3f42101..9451611 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -110,7 +110,7 @@
}
salt_run() {
- [ -e ${VEN_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
+ [ -e ${VENV_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
salt-call ${SALT_OPTS} $*
}