源码安装:
下载安装包:
https://releases.ansible.com/ansible/
yum 安装
·安装epel:
wget https://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm
rpm -ivh epel-release-latest-6.noarch.rpm
yum repolist
·查看ansible信息:
yum info ansible
·安装
yum -y install ansible
查看版本
ansible --version
配置文件
/etc/ansible/ansible.cfg //主配置文件,配置ansible工作特性
/etc/ansible/hosts //主机清单
/etc/ansible/roles //存放角色的目录
程序
/usr/bin/ansible //主程序,临时命令执行工具
/usr/bin/ansible-doc //查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy //下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook //定制自动化任务,编排剧本工具/usr/bin/ansible-pull远程执行命令的工具
/usr/bin/ansible-vault //文件加密工具
/usr/bin/ansible-console //基于console界面与用户交互的执行工具
加清单
vim /etc/ansible/hosts
最后:
192.168.56.101
探测主机是否存活:
ansible 192.168.56.101 -m ping
报错:
192.168.56.101 | UNREACHABLE! =>
ansible 192.168.56.101 -m ping -k
输入口令
192.168.56.101 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
说明:
-k 表示输入口令,此方法只适合口令相同的主机
ansible all -m ping -k
说明:
all表示受控的所有主机
hosts文件还支持主机分组
例如:
vim /etc/ansible/hosts
[websrvs]
192.168.30.101
192.168.30.102
[dbsrvs]
192.168.30.101
192.168.30.103:2222
[appsrvs]
192.168.30.10[1:3]
ansible appsrvs -m ping -k
vim /etc/ansible/ansible.cfg
host_key_checking = False //检查对应服务器的host_key,建议取消注释
log_path = /var/log/ansible.log //建议启用日志
查看ansible帮助
ansible-doc -l //列出所有文档
ansible-doc ping
ansible-doc -s ping //简易模式查看帮助
ansible all --list //列出所有管理的主机
ansible all -m ping -u wang -k
说明:
-u 表示以什么用户登录
ansible all -m command -u root -k -a ‘ls /root’
说明:
-m command 可以省略
-a 表示执行的命令参数
ansible all -a ‘ls /root’ -u lx -k -b -K
SSH password:
SUDO password[defaults to SSH password]:
说明:
-b 表示sudo
-K 表示输入sudo的口令
报权限错误
是因为目标主机没有授权sudo命令,需要做如下设置
在受控主机上执行:
visudo
去掉注释
%wheel ALL=(ALL) ALL
把lx用户加入wheel组
usermod -aG wheel lx
ansible all -a ‘ls /root’ -u lx -k -b -K
如果不想输入sudo密码,将visudo中的如下行去注释
%wheel ALL=(ALL) NOPASSWD: ALL
ansible all -a ‘ls /root’ -u lx -k -b
以上方法都要输入密码,可以使用key验证方式,就不用输入密码了
方法如下:
在ansible主机上执行:
ssh-keygen
ssh-copy-id 192.168.56.101
ansible all -a ‘ls /root’
常用模块
·command模块
ansible all -a ‘removes=/etc/fs cat /etc/fstab’
说明:
remove表示如果不存在/etc/fs文件,则跳过不执行cat /etc/fstab
ansible all -a ‘creates=/etc/fs cat /etc/fstab’
说明:
creates表示如果/etc/fs文件不存在,则执行cat /etc/fstab
ansible all -a ‘chdir=/boot ls’
说明:
chdir表示切换到哪个目录,在执行ls
ansible -a ‘/home/lx/f1.sh’
·shell模块
command对于管道符、变量等支持有问题,所以需要用shell代替
ansible -m shell -a ‘echo $HOSTNAME’
ansible -m shell -a ‘echo 123 | passwd --stdin lx’
·script模块
ansible all -m script -a ‘/home/lx/f1.sh’
说明:
/home/lx/f1.sh这个脚本是ansible所在主机的脚本,不是受控端主机的脚本
·copy模块
关闭selinux
getenforce
Enforcing
cp /etc/sysconfig/selinux .
vim selinux
SELINUX=enforcing 改为:
SELINUX=disabled
将该文件上传到所有受控主机
ansible all -m copy -a ‘src=/home/lx/selinux dest=/etc/selinux/config backup=yes’
如果报错:
Aborting, target uses selinux but python bindings (libselinux-python) aren’t installed!
安装即可:
yum install libselinux-python -y