1. 首页 > Linux教程 > 正文

Linux教程FG409-Ansible配置管理

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

风哥提示:

本文档介绍使用Ansible进行配置管理的方法。

Part01-系统配置管理

1.1 内核参数配置

# 系统配置管理Playbook
[root@ansible ~]# cat > /fglinux/ansible/playbooks/system_config.yml << 'EOF' --- - name: 系统配置管理 hosts: all become: yes vars: sysctl_config: net.core.somaxconn: 65535 net.core.netdev_max_backlog: 65535 net.ipv4.tcp_max_syn_backlog: 65535 net.ipv4.tcp_fin_timeout: 30 net.ipv4.tcp_keepalive_time: 1200 net.更多视频教程www.fgedu.net.cnipv4.tcp_keepalive_probes: 5 net.ipv4.tcp_keepalive_intvl: 30 net.ipv4.tcp_max_tw_buckets: 5000 net.ipv4.tcp_tw_reuse: 1 net.ipv4.tcp_syncookies: 1 vm.swappiness: 10 vm.dirty_ratio: 80 vm.dirty_background_ratio: 5 fs.file-max: 1000000 limits_config: - domain: '*' limit_item: nofile limit_type: soft value: 65535 - domain: '*' limit_item: nofile limit_type: hard value: 65535 - domain: '*' limit_item: nproc limit_type: soft value: 65535 - domain: '*' limit_item: nproc limit_type: hard value: 65535 tasks: - name: 配置内核参数 sysctl: 学习交流加群风哥QQ113257174 name: "{{ item.key }}" value: "{{ item.value }}" state: present reload: yes loop: "{{ sysctl_config | dict2items }}" - name: 配置系统限制 pam_limits: domain: "{{ item.domain }}" limit_item: "{{ item.limit_item }}" limit_type: "{{ item.limit_type }}" value: "{{ item.value }}" loop: "{{ limits_config }}" - name: 配置系统服务 service: name: "{{ item }}" state: stopped enabled: no loop: - firewalld - postfix ignore_errors: yes - name: 禁用SELinux selinux: state: disabled when: ansible_selinux.status == 'enabled' - name: 配置时间同步 dnf: name: chrony state: present - name: 配置NTP服务器 lineinfile: path: /etc/chrony.conf regexp: '^server' line: "server ntp.aliyun.com iburst" backup: yes notify: Restart Chrony - name: 启动时间同步服务 service: name: chronyd state: started enabled: yes - name: 配置主机名 hostname: name: "{{ inventory_hostname }}" - name: 配置hosts文件 lineinfile: path: /etc/hosts line: "{{ hostvars[item].ansible_host }} {{ item }}" state: present loop: "{{ groups.all }}" when: hostvars[item].ansible_host is defined handlers: - name: Restart Chrony service: name: chronyd state: restarted EOF # 执行系统配置 [root@ansible ~]# ansible-playbook /fglinux/ansible/playbooks/system_config.yml PLAY [系统配置管理] ********************************************************** TASK [Gathering Facts] ****************************************************** ok: [web1.fgedu.net.cn] TASK [配置内核参数] ********************************************************** changed: [web1.fgedu.net.cn] => (i学习交流加群风哥微信: itpux-comtem={‘key’: ‘net.core.somaxconn’, ‘value’: 65535})
changed: [web1.fgedu.net.cn] => (item={‘key’: ‘net.core.netdev_max_backlog’, ‘value’: 65535})
changed: [web1.fgedu.net.cn] => (item={‘key’: ‘net.ipv4.tcp_max_syn_backlog’, ‘value’: 65535})

TASK [配置系统限制] **********************************************************
changed: [web1.fgedu.net.cn] => (item={‘domain’: ‘*’, ‘limit_item’: ‘nofile’, ‘limit_type’: ‘soft’, ‘value’: 65535})
changed: [web1.fgedu.net.cn] => (item={‘domain’: ‘*’, ‘limit_item’: ‘nofile’, ‘limit_type’: ‘hard’, ‘value’: 65535})

TASK [配置系统服务] **********************************************************
changed: [web1.fgedu.net.cn] => (item=firewalld)
changed: [web1.fgedu.net.cn] => (item=postfix)

TASK [禁用SELinux] **********************************************************
changed: [web1.fgedu.net.cn]

TASK [配置时间同步] **********************************************************
ok: [web1.fgedu.net.cn]

TASK [配置NTP服务器] ********************************************************
changed: [web1.fgedu.net.cn]

TASK [启动时间同步服务] ******************************************************
ok: [web1.fgedu.net.cn]

TASK [配置主机名] ***********************************************************
ok: [web1.fgedu.net.cn]

