如何将Ansible模块用于系统管理任务(6)

作者 : 开心源码 本文共5263个字,预计阅读时间需要14分钟 发布时间: 2022-05-13 共180人阅读

在Ansible系列的第6部分中,我们已经在过去的主题中详情了少量Ansible模块,现在我们将更深入地研究并发现有助于执行许多系统管理任务的其余模块。

Linux-System-Administration-Tasks-with-Ansible-6

你将理解每个模块的基本概念,并查看可用于完成特定任务的选项。

  • 在Ansible中管理软件包和存储库
  • 使用Ansible管理服务
  • 使用Ansible管理防火墙
  • 使用Ansible归档文件或者文件夹
  • 使用Ansible安排任务
  • 使用Ansible管理客户和组
  • 使用Ansible创立文件和目录
  • 使用Ansible管理存储
  • 使用Ansible管理文件系统

1.在Ansible中管理软件包和存储库

在Linux系统上安装软件包时,不同的发行版具备不同的软件包管理器。对于RedHat发行版,我们有yum & dnf,而对于Debian的风格,则有apt

Ansible自带了一个名为package的模块,它消除了对不同系统使用不同包管理器的需要。它自动使用主机系统的相应包管理器,从而使工作更容易。

安装软件包

例如,要在包含Debian和RedHat发行版的一组主机中安装htop,请使用包模块,如下面的install_htop.yml手册所述。

---- name: Install htop on Ubuntu and CentOS  hosts: all  tasks:- packages:          name: htop          state: installed

使用Ansible软件包模块安装软件

注意:包名称可能因操作系统而异。例如,我们在Redhat发行版中有httpd,在Debian/Ubuntu系统中有Apache2,所有这些都表示Apache webserver。因而,在传递这些包时应格外小心。通常,最好使用变量或者条件语句。

2.使用Ansible管理服务

接下来,我们有一个服务模块,用于管理Linux系统上的服务。它用于启动、中止或者重新启动服务。你还可以使用它来启用服务,以便在系统启动时自动启动服务。

启动并启用服务

例如,要在RHEL 8上启动并启用Apache Web服务器,请使用如图所示的服务。

---- name: Start and enable httpd service  hosts: webserver  tasks:- service:         name: httpd         state: started            enabled: yes

使用Ansible管理服务

中止服务

要中止httpd服务,请传递Stopped属性。

---- name: Stop httpd service  hosts: webservers  tasks:- service:         name: httpd         state: stopped

用Ansible中止服务

重新启动服务

要重新启动httpd服务,请传递restarted属性。

---- name: Restart httpd service  hosts: webservers  tasks:- service:         name: httpd         state: restarted

使用Ansible重新启动服务

3.使用Ansible管理防火墙

系统管理员承担的另一项重要任务是防火墙的管理。在Ansible playbooks中,使用firewalld和ufw模块可以更轻松地实现这一点。你可以将防火墙配置为允许或者阻止端口、服务甚至源地址。

让我们来看少量示例:

---- name: Allow port 80  hosts: webservers  tasks:  - firewalld:      port: 80/tcp      parmanent: yes      state: enabled

在上面的剧本中,端口80允许通过防火墙。

该选项将permanent: yes 强制执行防火墙规则,并使该规则在重新启动后保持不变。但是,此规则并不立即适用。它仅在重新启动后生效。要立即执行规则,请使用选项immediate: yes

要指定允许的地址,请使用source:0.0.0.0/0语句。

- firewalld:    source: 192.168.0.0/24    zone: public    state: enabled

要指定允许使用port选项的端口范围,如下所示:

- firewalld:    port: 213-567/udp    permanent: yes    state: enabled

要阻止端口,请将状态选项更改为禁用,如下所示:

- firewalld:     port: 80/tcp     permanent: yes     state: disabled

在防火墙中增加/阻止服务

除了增加/阻止端口之外,你还可以将相同的规则应用于服务。这很简单。只要使用服务模块并附加要增加的服务,并确保将state选项设置为enabled。

- firewalld:    service: https    permanent: true    state: enabled

要阻止该服务,请将状态选项设置为禁用。

- firewalld:    service: https    permanent: true    state: disabled

4.使用Ansible归档文件或者文件夹

存档是指将文件或者文件夹压缩为易于移植和较小的格式。Ansible附带了一个名为archive的模块。压缩文件是最容易的。只要指定文件的源路径和压缩文件的目标。

压缩目录

---- hosts: webservers  tasks:  - name: Compress a folder    archive:      path: /opt/data/web      dest: /tmp/web.gz

上面的剧本压缩了/opt/data/web 目录,并将其保存到/tmp/web.gz

使用Ansible创立归档

用格式压缩目录

默认压缩格式为.gz,但是可以使用format属性指定。来看下一个Playbook。

---- hosts: webservers  tasks:  - name: Create a zip archive    archive:      path: /opt/data/web      dest: /tmp/web      format: zip

上面的剧本将/opt/data/web目录压缩到/tmp/web.zip

解压缩文件

你也可以使用unarchive属性解压压缩文件,尝试下面的剧本:

