ansible自动化运维
1、实现远程连接主机
2、批量配置,批量操作,ansible可以对主机进行组划分,也可以把名下所有的主机进行划分,进行批量的操作。
3、远程自动化运维(脚本-------------playbook剧本)
ansible是基于python语言开发的,配置管理和部署应用的工具。
批量的配置,部署,管理“上千台”主机。
ansible只要在一台主机上就可以对其他主机进行操作。
4、ansible的工作模式:没有固定的客户端这一说法,不是c/s。
使用模块来进行工作,ansible的模块有很多,copy shell 真正的目标主机上执行任务的是模块。
5、ansible的特性:
幂等性,计算机中的概念,在幂等操作中,无论执行多少次,结果都是一样的,多次执行相同的操作,不会产生不同的结果。
在ansible中,如果你的操作是符合幂等性,那么不会对目标主机产生额外的副作用。
6、ansible的组件:
1、lnventory 主机清单 主机组
2、modules 模块----------学习的重点
3、plugins 插件
4、playbooks 剧本(脚本) ----------重点
ansible的优点:
部署快,只要能上网,或者有源码包,安装部署很简单
基于yaml格式编写的脚本
同一台服务器上多次执行同一个任务没有任何副作用
缺点:
语法要专门学
主机和目标主机必须都是linux,主机和server
命令格式:
ansible all -m command -a 'date'
ansible 固定开头
all:<组名,ip,all,>声明操作的对象
-m 指定模块
command 就是模块名
-a 指定参数(指定操作)
“date”:具体要执行的命令
1、command模块
就是在目标主机执行命令,不支持管道符,也不能使用重定向
chdir=/opt 声明目标主机的目录
creates:判断指定的文件是否存在,如果存在,不执行后续的操作
removes:判断指定的文件是否存在,如果存在,执行后续的操作
2、shell模块
就是command模块的升级,但是可以使用管道符,可以重定向还可以使用连接符链接多个命令。
&&逻辑且,所有的命令必须执行成功才算完成
;逻辑或,失败一个任务不影响全局的执行
3、cron模块
分/时/日/月/周
minute/hour/day/month/weekday
-m cron
name 计划任务的名称
job: 计划的执行的命令
stat:present 表示添加,默认就是添加可以不写
absent 表示移除
删除定时任务
4、user和group
-m user
-m group
name 用户名或者组名 必有参数
state=present | absent
创建 删除
uid
gid
shell:默认就是/nin/bash
create_home yes | no 是否替换用户的家目录
remove=yes | no 删除用户时是否删除家目录
password 创建用户的登入密码
system yes | no 表示该用户是否是系统用户
创建用户
修改家目录
删除用户
创建组
删除组
5、copy复制
dest: 文件复制到目标主机的位置
src:源文件,主机的文件------------》目标主机
如果复制目录,源文件是目录,那么目标主机的路径也是目录
mode:修改目标文件权限
owner:文件的所有者
group:文件的所在组
content:复制输出的内容到目标主机,使用content就不能使用src
复制配置文件到目标主机
将内容重定向追加到目标主机
复制目录
剪切
6、file模块----和copy有相似之处
owner 所有者
group 所在组
mode 权限
path----------->目标主机的文件路径
state------->link作为软连接 touch 创建 absent 删除
src-------------->指定创建的文件为软连接
7、hostname 设置目标主机的主机名
8、ping 测试目标主机的连通性
9、yum/apt 模块 安装和卸载
10、service模块。
也可以用command或者shell模块-----systemctl 对服务状态进行控制
name=软件名
enabled=true---- 开机自启
state=started stopped restarted 开 停 重启
runlevel=40 设定开机自启动的运行级别。数字越大,级别越高
重启
开机自启
11、iptables------ubuntu和centos
firewalld ------- centos
对端口进行放行和删除策略
ubuntu
centos
放行
删除
12、script模块
指定本地的脚本,然后脚本中的命令在目标主机执行,结果也是输出到目标主机。
13、setup模块 收集节点信息,查看目标主机的配置信息
通过facts组件收集
查看内核
查看系统
可以不用设置免密登入
[defaults]
host_key_checking = False #禁止使用ssh的密钥检查
inventory = /etc/ansible/hosts #指定主机清单的文件
forks = 20 #同时可以对多少主机进行配置,默认是5,可以提高执行的速度
pipelining = True #减少对ssh会话中的操作,提高性能
strategy = free #任务会立即对下一个主机并行执行,不用等待其他主机完成
retry_files_enabled = False #如果任务失败,禁用自动重试的功能
指定ip范围
ansible实操
test1 ansible
test2 目标主机1
test3 目标主机2
test1
安装ansible
apt -y install ansible
设置免密登入
提取出ip地址