自动化运维
配置
自动化运维使用的工具是ansible可以同时管理多台服务器并且进行分组管理
安装配置
首先安装ansible 然后对要管理的服务器进行面密ssh,然后写配置文件
在家目录下建立ansible文件夹,该文件夹为工作目录ansible的命令应当在工作目录内执行,编辑两个文件
文件1 ansible.cfg
[defaults]
host_key_checking = false # 不检查主机密钥,=号两边空格可有可无。
inventory = inventory # 定义主机清单文件为当前目录的inventory
# 创建主机清单文件。写在[]里的是组名,[]下面的是组内的主机名
文件2 名称由上面的inventory决定
[webservers]
web[1:2] # web1和web2的简化写法,表示从1到2
[dbs]
db1
# cluster是组名,自定义的;:children是固定写法,表示下面的组名是cluster的子组。
[cluster:children]
webservers
dbs
# 查看被管理的所有的主机。注意,一定在工作目录下执行命令。
[root@server ansible]# ansible all --list-hosts
hosts (3):
web1
web2
db1
建立完成后即可使用
ansible webservers --list-hosts # 查看webservers组中所有的主机
ansible管理
ansible 主机或组列表 -m 模块 -a "参数" # -a是可选的
ansible进行远程管理的两个方法:
- adhoc临时命令。就是在命令行上执行管理命令。
- playbook剧本。把管理任务用特定格式写到文件中。
无论哪种方式,都是通过模块加参数进行管理。
ansible模块
在命令中又来完成某项功能,使用时将模块名加在-m后即可
# 列出全部可用模块,按空格键向下翻页,按q退出
[root@server ansible]# ansible-doc -l
# 列出模块数量
[root@server ansible]# ansible-doc -l | wc -l # 如有WARNING提示,可忽略
7214
# 查看包含yum的模块名
[root@server ansible]# ansible-doc -l | grep yum
# 查看yum模块的帮助文档,按空格键向下翻页,按q退出
[root@server ansible]# ansible-doc yum
- command模块
ansible默认模块用于执行命令不支持shell、管道、重定向。
- shell模块
与command模块类似,但是支持shell特性,如管道、重定向。
-
ping
检测是否可以远程管理服务器
-
script模块
远程在主机上执行脚本,可以将脚本传送到远程机器的临时目录执行完成后清除。
- file模块
以创建文件、目录、链接等,还可以修改权限、属性等
常用的选项:
path:指定文件路径
owner:设置文件所有者
group:设置文件所属组
state:状态。touch表示创建文件,directory表示创建目录,link 表示创建软链接,absent表示删除
mode:设置权限
src:source的简写,源
dest:destination的简写,目标
-
copy
用于将文件从控制端拷贝到被控端
常用选项:
src:源。控制端的文件路径
dest:目标。被控制端的文件路径
content:内容。需要写到文件中的内容
-
fetch
与copy模块相反,copy是上传,fetch是下载
-
user
创建用户
-
group
创建组