Ansible基础
Ansible是什麽?
简要来说,是一款自动化运维工具。假如有一百台服务器安装nginx,一台一台装累死,这里就可以用ansible批量安装部署,你想删除你们公司所有Linux服务器的 / ,建议用Ansible,批量删除,从运维小白到监狱风云,一步之遥,就用Ansible。
配置文件hosts
server:192.168.28.31
client:192.168.28.30
ansible最简单的使用是在Linux命令行中使用,我要测试ansible与被管理的客户端联通性:
[root@localhost ansible]# ansible webs -m ping 192.168.28.30 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
如果出现绿绿的就代表服务端和客户端可以联通并且模块命令正常执行,但是如果是最下面红色的,就表示没有连接通,并且报错。
在上面这个例子我用的最简单的模块ping,但在使用模块执行命令的时候也是需要配置ansible的一个文件的。
上图,文件名为hosts,位置/etc/ansible/hosts(二进制安装)
ansible只能管理那些它明确了解的服务器,你只需要在Inventory文件中指定服务器的信息就可以将这些信息提供给ansible。
vim /etc/ansible/hosts
[webs] #组名webs,可以将你要管理的服务器写在下面
192.168.0.101 #组中的一台主机
192.168.28.30
可以分很多组来管理
============================================
也可以这样写配置:192.168.28.30 ansible_ssh_user=root ansible_ssh_pass=woshuai
解释
#ansible_ssh_user=root 是ssh登陆用户
#ansible_ssh_pass=redhat 是ssh登陆密码
这两个可以不写在配置文件中,默认就是使用root执行,可以通过-k选项指定提示输入密码,下面有例子
注:除了账号密码之外,可以使用sshkey的方式免密码执行操作。
使用sshkey的方式免密码执行:
]# ssh-copy-id -i .ssh/id_rsa.pub 192.168.28.30
root@172.16.254.200's password:
-i:后面写要传给对方的文件的路径
模块
ping:可以测试远程主机的连通性
command: 远程执行命令
copy:拷贝文件到远程主机
cron:添加计划任务
file:设置文件的属性、创建、删除文件、目录、链接文件等
shell:可以执行命令或写好的shell脚本
script:执行本地脚本(即脚本在ansible上的意思,未来得及测试)
setup:收集远程主机信息
group:管理组
user:管理用户
yum:安装、升级、卸载及列出yum包管理器管理的软件包
service:管理服务
get_url:下载文件