ansible - 使用 Ansible 在 sysctl 中设置多个值
问题描述
我有一个剧本,其中有几个任务为 sysctl 设置值。我如何使用 sysctl 模块通过一项任务设置所有值,而不是为每个设置设置一个任务?
剧本片段:
- name: Set tcp_keepalive_probes in sysctl
become: yes
sysctl:
name: net.ipv4.tcp_keepalive_probes
value: 3
state: present
reload: yes
- name: Set tcp_keepalive_intvl in sysctl
become: yes
sysctl:
name: net.ipv4.tcp_keepalive_intvl
value: 10
state: present
reload: yes
- name: Set rmem_default in sysctl
become: yes
sysctl:
name: net.core.rmem_default
value: 16777216
state: present
reload: yes
解决方案
简单的解决方案:将变量定义为字典
示例剧本:
---
- hosts: all
gather_facts: false
become: true
vars:
ansible_python_interpreter: /usr/bin/python3
sysctl_config:
net.ipv4.ip_forward: 1
net.ipv4.conf.all.forwarding: 1
net.ipv6.conf.all.forwarding: 1
tasks:
- name: Change various sysctl-settings
sysctl:
name: '{{ item.key }}'
value: '{{ item.value }}'
sysctl_set: yes
state: present
reload: yes
ignoreerrors: yes
with_dict: '{{ sysctl_config }}'
输出:
TASK [Change various sysctl-settings] **********************************************************************************************************************************************************************
changed: [10.10.10.10] => (item={'key': 'net.ipv4.ip_forward', 'value': 1}) => {
"ansible_loop_var": "item",
"changed": true,
"item": {
"key": "net.ipv4.ip_forward",
"value": 1
}
}
changed: [10.10.10.10] => (item={'key': 'net.ipv4.conf.all.forwarding', 'value': 1}) => {
"ansible_loop_var": "item",
"changed": true,
"item": {
"key": "net.ipv4.conf.all.forwarding",
"value": 1
}
}
changed: [10.10.10.10] => (item={'key': 'net.ipv6.conf.all.forwarding', 'value': 1}) => {
"ansible_loop_var": "item",
"changed": true,
"item": {
"key": "net.ipv6.conf.all.forwarding",
"value": 1
}
}
推荐阅读
- elasticsearch - 如何通过 REST API 查询 Kibana 数据
- r - 如何遍历 R 中的股票/共同基金数据
- continuous-integration - Gitlab CI/CD 的不同类型的缓存
- azure - 没有公共 IP 的 Azure VMSS
- docker - 将 Http 请求从一个 docker 容器发送到另一个
- ruby-on-rails - Rails 6 在开发中无法正确自动加载类(zeitwerk 模式)
- python-3.x - AWS SSM Python / Boto3 创建混合激活 ExpirationDate 类型错误
- python - Python'for'循环性能太慢
- c++ - Qt QMainWindow - Valgrind 报告内存泄漏
- php - Azure SQL MSI 与 PHP (PDO)