参数用途
ansible -i /home/admin/hosts
-i 指定本地的hosts主机清单文件
如果不使用 -i 指定hosts 默认会去用 /etc/ansible/hosts清单文件
ansible -f 10
-f 指的是并发数,表示同时返回10台受控主机命令的结果 需要根据实际情况调整参数值提高ansible执行命令的并发度
ansible -m yum -a "name=httpd state=latest"
-m 指定调用的ansible模块
-a 表示给调用的模块传递的参数
主机别名
[webserver]
nginx 192.168.1.1
mysql 192.168.1.2
ansible以别名的方式来对受控端进行区分,IP地址太多的时候分不清各个IP的用途
ansible模块解释
命令模块
command shell 模块本质上执行的都是基础命令 默认是执行command模块
command模块 不支持管道类型的命令
shell模块 支持管道shell命令
理论上ansible -m shell 可以执行任何远程命令操作,但是多次调用ansible -m shell命令的时候,ansible并不会判断是否重复在执行.而其他模块是可以先判断是否在重复操作。
安装模块
yum模块
state字段
absent 移除卸载指定包
present 正常安装包
latest 安装最新版本的包
配置模块
copy模块
受控端主机必须存在相应的目录和文件,并且可以设置相应的文件权限和属主和属组.
1.把控制端的一个被修改的文件推送到所有被控端的主机上
ansible appserver -m copy -a "src=/home/admin/a.conf dest=/etc/a.conf owner=root group=root mode=777 backup=yes"
2.copy模块写入内容到远程主机的一个文件中
ansible appserver -m copy -a "content=helloword dest=/etc/a.conf"
file模块
file模块和copy模块最大的不同是,copy模块只能拷贝和创建文件.file模块是为了创建和递归授权远程目录,而不是拷贝文件
ansible apperserver -m file -a "path=/etc/ owner=admin group=admin mode=777 recurse=yes"
state字段
touch 表示创建一个新文件
directory 表示创建一个新的目录
get_url模块
从网络上下载对应的文件下载到被控端的主机上
ansible appserver -m get_url -a "url=http://www.baidu/index.html dest=/etc/index.html checksum=md5:7be4568"
url参数可以使用http,https,ftp等协议
checksum参数可以检查网络文件是否被修改过
服务管理模块
service模块
ansible appserver -m service -a "name=httpd state=started enabled=yes"
用户管理模块
user模块
创建和删除用户
group模块
创建和删除用户组
定时任务模块
挂载模块
mount
防火墙模块
selinux
firewalld
ansible使用普通用户执行命令
1.如果ansible控制机拷贝的公钥到受控端主机上是普通用户的公钥,那么执行在主控端执行ansible命令的时候也一定要用对应的普通用户,用root执行ansible命令都不行
2.使用普通用户执行ansible命令的时候有些情况需要用到root权限
3.visudo 设置无密码配置需要在被控端主机配置修改
1:vim /etc/ansible/ansible.cfg,开启如下选项 [privilege_escalation] ##这一部分为提升权限的参数,如果使用普通用户需要开启 become=True become_method=sudo become_user=root become_ask_pass=False 2:sudo visudo admin ALL=(ALL) NOPASSWD:ALL ##无密码登陆