在Ansible中编写剧本成功批量主机安保加固
在<< 初步应用Ansible成功批量主机智能化治理 >>文章中, 我初步成功了经过编写清单和剧原本成功多台主机的智能化治理,在本章节中, 我将应用Ansible的剧原本成功更适用、更复杂一点的性能, 关键性能包括三个:
1.编写剧本
假设只讲原理,没有通常, 学习起来会比拟单调, 所以我会在编写剧本的环节中边通常边解说剧本的语法。
在 上篇文章 中, 咱们曾经知道剧本是一个YAML格局文件, 在扫尾,咱们要加载一切的远程治理hosts,语法如下:
- hosts: all
还记得在上一章编写的清单文件inventory.yaml吗,看看外面的内容:
hosts: all自动会加载这里的一切IP地址, 紧随其后的命令是:
become: yes
该命令在Ansible中示意提权口头。
自动状况下,Ansible是以普通用户身份经过SSH衔接到远程主机的。但有些义务须要 root 或 sudo 权限,比如服务的重启,文件权限的修正等。这时就须要经常使用become模块提权, 加上become:yes示意这个剧本中的一切义务都须要提权口头。Ansible会在口头义务时智能切换到root身份或指标用户身份,而后口头指定的义务。
become模块十分弱小,可以精细控制在剧本中的提权行为,包括:
-以哪个身份提权(自动root,可以指定其余用户)-提权经常使用的方法(sudo、su等)-提权的明码-仅在某些义务中提权
紧接着就是编写咱们的义务了, 为了繁难引见, 我先给出一个完整的服务剧本,如图:
- hosts: allbecome: yestasks:- name: 修正SSH端口lineinfile:path: /etc/ssh/sshd_configregexp: '^Port'line: 'Port 2222'- name: 自动开启防火墙ufw:state: enabled- name: 在防火墙中开启2222端口ufw:rule: allowport: '2222'- name: 防火墙拒绝其它端口衔接ufw:rule: denydirection: indelete: yes- name: 准许指定的IP访问ufw:rule: allowsrc: 192.168.201.202- name: 拒绝一切其它IP访问ufw:rule: denysrc: 0.0.0.0/0- name: 重启ufw防火墙service:name: ufwstate: restarted- name: 重启SSH服务service:name: sshdstate: restarted
可以看出, 义务tasks标签上方有8个子项, 每个子项都有一个name, 这个name示意每个子义务的名字, 繁难咱们辨别子义务。
子义务1: 修正SSH端口
该义务经常使用了lineinfile模块, 目的是在门路/etc/ssh/sshd_config文件中按行搜查, 经过正则regexp婚配Port, 而后将其修正为2222端口。
咱们可以关上/etc/ssh/sshd_config文件看一下, 查找到该项:
在ubuntu系统中, Port普通在ssd_config文件的最后一行。
子义务2:自动开启防火墙
关于ubuntu系统来说,防火墙经常使用的是ufw, 这里将形态state一直置为:enabled, 由于大局部刚装完的系统自动没有开启ufw,因此这里须要提早设置形态, 否则会造成前面操作ufw不成功。
子义务3: 在防火墙中开启2222端口
在该义务中,咱们将之前修正的SSH服务的2222端口参与到防火墙中, 准许外界经过2222端口访问本机。
子义务4:防火墙拒绝其它端口衔接
在该义务中, 咱们关键设置了拒绝规定, 在防火墙中,除了2222端口之外的其它一切端口所有删除屏蔽掉。
子义务5:准许指定的IP访问
与上方的端口相反,这里设置只准许某一个IP访问本机,这里是只准许192.168.201.202主机访问。
子义务6:拒绝一切其它IP访问
同上方端口的拒绝规定, 拒绝除192.168.201.202的其它IP地址访问。
子义务7:重启ufw防火墙
这里关键经常使用restarted重启ufo防火墙,留意,这里不能用reload, 或者会造成防火墙重启失败, 用restart比拟稳当。
子义务8:重启SSH服务
经过设置restarted形态重启SSH服务
2.多义务同步口头
编写完剧本内容之后, 输入以下命令口头即可:
# ansible-playbook -i inventory.yaml playbook.yaml
假设不出异常, 会看到以下口头结果:
假设在口头环节中产生失误, 会看到很醒目的揭示,并给进口头形态, 如图:
3.结果验证
首先咱们看一下端口修正状况, 发现曾经所有将SSH端口修正为2222端口,并可以所有以2222端口登录, 如图:
接着咱们看一下IP限度状况, 上方登录的所有是在192.168.201.202机器上登录,而在我团体电脑上登录却失败,如图:
咱们登录到三台机器上看一下防火墙规定, 曾经依照剧本要求参与了对应规定,如图: