环境
ansible服务器: 122.*.*.62 (centos7)
服务器1:119.*.*.35 (centos7)
安装ansible
python版本需要2.6以上,不过通过centos7都会默认安装上python2.7.5,查看方法:python -V
添加yum源
vim /etc/yum.repos.d/ansible
添加如下内容
[epel]
name = all source for ansible
baseurl = https://mirrors.aliyun.com/epel/7/x86_64/
enabled = 1
gpgcheck = 0
[ansible]
name = all source for ansible
baseurl = http://mirrors.aliyun.com/centos/7.3.1611/os/x86_64/
enabled = 1
gpgcheck = 0
执行yum刷新,然后安装
yum clean all
yum install ansible -y
配置ansible
在ansible服务器上执行
ssh-keygen #一直回车,直到成功
ssh-copy-id root@119.\*.\*.35 #然后输入连接密码即可实现无密码访问,如果有其他服务器,一样的设置方式,
注意:
有的服务器会修改登录端口号,那上面的语句可以改成如下,加入端口号
ssh-copy-id -p 17725 root@119.\*.\*.35
如果访问还是不行,提示如下
修改ansible服务器中的ssh配置 /etc/ssh/ssh_config,在最后面加入如下
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
修改好配置后,重新启动sshd服务即可。
centos7重启ssh服务命令为
systemctl restart sshd.service
重新执行上面的命令,如下,表示成功
这时ansible和服务器1的authorize_keys 里面的key会相同
重启ssh
systemctl restart sshd.service
配置ansible host文件
vim /etc/ansible/hosts
gaohua ansible_ssh_host=119.29.* ansible_ssh_user="root" ansible_ssh_pass="11111" ansible_ssh_port=17725
如下配置,
因为服务器1修改了默认端口号22,这里则需要配置port,否则不用配置
如果是多台服务器位于同一个分组,则在对应的 [group1]加多行的服务器ip即可
测试
我现在把ansible中的/www/test.php 复制到对应服务器中 /www目录中,执行如下命令
ansible group1 -m copy -a "src=/www/test.php dest=/www"
或者用这个来测试
ansible all -m ping
到此说明ansible已经搭建成功,可以正常使用了
基本命令
1、执行远程的/www目录中的 clear.sh文件
ansible group -m shell -a "sh /www/clear.sh chdir=/www"
2、上传ssh文件到远程服务器,并赋予可执行权限
ansible group -m copy -a "src=/www/clear.sh dest=/www mode=0755"
3、添加计划任务到远程crontab中
每天0时0分执行 /www/mysqlback.sh脚本
ansible group -m cron -a 'name=mysql_back minute=0 hour=0 job="/www/mysqlback.sh &>/dev/null"'