安装
yum install epel-release -y
yum install ansible –y
添加主机
vim /etc/ansible/hosts
[caigou]
172.255.255.255 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='yRCDQJ3Tjy'
ansible_ssh_host # 远程主机
ansible_ssh_port # 指定远程主机ssh端口
ansible_ssh_user # ssh连接远程主机的用户,默认root
ansible_ssh_pass # 连接远程主机使用的密码,在文件中明文,建议使用–ask-pass或者使用SSH keys
ansible_sudo_pass # sudo密码, 建议使用–ask-sudo-pass
ansible_connection # 指定连接类型: local, ssh, paramiko
ansible_ssh_private_key_file # ssh 连接使用的私钥
ansible_shell_type # 指定连接对端的shell类型, 默认sh,支持csh,fish
ansible_python_interpreter # 指定对端使用的python编译器的路径
ansible命令常用参数
HOST-PATTERN #匹配主机模式,如all表示所有主机
-m :模块名 如:ping
-a ;模块执行的参数
-f :生成几个子进行程执行
-C :(不执行,模拟跑)
-u :Username #某主机的用户名
-c :连接方式(default smart)
-i :filename 指定hosts文件 默认为etc/ansible/hosts
-u :ssh连接的用户名,默认root
-k :提示输入ssh登录密码。当使用密码验证的时候用
-s : sudo运行
-U :sudo到那个用户,默认为root
-i :指定hosts文件路径,默认default=/etc/ansible/hosts
-I :指定pattern,对<host_pattern>已匹配的主机中再过滤一次
-M :要执行的模块路径,默认为/usr/share/ansible
-o:压缩输出,摘要输出
–private-key :私钥路径
检查连接状态:
ansible all -m ping
批量执行命令:
ansible all -a "df -h"
新建文件夹:
ansible all -a "mkdir /data"
磁盘卸载:
ansible all -a "umount /data1"
磁盘挂载:
ansible all -a "mount /dev/vdb1 /data"
执行shell
首先创建一个shell脚本
vim /tmp/test.sh //加入内容
#!/bin/bash
echo `date` > /tmp/ansible_test.txt
然后把该脚本分发到各个机器上
ansible testhost -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"
最后是批量执行该shell脚本
ansible testhost -m shell -a "/tmp/test.sh"
shell模块,还支持远程执行命令并且带管道
ansible testhost -m shell -a "cat /etc/passwd|wc -l "
Host Key checking错误解决方案
修改配置文件 vi /etc/ansible/ansible.cfg,将如下行注释取消
host_key_checking = False