Welcome to Ansible Managed Apache Server
nThis server is configured and managed by Ansible.
nService started at: $(date)
n n n dest: /var/www/html/index.htmln owner: apachen group: apachen mode: "0644"nn - name: Verify httpd service is runningn ansible.builtin.service_facts:nn - name: Display httpd service statusn ansible.builtin.debug:n var: ansible_facts.services['httpd.service']n ```nn4. **创建一个用于调度 cron 作业的 playbook**。这演示了自动化任务调度。nn ```bashn nano create_crontab_file.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Schedule recurring cron jobsn hosts: webserversn become: truen tasks:n - name: Create labex user for cron jobsn ansible.builtin.user:n name: labexn state: presentn create_home: yesnn - name: Schedule system monitoring cron jobn ansible.builtin.cron:n name: System monitoring logn job: "date >> /home/labex/system_monitor.log && df -h >> /home/labex/system_monitor.log"n minute: "*/5"n hour: "*"n user: labexn cron_file: system-monitoringn state: presentnn - name: Schedule daily log rotationn ansible.builtin.cron:n name: Daily log cleanupn job: "find /home/labex -name '*.log' -mtime +7 -delete"n minute: "0"n hour: "2"n weekday: "*"n user: labexn cron_file: log-cleanupn state: presentnn - name: Schedule weekly system update checkn ansible.builtin.cron:n name: Weekly update checkn job: "dnf check-update > /home/labex/update_check.log 2>&1"n minute: "0"n hour: "3"n weekday: "0"n user: labexn cron_file: update-checkn state: presentn ```nn5. **创建一个使用 `at` 调度一次性任务的 playbook**。nn ```bashn nano schedule_at_task.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Schedule one-time tasks with atn hosts: webserversn become: truen become_user: labexn tasks:n - name: Schedule immediate system info collectionn ansible.posix.at:n command: "uname -a > ~/system_info_$(date +%Y%m%d_%H%M%S).txt"n count: 2n units: minutesn unique: yesn state: presentnn - name: Schedule delayed service status checkn ansible.posix.at:n command: "systemctl status httpd > ~/httpd_status_$(date +%Y%m%d_%H%M%S).txt"n count: 5n units: minutesn unique: yesn state: presentn ```nn6. **创建一个管理系统启动目标的 playbook**。nn ```bashn nano boot_target_management.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Manage system boot targetsn hosts: webserversn become: truen tasks:n - name: Check current default targetn ansible.builtin.command:n cmd: systemctl get-defaultn register: current_targetn changed_when: falsenn - name: Display current boot targetn ansible.builtin.debug:n msg: "Current default boot target: {{ current_target.stdout }}"nn - name: Set default boot target to multi-usern ansible.builtin.systemd:n name: multi-user.targetn enabled: yesn when: current_target.stdout != "multi-user.target"nn - name: Verify the boot target changen ansible.builtin.command:n cmd: systemctl get-defaultn register: new_targetn changed_when: falsenn - name: Display new boot targetn ansible.builtin.debug:n msg: "New default boot target: {{ new_target.stdout }}"n ```nn7. **执行服务管理 playbook**。nn ```bashn ansible-playbook -i inventory.ini service_management.ymln ```nn 这将启动 httpd 服务并创建一个欢迎页面。nn8. **执行 cron 作业调度 playbook**。nn ```bashn ansible-playbook -i inventory.ini create_crontab_file.ymln ```nn 这将为系统监控和维护创建几个计划任务。nn9. **执行一次性任务调度 playbook**。nn ```bashn ansible-playbook -i inventory.ini schedule_at_task.ymln ```nn 这将使用 `at` 命令调度即时任务。nn10. **执行启动目标管理 playbook**。nn ```bashn ansible-playbook -i inventory.ini boot_target_management.ymln ```nn 这将检查并可能修改系统的默认启动目标。nn11. **验证计划任务和服务**。nn ```bashn ## 检查 cron 作业n sudo cat /etc/cron.d/system-monitoringn sudo cat /etc/cron.d/log-cleanupn sudo cat /etc/cron.d/update-checkn n ## 检查 at 作业n sudo atqn n ## 检查 httpd 服务状态n sudo systemctl status httpdn n ## 测试 Web 服务器n curl localhostn n ## 检查系统监控日志(等待几分钟让 cron 运行)n sudo cat /home/labex/system_monitor.logn ```nn12. **创建一个清理 playbook** 以在需要时删除计划任务。nn ```bashn nano remove_scheduled_tasks.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Remove scheduled tasksn hosts: webserversn become: truen tasks:n - name: Remove system monitoring cron jobn ansible.builtin.cron:n name: System monitoring logn user: labexn cron_file: system-monitoringn state: absentnn - name: Remove log cleanup cron jobn ansible.builtin.cron:n name: Daily log cleanupn user: labexn cron_file: log-cleanupn state: absentnn - name: Remove update check cron jobn ansible.builtin.cron:n name: Weekly update checkn user: labexn cron_file: update-checkn state: absentn ```nn你已成功使用 Ansible 自动化了服务管理、任务调度和系统配置,为自动维护和监控你的基础设施奠定了基础。n","need_verify":true,"has_solution":false},{"position":4,"title":"使用 LVM 和文件系统自动化存储管理","layout":"doc-workbench-split","text":"## 使用 LVM 和文件系统自动化存储管理nn在本步骤中,你将学习如何使用 Ansible 自动化存储管理,包括创建 LVM 物理卷、卷组、逻辑卷和文件系统。这对于以一致且可扩展的方式管理基础设施中的存储资源至关重要。nn你将使用诸如 `ansible.builtin.lvg` 用于卷组管理,`ansible.builtin.lvol` 用于逻辑卷创建,`ansible.builtin.filesystem` 用于文件系统创建,以及 `ansible.posix.mount` 用于挂载点管理等模块。nn1. **导航到新的项目目录以进行存储管理。**nn ```bashn cd ~/projectn mkdir system-storagen cd system-storagen ```nn2. **创建本次实验的 inventory 文件**。nn ```bashn cat << EOF > inventory.inin [webservers]n localhost ansible_connection=localn EOFn ```nn3. **创建一个 loop device 来模拟额外的存储**,因为我们是在虚拟环境中工作。nn ```bashn ## 创建一个 1GB 的文件用作虚拟磁盘n sudo dd if=/dev/zero of=/tmp/virtual_disk bs=1M count=1024n n ## 设置 loop devicen sudo losetup /dev/loop0 /tmp/virtual_diskn n ## 验证 loop devicen lsblk | grep loop0n ```nn4. **创建一个全面的存储管理 playbook**。这将演示 LVM 操作和文件系统管理。nn ```bashn nano storage.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Configure LVM storage and filesystemsn hosts: webserversn become: truen vars:n storage_device: /dev/loop0n volume_group: apache-vgn content_lv: content-lvn logs_lv: logs-lvn backup_lv: backup-lvn tasks:n - name: Install LVM utilitiesn ansible.builtin.dnf:n name: lvm2n state: presentnn - name: Create physical volumen community.general.lvg:n vg: "{{ volume_group }}"n pvs: "{{ storage_device }}"n state: presentnn - name: Create logical volume for web contentn community.general.lvol:n vg: "{{ volume_group }}"n lv: "{{ content_lv }}"n size: 256mn state: presentnn - name: Create logical volume for logsn community.general.lvol:n vg: "{{ volume_group }}"n lv: "{{ logs_lv }}"n size: 256mn state: presentnn - name: Create logical volume for backupn community.general.lvol:n vg: "{{ volume_group }}"n lv: "{{ backup_lv }}"n size: 256mn state: presentnn - name: Create XFS filesystem on content volumen community.general.filesystem:n fstype: xfsn dev: "/dev/{{ volume_group }}/{{ content_lv }}"n force: nonn - name: Create XFS filesystem on logs volumen community.general.filesystem:n fstype: xfsn dev: "/dev/{{ volume_group }}/{{ logs_lv }}"n force: nonn - name: Create ext4 filesystem on backup volumen community.general.filesystem:n fstype: ext4n dev: "/dev/{{ volume_group }}/{{ backup_lv }}"n force: nonn - name: Create mount pointsn ansible.builtin.file:n path: "{{ item }}"n state: directoryn mode: "0755"n loop:n - /var/wwwn - /var/log/httpdn - /backupnn - name: Mount web content volumen ansible.posix.mount:n path: /var/wwwn src: "/dev/{{ volume_group }}/{{ content_lv }}"n fstype: xfsn opts: defaultsn state: mountednn - name: Mount logs volumen ansible.posix.mount:n path: /var/log/httpdn src: "/dev/{{ volume_group }}/{{ logs_lv }}"n fstype: xfsn opts: defaultsn state: mountednn - name: Mount backup volumen ansible.posix.mount:n path: /backupn src: "/dev/{{ volume_group }}/{{ backup_lv }}"n fstype: ext4n opts: defaultsn state: mountednn - name: Set appropriate ownership for web contentn ansible.builtin.file:n path: /var/wwwn owner: apachen group: apachen recurse: yesnn - name: Set appropriate ownership for httpd logsn ansible.builtin.file:n path: /var/log/httpdn owner: apachen group: apachen recurse: yesnn - name: Create html directory for web contentn ansible.builtin.file:n path: /var/www/htmln state: directoryn owner: apachen group: apachen mode: "0755"nn - name: Create sample web contentn ansible.builtin.copy:n content: |n nLVM Storage Configuration
nThis content is served from an LVM logical volume managed by Ansible.
nVolume Group: {{ volume_group }}
nLogical Volume: {{ content_lv }}
nFilesystem: XFS
n n n dest: /var/www/html/storage.htmln owner: apachen group: apachen mode: "0644"n ```nn5. **安装所需的 Ansible collection** 以进行 LVM 管理。nn ```bashn ansible-galaxy collection install community.generaln ```nn6. **执行存储管理 playbook**。nn ```bashn ansible-playbook -i inventory.ini storage.ymln ```nn 这将创建 LVM 结构、文件系统和挂载点。nn7. **创建一个 playbook 来收集和显示存储信息**。nn ```bashn nano get-storage.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Gather storage informationn hosts: webserversn become: truen tasks:n - name: Gather disk factsn ansible.builtin.setup:n gather_subset:n - hardwarenn - name: Display volume group informationn ansible.builtin.command:n cmd: vgdisplay apache-vgn register: vg_infon changed_when: falsenn - name: Display logical volume informationn ansible.builtin.command:n cmd: lvdisplay apache-vgn register: lv_infon changed_when: falsenn - name: Display filesystem informationn ansible.builtin.command:n cmd: df -h /var/www /var/log/httpd /backupn register: fs_infon changed_when: falsenn - name: Display mount informationn ansible.builtin.command:n cmd: cat /proc/mountsn register: mount_infon changed_when: falsenn - name: Show volume group detailsn ansible.builtin.debug:n var: vg_info.stdout_linesnn - name: Show logical volume detailsn ansible.builtin.debug:n var: lv_info.stdout_linesnn - name: Show filesystem usagen ansible.builtin.debug:n var: fs_info.stdout_linesnn - name: Show fstab entriesn ansible.builtin.command:n cmd: grep apache-vg /etc/fstabn register: fstab_entriesn changed_when: falsen failed_when: falsenn - name: Display fstab entriesn ansible.builtin.debug:n var: fstab_entries.stdout_linesn ```nn8. **执行存储信息收集 playbook**。nn ```bashn ansible-playbook -i inventory.ini get-storage.ymln ```nn 这将显示有关已创建存储结构的详细信息。nn9. **手动验证存储配置**。nn ```bashn ## 检查 LVM 结构n sudo vgs apache-vgn sudo lvs apache-vgn sudo pvs /dev/loop0n n ## 检查文件系统n df -h /var/www /var/log/httpd /backupn n ## 检查挂载点n mount | grep apache-vgn n ## 检查 fstab 条目n grep apache-vg /etc/fstabn n ## 测试 Web 内容n cat /var/www/html/storage.htmln ```nn10. **创建一个存储扩展 playbook** 来演示扩展操作。nn ```bashn nano expand_storage.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Expand storage volumesn hosts: webserversn become: truen vars:n volume_group: apache-vgn content_lv: content-lvn tasks:n - name: Extend content logical volumen community.general.lvol:n vg: "{{ volume_group }}"n lv: "{{ content_lv }}"n size: 400mn state: presentnn - name: Extend XFS filesystemn community.general.filesystem:n fstype: xfsn dev: "/dev/{{ volume_group }}/{{ content_lv }}"n resizefs: yesnn - name: Display updated filesystem sizen ansible.builtin.command:n cmd: df -h /var/wwwn register: new_sizen changed_when: falsenn - name: Show new filesystem sizen ansible.builtin.debug:n var: new_size.stdout_linesn ```nn11. **测试存储扩展**。nn ```bashn ## 在扩展前检查当前大小n df -h /var/wwwn n ## 运行扩展 playbookn ansible-playbook -i inventory.ini expand_storage.ymln n ## 验证扩展n df -h /var/wwwn sudo lvs apache-vg/content-lvn ```nn你已成功使用 Ansible 自动化了 LVM 存储管理,包括物理卷创建、逻辑卷管理、文件系统创建和挂载点配置。n","need_verify":true,"has_solution":false},{"position":5,"title":"自动化网络配置和信息收集","layout":"doc-workbench-split","text":"## 自动化网络配置和信息收集nn在最后一步中,你将学习如何使用 Ansible 自动化网络接口配置和收集全面的系统信息。这完成了从软件到存储再到网络的系统管理自动化的完整流程。nn你将使用诸如 `ansible.builtin.template` 用于网络配置文件,收集网络事实,以及创建全面的系统报告等模块。nn1. **导航到新的项目目录以进行网络管理。**nn ```bashn cd ~/projectn mkdir system-networkn cd system-networkn ```nn2. **创建本次实验的 inventory 文件**。nn ```bashn cat << EOF > inventory.inin [webservers]n localhost ansible_connection=localn EOFn ```nn3. **创建一个全面的网络和系统信息收集 playbook**。nn ```bashn nano network_info.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Gather comprehensive system informationn hosts: webserversn become: truen tasks:n - name: Gather all system factsn ansible.builtin.setup:nn - name: Create system report directoryn ansible.builtin.file:n path: /tmp/system_reportsn state: directoryn mode: "0755"nn - name: Generate system information reportn ansible.builtin.template:n src: system_report.j2n dest: /tmp/system_reports/system_info_{{ ansible_facts['hostname'] }}.htmln mode: "0644"nn - name: Generate network configuration reportn ansible.builtin.template:n src: network_report.j2n dest: /tmp/system_reports/network_info_{{ ansible_facts['hostname'] }}.htmln mode: "0644"nn - name: Collect network interface informationn ansible.builtin.command:n cmd: ip addr shown register: ip_infon changed_when: falsenn - name: Collect routing informationn ansible.builtin.command:n cmd: ip route shown register: route_infon changed_when: falsenn - name: Collect DNS configurationn ansible.builtin.command:n cmd: cat /etc/resolv.confn register: dns_infon changed_when: falsenn - name: Display network summaryn ansible.builtin.debug:n msg: |n System: {{ ansible_facts['hostname'] }}n OS: {{ ansible_facts['distribution'] }} {{ ansible_facts['distribution_version'] }}n Kernel: {{ ansible_facts['kernel'] }}n Default IPv4: {{ ansible_facts['default_ipv4']['address'] | default('N/A') }}n Default Interface: {{ ansible_facts['default_ipv4']['interface'] | default('N/A') }}n Total Memory: {{ ansible_facts['memtotal_mb'] }}MBn CPU Cores: {{ ansible_facts['processor_vcpus'] }}n ```nn4. **创建模板目录和文件以用于报告**。nn ```bashn mkdir templatesn nano templates/system_report.j2n ```nn 为系统报告模板添加以下内容:nn ```htmln n n nn
nn System Report for {{ ansible_facts['hostname'] }}
n生成时间:{{ ansible_date_time.date }} {{ ansible_date_time.time }}
nn n
n
nn System Information
n| Property | nValue | n
|---|---|
| Hostname | n{{ ansible_facts['hostname'] }} | n
| FQDN | n{{ ansible_facts['fqdn'] }} | n
| Operating System | nn {{ ansible_facts['distribution'] }} {{n ansible_facts['distribution_version'] }}n | n
| Kernel | n{{ ansible_facts['kernel'] }} | n
| Architecture | n{{ ansible_facts['architecture'] }} | n
| CPU Cores | n{{ ansible_facts['processor_vcpus'] }} | n
| Total Memory | n{{ ansible_facts['memtotal_mb'] }}MB | n
| Uptime | n{{ ansible_facts['uptime_seconds'] }} seconds | n
n n
n
nn Storage Information
n| Mount Point | nFilesystem | nSize | nUsed | nA vailable | n
|---|---|---|---|---|
| {{ mount.mount }} | n{{ mount.fstype }} | nn {{ (mount.size_total / 1024 / 1024 / 1024) | round(2) }}GBn | nn {{ ((mount.size_total - mount.size_a vailable) / 1024 / 1024 /n 1024) | round(2) }}GBn | nn {{ (mount.size_a vailable / 1024 / 1024 / 1024) | round(2) }}GBn | n
n n
n
n n n ```nn5. **创建网络报告模板**。nn ```bashn nano templates/network_report.j2n ```nn 添加以下内容:nn ```htmln n n n Services Status
n| Service | nStatus | n
|---|---|
| httpd | nn {{ ansible_facts.services['httpd.service']['state'] |n default('not installed') }}n | n
| sshd | nn {{ ansible_facts.services['sshd.service']['state'] |n default('unknown') }}n | n
| NetworkManager | nn {{ ansible_facts.services['NetworkManager.service']['state'] |n default('unknown') }}n | n
n
nn Network Configuration Report
nHost: {{ ansible_facts['hostname'] }}
n生成时间:{{ ansible_date_time.date }} {{ ansible_date_time.time }}
nn n
n
nn Network Interfaces
n| Interface | nIPv4 Address | nIPv6 Address | nMAC Address | nStatus | n
|---|---|---|---|---|
| {{ interface_name }} | nn {{ interface_facts.get('ipv4', {}).get('address', 'N/A') }}n | nn {{ interface_facts.get('ipv6', [{}])[0].get('address', 'N/A') ifn interface_facts.get('ipv6') else 'N/A' }}n | n{{ interface_facts.get('macaddress', 'N/A') }} | nn {{ interface_facts.get('active', false) | ternary('Active',n 'Inactive') }}n | n
n n
n
nn Default Gateway
n| Property | nValue | n
|---|---|
| Default IPv4 Address | nn {{ ansible_facts['default_ipv4']['address'] | default('N/A') }}n | n
| Default Interface | nn {{ ansible_facts['default_ipv4']['interface'] | default('N/A')n }}n | n
| Default Gateway | nn {{ ansible_facts['default_ipv4']['gateway'] | default('N/A') }}n | n
n n
n
n n n ```nn6. **创建一个网络接口配置 playbook**。nn ```bashn nano configure_network.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Configure network settingsn hosts: webserversn become: truen tasks:n - name: Install NetworkManager if not presentn ansible.builtin.dnf:n name: NetworkManagern state: presentnn - name: Ensure NetworkManager is runningn ansible.builtin.service:n name: NetworkManagern state: startedn enabled: yesnn - name: Configure hosts file with system informationn ansible.builtin.lineinfile:n path: /etc/hostsn line: "{{ ansible_facts['default_ipv4']['address'] }} {{ ansible_facts['hostname'] }}.lab.example.com {{ ansible_facts['hostname'] }}"n regexp: ".*{{ ansible_facts['hostname'] }}.*"n backup: yesnn - name: Create network monitoring scriptn ansible.builtin.copy:n content: |n #!/bin/bashn ## Network monitoring script generated by Ansiblen echo "=== Network Status Report ==="n echo "Generated at: $(date)"n echon echo "=== Interface Status ==="n ip addr shown echon echo "=== Routing Table ==="n ip route shown echon echo "=== DNS Configuration ==="n cat /etc/resolv.confn echon echo "=== Network Connectivity Test ==="n ping -c 3 8.8.8.8n dest: /usr/local/bin/network-status.shn mode: "0755"nn - name: Create network information gathering cron jobn ansible.builtin.cron:n name: Network status monitoringn job: "/usr/local/bin/network-status.sh >> /var/log/network-status.log 2>&1"n minute: "*/15"n user: rootn cron_file: network-monitoringn state: presentn ```nn7. **执行网络信息收集 playbook**。nn ```bashn ansible-playbook -i inventory.ini network_info.ymln ```nn 这将生成全面的系统和网络报告。nn8. **执行网络配置 playbook**。nn ```bashn ansible-playbook -i inventory.ini configure_network.ymln ```nn 这将配置网络设置和监控。nn9. **查看生成的报告**。nn ```bashn ## 列出生成的报告n ls -la /tmp/system_reports/n n ## 查看系统报告(你也可以在浏览器中打开)n cat /tmp/system_reports/system_info_*.htmln n ## 检查网络监控脚本n cat /usr/local/bin/network-status.shn n ## 测试网络监控脚本n sudo /usr/local/bin/network-status.shn n ## 检查网络监控 cron 作业n sudo cat /etc/cron.d/network-monitoringn ```nn10. **创建一个最终的综合 playbook**,将所有学到的概念结合起来。nn ```bashn nano complete_system_setup.ymln ```nn 添加以下内容:nn ```yamln ---n - name: Complete system setup and configurationn hosts: webserversn become: truen vars:n admin_users:n - webuser1n - webuser2n tasks:n - name: Ensure all required packages are installedn ansible.builtin.dnf:n name:n - httpdn - lvm2n - NetworkManagern - cronien state: presentnn - name: Ensure all services are runningn ansible.builtin.service:n name: "{{ item }}"n state: startedn enabled: yesn loop:n - httpdn - NetworkManagern - crondnn - name: Generate final system status reportn ansible.builtin.template:n src: system_report.j2n dest: /tmp/final_system_report.htmln mode: "0644"nn - name: Display completion messagen ansible.builtin.debug:n msg: |n ============================================n RHEL System Administration Automation Complete!n ============================================nn Summary of configured components:n - Software: EPEL repository and packages installedn - Users: {{ admin_users | length }} administrative users createdn - Services: httpd, NetworkManager, and crond configuredn - Storage: LVM volumes and filesystems configuredn - Network: Interface configuration and monitoring set upn - Scheduling: Cron jobs and at tasks configurednn Reports a vailable at:n - /tmp/system_reports/n - /tmp/final_system_report.htmlnn Your RHEL system is now fully automated with Ansible!n ```nn11. **执行最终的综合设置**。nn ```bashn ansible-playbook -i inventory.ini complete_system_setup.ymln ```nn你已成功完成了使用 Ansible 对 RHEL 系统管理任务的全面自动化,涵盖了软件管理、用户管理、服务管理、存储配置和网络设置。nn12. **在 Web 浏览器中预览生成的报告**。nn 导航到报告目录:nn ```bashn cd /tmp/system_reportsn ```nn 使用 Python 启动一个临时 Web 服务器:nn ```bashn python -m http.server 8000n ```nn 要在浏览器中预览报告:nn 1. 点击顶部菜单栏的 **+** 按钮n 2. 选择 **Web Service**n 3. 输入端口号 **8000**n 4. 你现在可以在线查看生成的 HTML 报告了nn nn Web 服务器将显示一个目录列表,你可以在其中点击 HTML 文件来查看由你的 Ansible playbook 生成的全面系统和网络报告。nn > **注意**: 查看完报告后,按 `Ctrl+C` 停止 Web 服务器。n","need_verify":true,"has_solution":false},{"position":6,"title":"总结","layout":"doc-fullscreen","text":"## 总结nn在本次综合实验中,你已经掌握了使用 Ansible 自动化关键的 Red Hat Enterprise Linux (RHEL) 管理任务。你从软件软件包管理开始,学习了如何配置仓库、管理 GPG 密钥以及在收集软件包事实以获取系统信息的同时安装软件包。这为在你的基础设施中实现一致的软件部署奠定了基础。nn接着,你进入了用户管理和身份验证环节,自动化了用户账户的创建、配置了基于 SSH 密钥的身份验证、设置了 sudo 权限,并加固了 SSH 配置。这建立了对企业环境至关重要的安全且标准化的用户访问策略。nn实验继续进行服务管理和任务调度,你学习了如何管理 systemd 服务、创建周期性的 cron 作业、使用 `at` 调度一次性任务以及配置系统启动目标。这些技能对于维护服务可用性和自动化例行维护任务至关重要。nn存储管理通过全面的 LVM 自动化进行了涵盖,包括物理卷创建、卷组管理、逻辑卷配置、文件系统创建和挂载点配置。你还学会了动态扩展存储卷,这对于可扩展的基础设施管理至关重要。nn最后,你完成了网络配置自动化和全面的系统监控。你学习了如何收集网络事实、配置接口、使用 Jinja2 模板创建详细的系统报告,以及设置自动监控脚本。这提供了系统状态管理和报告的完整图景。nn在整个实验过程中,你应用了基础设施即代码 (IaC) 原则,确保所有系统配置都是可复现的、版本可控的且可一致部署的。你现在已经掌握了自动化 RHEL 系统管理生命周期的技能,从初始部署到持续维护和监控。n","need_verify":false,"has_solution":false} DNS Configuration
n| DNS Servers | n
|---|
| {{ dns }} | n