使用Ansible自动化的7项日常系统管理员任务 1. 软件包管理:使用Ansible自动化管理软件包的安装、升级和卸载。 2. 系统配置:使用Ansible自动化进行系统配置,包括网络设置、文件权限和用户管理。 3. 日志管理:使用Ansible自动化管理日志文件,包括收集、分析和备份。 4. 定期备份:使用Ansible自动化定期备份重要数据和配置文件。 5. 监控和警报:使用Ansible自动化设置监控和警报系统,以及定期检查服务器状态。 6. 安全性检查:使用Ansible自动化执行安全性检查,并修复潜在的漏洞。 7. 自动部署:使用Ansible自动化进行应用程序的部署和更新。
Ansible是一款由Red Hat开发的免费开源基于Python的项目,它是一个流行的配置管理和IT自动化平台。
它支持多平台,并且可以与大多数现代操作系统一起使用,包括Linux,Windows和Mac。它支持使用YAML
或YAML Ain't Markup Language
编写的声明性语言来描述系统配置。
Ansible与其他现代配置管理平台一起,彻底改变了IT自动化和行业标准。配置管理工具已经成为工具集的一部分,并且是当今任何现代IT流程生命周期中不可分割的一部分。这适用于任何现代基础架构环境,无论是在本地环境、混合环境还是云环境上构建。Ansible不仅适用于DevOps,还可以帮助自动化完成由System Administrator执行的许多日常任务。
使用Ansible的一个优势是它是无Agent的,并且除了对目标机器的访问和所支持版本的Python的访问权限(这在大多数现代操作系统上已经默认安装)之外,它不需要太多的东西即可开始使用。此外,由于它是一个轻量级工具,因此可以在传统到创新的系统中部署和使用。
Ansible的用途
编排
Ansible是用于编排各种系统管理和部署任务的首选工具。Playbooks允许在不同的项目中使用相同的编排工作流,并且基于YAML
的配置数据允许在Git存储库或任何支持的version control平台上存储和版本化您的基础架构。
应用程序部署
无论是简单的几行代码的应用程序还是多层次的重量级部署,Ansible都可以实现端到端的自动化生命周期。
安全与合规
Ansible还可以帮助确保您的系统按照组织的指南进行安全设置,并符合行业标准。它可以在成千上万台服务器上运行,生成审计日志并修复这些安全漏洞,使管理员对环境拥有完全控制权。
现在让我们看一下一些常见的Sysadmin任务,您可以使用Ansible自动化完成。
从本地或远程系统复制文件
作为系统管理员,将文件从一个目录复制到另一个目录是很常见的任务。配置文件通常需要复制到远程服务器,或者有时我们需要将文件从一个远程位置移动到另一个位置。
Ansible的copy
模块可以帮助您完成这些任务。
对于系统管理员来说,了解托管服务器的状态并根据组织的策略执行预定义操作是例行任务。其中一个任务就是了解服务器的正常运行时间。使用Ansible,我们可以轻松获取并打印运行时间值。下面是使用copy
模块将本地ntp
配置复制到远程服务器的示例:
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: 复制新的ntp配置文件并备份原始文件(如果不同)
copy:
src: ./ntp.conf
dest: /etc/ntp.conf
owner: root
group: root
mode: '0644'
backup: yes
配置额外的cron作业
设置定期任务以执行例行任务是管理任何服务器的一部分。您可以在一天或一个月的特定时间自动安排automatic backups,补丁,审计等。
cron
是Linux中支持计划的工具之一,Ansible可以帮助您添加或修改这些作业。例如,下面的playbook演示了如何使用Ansible轻松地将一个rsync
作业设置为root
,并在某些或所有服务器上运行。
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: 部署定时任务
cron:
name: "设置rsync任务"
user: root
minute: "5"
hour: "4"
job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
管理磁盘和文件系统
Ansible可用于管理磁盘、文件系统和挂载,包括Linux服务器上的/etc/fstab。不同的Ansible模块使这成为可能。以下是一个示例,该示例在一个100GB的磁盘上创建一个分区,使用ext4文件系统格式化该分区,在给定目录下创建一个新目录用于挂载该分区,最后将其挂载在指定的目录上。通过模块选项可以创建/temporary或/permanent挂载的/etc/fstab条目。
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: 创建分区
parted:
device: /dev/sdb
number: 1
part_end: "100%"
state: present
- name: 格式化新分区
filesystem:
fstype: ext4
dev: /dev/sdb1
- name: 创建挂载目录
file:
path: /data
state: directory
- name: 挂载分区
mount:
path: /data
src: /dev/sdb1
fstype: ext4
state: mounted
收集服务器日志
将日志保存在方便的地方有时对于安全性、审计和分析非常重要。Ansible允许从企业环境中的不同服务器收集日志并将其以您定义的位置保存在一起。以下是实现此目的的playbook:
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: 查找日志
find:
paths: /var/log/
patterns: '*.log'
recurse: yes
register: _logs
- name: 获取日志
fetch:
src: "{{ item.path }}"
dest: /tmp/logs
with_items: "{{ _logs.files }}"
安装或删除软件包和软件
通常需要按照用户请求或作为初始服务器构建的一部分来安装软件包。我们也可能需要删除某些不再需要或具有某些关键错误等的软件包。Ansible允许您轻松地安装或删除软件包,而无需去每台服务器上运行手动命令的麻烦。以下是一个示例,演示了在Ubuntu和基于RHEL/CentOS的Linux服务器上分别安装和删除一个软件包。
---
- hosts: ubuntu
gather_facts: no
tasks:
- name: 安装lsof实用工具
apt:
pkg: lsof
state: latest
sudo: yes
- name: 删除ARP扫描实用工具
apt:
pkg: arp-scan
state: absent
sudo: yes
---
- hosts: centos
gather_facts: no
tasks:
- name: 安装lsof实用工具
yum:
pkg: lsof
state: latest
sudo: yes
- name: 删除ARP扫描实用工具
yum:
pkg: arp-scan
state: absent
sudo: yes
管理用户
用户和组构成Unix/Linux系统管理访问和权限的基本结构。在一个大型组织中,尽管有自动化支持,但管理用户和组仍然是一个巨大的挑战。
使用Ansible,系统管理员可以使用操作系统支持的所有不同可能性来创建、修改和删除用户和组,这是一个很好的工具。
这是一个简单的示例,展示了使用Ansible创建和删除用户和组。此playbook运行后,目标服务器将创建具有给定GID的groupA和groupB,如果存在,将删除user1。将创建一个没有shell的新用户user2,给定UID、分配的组和锁定密码。
—
– 主机:所有
收集事实:否
成为:是
任务:
– 组:
gid:12310
名称:groupA
状态:存在
– 组:
gid:12311
名称:groupB
状态:存在
– 用户:
名称:user1
状态:不存在
– 用户:
名称:user2
uid:12427
shell:/bin/false
password_lock:是
groups:groupA、groupB
管理服务
服务是在后台运行并提供一些服务(如链接等)的进程守护程序,如sshd
。使用Ansible,您可以管理系统和用户服务,例如启动、停止和重启它们。以下是一个演示的示例playbook:
---
- 主机:所有
收集事实:否
成为:是
任务:
- 名称:重新启动ssh守护程序
服务:
名称:ssh
状态:重新启动
- 名称:停止sssd守护程序
服务:
名称:sssd
状态:停止
- 名称:启动httpd守护程序
服务:
名称:httpd
状态:启动
在上面的示例中,SSH服务将在停止SSSD服务后重新启动。末尾启动了httpd
守护程序。由于Ansible是幂等的,任何已经启动或停止的服务将不会更改,而重新启动总是会更改服务状态。请记得检查服务名称,因为不同的Linux发行版即使对于相同的服务也使用其他名称(如ssh
和sshd
)。
摘要 👨💻
Ansible通过允许您以自动化的方式执行重复和耗时的任务,并减少人为错误和工作量,简化了系统管理员的工作。此外,它还将允许将配置数据存储在像Git这样的中央代码仓库中,使多个用户能够协作和审查每个活动。
要了解有关Ansible及其广泛的模块集的更多信息,请参阅其documentation。