ansible的安装配置及使用

ansible的安装和配置

一、安装

apt-get install ansible

二、配置密钥

ssh-keygen -t rsa

三、分发密钥

把连接的客户机ip填入/etc/ansible/hosts可以起多个组[group]

[all]
10.0.0.244

将公钥拷贝到管理主机中.ssh/authorized_keys文件中,实现免密码登录远程管理主机

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.200

四、ansible配置

##编辑配置文件
vim /etc/ansible/ansible.cfg

##1> 禁用每次执行ansbile命令检查ssh key host 
host_key_checking = False

##2> 开启日志记录 
log_path = /var/log/ansible.log

##3> ansible连接加速配置

[accelerate]
#accelerate_port = 5099
accelerate_port = 10000 
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0

# If set to yes, accelerate_multi_key will allow multiple
# private keys to be uploaded to it, though each user must
# have access to the system via SSH to add a new key. The default
# is "no".
accelerate_multi_key = yes

五、测试

ansible all -m ping

ansible的使用

ansible testhost -m command -a 'w' 
##这样就可以批量执行命令了。这里的testhost 为主机组名,-m后边是模块名字,-a后面是命令。当*然我们也可以直接写一个ip,针对某一台机器来执行命令。
##还有一个模块就是shell同样也可以实现
ansible testhost -m shell -a 'cat /etc/passwd|grep root'
##说明:command模块不支持shell的一些功能,所以需要用到shell模块。command能实现的功能,shell一定能实现。shell能实现的功能,command不一定能实现。

Ansible 拷贝文件或目录

 ansible client.wyp.com -m copy -a "src=/etc/ansible  dest=/tmp/ansibletest owner=root group=root mode=0755"

##注意:源目录会放到目标目录下面去,如果目标指定的目录不存在,它会自动创建。如果拷贝的是文件,dest指定的名字和源如果不同,并且它不是已经存在的目录,相当于拷贝过去后又重命名。但相反,如果desc是目标机器上已经存在的文件,则会覆盖该文件。

ansible testhost -m copy -a "src=/etc/passwd dest=/tmp/123/1.txt"

##这里的/tmp/123和源机器上的/etc/passwd是一致的,但如果目标机器上已经有/tmp/123目录,则会再/tmp/123目录下面建立passwd文件,如果没有/tmp/123目录,则报错。
##说明:ansibe copy模块有个特性,空目录是不会被同步过去的,只有目录下面有文件才会同步。比如说目录下有空目录,就不能同步这个空的子目录

Ansible远程执行脚本

##* 首先创建一个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 "

##说明:如果test.sh没有执行权限,可以用ansible testhost -m shell -a "/bin/sh /tmp/test.sh"来实现脚本的执行。

参考https://blog.csdn.net/xyang81/article/details/51568227
参考https://blog.51cto.com/llzdwyp/1761057

posted @ 2019-09-06 15:33  桀骜MrSan  阅读(352)  评论(0编辑  收藏  举报