---- hosts: webservers  tasks:  - name: Uncompress /tmp/web.gz to /opt/ directory on Ansible controller    unarchive:      src: /tmp/web.gz      dest: /opt/

上面的剧本将文件/opt/data/web.gz 解压缩到Ansible控制器上的/opt

解压缩远程节点上的文件

要指定远程源系统,请使用该remote_src=yes 选项。

---- hosts: webservers  tasks:     - name: Uncompress /tmp/web.bz2 to /opt on remote host    unarchive:      src: /tmp/web.bz2      dest: /opt/      remote_src=yes

上面的剧本将远程节点上的文件/tmp/web.bz2解压缩到/opt/目录。

5.使用Ansible安排任务

cron模块有助于安排Ansible Playbooks中的任务。

创立计划任务

---- hosts: webservers  tasks:  - name: Create a scheduled task    cron:      name: Run employee attendance      job: sh /opt/scripts/attendance.sh      month: 4      day: 5      hour: 17      minute: 00

该剧本将于4月5日下午5:00运行attendance.sh脚本。

在特定日期安排脚本

假如要安排仅在4月5日是星期一的情况下运行此脚本,请使用weekday:1属性。根据cron表示法,0表示星期日,6表示星期六。

month: 4day: 5hour: 17minute: 00weekday: 1

按日期运行作业

这些字段中的任何星号(*)表示任何值。

要在4月5日下午5:00进行工作,无论工作日是星期几,请使用所示的时间参数。

month: 4day: 5hours: 17minute: 00weekday: *

每个月的特定日期执行工作

要在每月的第5天下午5:00执行cron作业,请使用以下设置。

month: *day: 5hour: 17minute: 00weekday: *

每天执行工作

要每天下午5:00执行cron作业,请设置时间设置,如下所示:

month: *day: *hour: 17minute: 00weekday: *

每5小时执行一次工作

要每5小时执行一次cron作业,请使用*/5所示的步长值。

month: *day: *hour: */5minute: *weekday: *

6.使用Ansible管理客户和组

你还可以轻松管理Ansible剧本中的客户和组。

创立一个新客户

要创立新客户,请使用如下所示的客户模块。

---- hosts: webservers  tasks:  - name: Create a new user    user:      name: Jack

你还可以增加其余选项,例如UID,组。

- name: Create a new user  user:    name:Jack    comment: Jack Peters    uid: 1002    group: administrators    shell: /bin/bash

删除客户

要删除客户,请使用以下remove: yes语句。

- name: Remove the user 'Jack'  user:    name: Jack    state: absent    remove: yes

创立一个新组

要创立新组,请使用group模块。

- name: Create a group  group:    name: developers

7.使用Ansible创立文件和目录

要创立目录文件,请使用file模块。

创立一个新目录

例如,创立一个新目录。

---- hosts: webservers  tasks:  - name: Create a new directory    file:      path: /opt/app      state: directory

你可以增加其余属性,例如所有者,组和文件权限。

---- hosts: webservers  tasks:  - name: Create a new directory    file:      path: /opt/web      state: directory      owner: www-data      group: www-data      mode: 0644

此外,你可以使用recurse:yes语句来递归创立目录。

---- hosts: webservers  tasks:   - name: Create directory recursively    file:      path: /opt/web/app      state: directory      owner: www-data      group: www-data      mode: 0644      recurse: yes

创立一个文件

要创立文件,请使用state: touch选项。

---- hosts: webservers  tasks:  - name: Create a new file    file:      path: /opt/web/index.html     state: touch     owner: www-data     group: www-data     mode: 0644

8.使用Ansible管理存储

lvg模块用于配置LVM卷和组。

创立一个LVM卷组

使用以下剧本:

---- hosts: webservers  tasks:    - name: Create LVM volume group    lvg:      vg: vg1      pvs: /dev/sda1      pesize: 32

这将在/dev/sda1分区上创立物理盘区大小为32 MB的卷组。

创立后,使用lvol模块创立逻辑卷,如下所示:

---- hosts: webservers  tasks:    - name: Create LVM volume    lvol:      vg: vg1      lv: lvol1      pvs: /dev/sda1

9.使用Ansible管理文件系统

要在块设施上创立文件系统,请使用filesystem模块。

创立一个文件系统

下面的剧本在块卷上创立xfs的文件系统类型。

---- hosts: webservers  tasks:    - name: Create a filesystem    filesystem:      fstype: xfs      dev: /dev/vg1/lvol1

挂载文件系统

接下来,你可以使用mount模块继续挂载卷,如以下剧本所示:

---- hosts: webservers  tasks:    - name: Mount a filesystem    mount:      fstype: xfs      src: /dev/vg1/lvol1      path: /opt/web      state: mounted

总结

在本主题中,我们详情了Ansible Playbooks中特定的内置模块可以完成的各种系统管理任务。

PS:本文来自翻译,文中内容有所改动,并非原文所译。
原文链接:https://www.tecmint.com/linux-system-administration-tasks-with-ansible

扫码关注

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 如何将Ansible模块用于系统管理任务(6)

发表回复