如何将Ansible模块用于系统管理任务(6)
在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: disabled4.使用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: developers7.使用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: 06448.使用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/sda19.使用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)