TASK [配置hosts文件] ********************************************************
changed: [web1.fgedu.net.cn] => (item=web1.fgedu.net.cn)
changed: [web1.fgedu.net.cn] => (item=web2.fgedu.net.cn)

RUNNING HANDLER [Restart Chrony] ********************************************
changed: [web1.fgedu.net.cn]

PLAY RECAP ******************************************************************
web1.fgedu.net.cn : ok=11 changed=7 unreachable=0 failed=0

Part02-应用配置管理

2.1 配置文件管理

# 应用配置管理Playbook
[root@ansible ~]# cat > /fglinux/ansible/playbooks/app_config.yml << 'EOF' --- - name: 应用配置管理 hosts: webservers become: yes vars: app_config: APP_NAME: fgedu_app APP_ENV: production APP_DEBUG: "false" APP_URL: "http://{{ ansible_default_ipv4.address }}" DB_HOST: 192.168.1.30 DB_PORT: 3306 DB_DATABASE: fgedudb DB_USERNAME: fgedu DB_PASSWORD: FgeduPass@456 CACHE_DRIVER: redis REDIS_HOST: 192.168.1.40 REDIS_PORT: 6379 LOG_LEVEL: info tasks: - name: 创建应用配置目录 file: path: "{{ item }}" state: directory owner: root group: root mode: '0755' loop: - /opt/fgedu - /opt/fgedu/config - /opt/fgedu/logs - /opt/fgedu/data - name: 生成应用配置文件 copy: content: | # 应用配置文件 # Generated by Ansible # from:www.itpux.com.qq113257174.wx:itpux-com {% for key, value in app_config.items() %} {{ key }}={{ value }} {% endfor %} dest: /opt/fgedu/config/.env owner: root group: root mode: '0600' - name: 配置日志轮转 template: src: ../templates/logrotate.j2 dest: /etc/logrotate.d/fgedu mode: '0644' - name: 配置systemd服务 template: src: ../templates/systemd_service.j2 dest: /etc/systemd/system/fgedu-app.service mode: '0644' notify: Reload Systemd - name: 启动应用服务 service: name: fgedu-app state: started enabled: yes - name: 验证配置 command: cat /opt/fgedu/config/.env register: config_content changed_when: false - name: 显示配置内容 debug: var: config_content.stdout_lines handlers: - name: Reload Systemd systemd: daemon_reload: yes EOF # 执行应用配置 [root@ansible ~]# ansible-playbook /fglinux/ansible/playbooks/app_config.yml PLAY [应用配置管理] ********************************************************** TASK [Gathering Facts] ****************************************************** ok: [web1.fgedu.net.cn] TASK [创建应用配置目录] ****************************************************** changed: [web1.fgedu.net.cn] => (item=/opt/fgedu)
changed: [web1.fgedu.net.cn] => (item=/opt/fgedu/config)
changed: [web1.fgedu.net.cn] => (item=/opt/fgedu/logs)
changed: [web1.fgedu.net.cn] => (item=/opt/fgedu/data)

TASK [生成应用配置文件] ******************************************************
changed: [web1.fgedu.net.cn]

TASK [配置日志轮转] **********************更多学习教程公众号风哥教程itpux_com************************************
changed: [web1.fgedu.net.cn]

TASK [配置systemd服务] ******************************************************
changed: [web1.fgedu.net.cn]

TASK [启动应用服务] **********************************************************
changed: [web1.fgedu.net.cn]

TASK [验证配置] *************************************************************
ok: [web1.fgedu.net.cn]

TASK [显示配置内容] **********************************************************
ok: [web1.fgedu.net.cn] => {
“config_content.stdout_lines”: [
“# 应用配置文件”,
“# Generated by Ansible”,
“”,
“APP_NAME=fgedu_app”,
“APP_ENV=production”,
“APP_DEBUG=false”,
“APP_URL=http://192.168.1.20”,
“DB_HOST=192.168.1.30”,
“DB_PORT=3306”,
“DB_DATABASE=fgedudb”,
“DB_USERNAME=fgedu”,
“DB_PASSWORD=FgeduPass@456”,
“CACHE_DRIVER=redis”,
“REDIS_HOST=192.168.1.40”,
“REDIS_PORT=6379”,
“LOG_LEVEL=info”
]
}

RUNNING HANDLER [Reload Systemd] ********************************************
ok: [web1.fgedu.net.cn]

PLAY RECAP ******************************************************************
web1.fgedu.net.cn : ok=9 changed=5 unreachable=0 failed=0

风哥针对配置管理建议:

  • 使用模板管理配置文件
  • 敏感信息使用Vault加密
  • 配置变更触发服务重启
  • 保留配置备份
  • 实现配置版本控制

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息